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
将其作为其他人的答案:)