我想在Python中运行Ansible,而不是通过(ANSIBLE_HOST)指定清单文件,而只是通过以下方式运行:
ansible.run.Runner(
module_name='ping',
host='www.google.com'
)
我实际上可以很容易地在fabric中做到这一点,但我只是想知道如何在Python中做到这一点。另一方面,Ansible API for python的文档并不是真正完整的。
发布于 2013-08-15 22:48:10
令人惊讶的是,诀窍是附加一个,
# Host and IP address
ansible all -i example.com,
ansible all -i 93.184.216.119,
或
# Requires 'hosts: all' in your playbook
ansible-playbook -i example.com, playbook.yml
,
之前的主机参数可以是主机名或IPv4/v6地址。
发布于 2015-03-28 17:07:56
我知道这个问题真的很老了,但我认为这个小技巧可能会对需要帮助的未来用户有所帮助:
ansible-playbook -i 10.254.3.133, site.yml
如果您针对本地主机运行:
ansible-playbook -i localhost, --connection=local site.yml
诀窍是,在ip地址/dns名称之后,将逗号放在引号中,并要求在您的剧本中使用'hosts: all
‘。
希望这能有所帮助。
发布于 2019-06-13 09:21:21
在我的例子中,我不希望在我的攻略中包含hosts: all
,因为如果有人运行攻略而忘记包括-i 10.254.3.133,
,那将是非常糟糕的
这是我的解决方案(ansible 2.6):
$ ansible-playbook myplaybook.yml -e "{target: 10.1.1.1}" -i 10.1.1.1, ...
然后,在攻略中:
- hosts: "{{ target }}"
remote_user: donn
vars_files:
- myvars
roles:
- myrole
这是一个特殊的用例,当我需要配置一个主机,并且我不想/需要将它添加到清单中时。
https://stackoverflow.com/questions/17188147
复制相似问题