Ansible-指定主机或主机组

Ansible-指定主机或主机组,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在尝试指定要部署到的服务器。我的剧本宣言如下所示: --- - hosts: qa --- - hosts: {{ lookup('env','ANSIBLE_HOSTS') }} 然后我有一个hosts文件,它与playbook位于同一目录中 [localhost] localhost ansible_connection=local [qa] qa1 ansible_ssh_host=52.0.0.1 ansible_ssh_port=22

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

--- 
- 
  hosts: qa
---
-
 hosts: {{ lookup('env','ANSIBLE_HOSTS') }}
然后我有一个hosts文件,它与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-询问保险库通行证-e build\u number=205

但是,此方法要求我每次都更改playbook以部署到localhost。我尝试将
hosts:qa
更改为
hosts:{{{hosts}}
然后传递hosts=qa或hosts=localhost,但无法使其工作

有什么想法吗?

Ansible variables 将您的剧本更改为:

---
-
 hosts: {{ hosts }}
并使用额外的变量运行命令

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

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

--- 
- 
  hosts: qa
---
-
 hosts: {{ lookup('env','ANSIBLE_HOSTS') }}
使用导出ANSIBLE\u HOSTS=localhost为
localhost
指定它

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

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

我自己找到了答案:

--- 
- 
  hosts: all

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

,这并不能解决全部问题。我希望能够从命令行更改服务器组。e、 g.ansible playbook-i hosts/qa playbook.yml--询问vault pass-e build_number=205或类似问题谢谢,有没有办法避免环境变量?我找到了我希望的答案
--限制本地主机
--限制qa
将其作为其他人的答案:)