【发布时间】:2017-06-04 19:10:33
【问题描述】:
当我以这种方式运行剧本runrole.yml 时:
ansible-playbook -i '192.168.0.7,' runrole.yml -e "ROLE=allwindows" -e "TARGETIP=192.168.0.7" -e "ansible_port=5986" --ask-vault-pass
runrole.yml 有:
- hosts: '{{TARGETIP}}'
roles:
- { role: '{{ROLE}}' }
它可以工作(即它针对 192.168.0.7 运行),但它失败了,因为我没有提供所有额外的参数
ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_connection: winrm
我希望 Ansible 使用在 group-vars/allwindows.yml 中定义的变量。
如果我将库存文件添加到组 [allwindows] 主机 192.168.0.7 中,它将起作用:
[allwindows]
host1
...
hostN
192.168.0.7
并使用:
ansible-playbook runrole.yml -e "ROLE=allwindows" -e "TARGETIP=192.168.0.7" -e "ansible_port=5986" --ask-vault-pass
它工作正常,因为它检测到192.168.0.7 属于一个组allwindows。
在某些情况下,我想在不接触库存文件的情况下对主机运行角色。如何指定包含allwindows 组以使用来自group_vars/allwindows.yml 的所有变量而不修改库存文件?
【问题讨论】:
-
有些步骤是不需要的。我必须创建一个文件,向其中添加一些内容,运行命令并删除该文件。如果我不删除该文件,我将不得不在提交到存储库时对其进行审查。理想情况下,我希望只运行一行而不执行所有这些额外步骤。
-
看看这个solution
-
@KonstantinSuvorov 我没有关于运行角色的问题。针对不在清单文件中的节点运行角色的问题。我相信你的解决方案会遇到同样的问题,因为它最终会在后台做同样的事情。