我正在尝试指定要部署到哪些服务器。我的剧本宣言如下:
---
-
hosts: qa
然后我有一个主机文件,与playbook在同一目录中。
[localhost]
localhost ansible_connection=local
[qa]
qa1 ansible_ssh_host=52.0.0.1 ansible_ssh_port=22
qa2 ansible_ssh_host=52.0.0.2 ansible_ssh_port=22
我目前正在运行我的剧本:ansible-playbook -i hosts playbook.yml --ask-vault-pass -e build_number=205
但是这种方法要求我每次都要更改playbook以部署到localhost。我尝试将hosts: qa
更改为hosts: {{ hosts }}
,然后传递hosts = qa或hosts = localhost,但我无法将其工作。
有什么想法吗?
答案 0 :(得分:1)
我自己找到了答案:
---
-
hosts: all
然后当您从命令行运行时,您可以添加参数:--limit localhost
或limit=qa
答案 1 :(得分:0)
将您的剧本改为:
---
-
hosts: {{ hosts }}
使用额外的变量运行命令
ansible-playbook -i hosts playbook.yml --extra-vars "hosts=localhost build_number=205" --ask-vault-pass
对于环境变量,您的剧本应如下所示:
---
-
hosts: {{ lookup('env','ANSIBLE_HOSTS') }}
使用localhost
为export ANSIBLE_HOSTS=localhost
指定。
要仅为一个命令使用变量(使用环境变量中的playbook),请键入以下命令:
ANSIBLE_HOSTS=localhost ansible-playbook -i hosts playbook.yml --ask-vault-pass -e build_number=205