Ansible - 指定主机或主机组

时间:2015-10-27 10:32:54

标签: ansible ansible-playbook

我正在尝试指定要部署到哪些服务器。我的剧本宣言如下:

--- 
- 
  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,但我无法将其工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我自己找到了答案:

--- 
- 
  hosts: all

然后当您从命令行运行时,您可以添加参数:--limit localhostlimit=qa

答案 1 :(得分:0)

Ansible变量

将您的剧本改为:

---
-
 hosts: {{ hosts }}

使用额外的变量运行命令

ansible-playbook -i hosts playbook.yml --extra-vars "hosts=localhost build_number=205" --ask-vault-pass 

Source

环境变量

对于环境变量,您的剧本应如下所示:

---
-
 hosts: {{ lookup('env','ANSIBLE_HOSTS') }}

使用localhostexport ANSIBLE_HOSTS=localhost指定。

Shell变量

要仅为一个命令使用变量(使用环境变量中的playbook),请键入以下命令:

ANSIBLE_HOSTS=localhost ansible-playbook -i hosts playbook.yml --ask-vault-pass -e build_number=205