Make Ansible包含的剧本与它们的父母在相同的主机上运行
Hello,让一个包含的剧本在同一主机上运行的最好方法是什么? 我曾尝试在父playbook中用主机名声明一个变量,然后将其传递给包含的playbook,但我收到一个错误,告诉我该变量未定义 下面是我的剧本:Make Ansible包含的剧本与它们的父母在相同的主机上运行,ansible,ansible-playbook,Ansible,Ansible Playbook,Hello,让一个包含的剧本在同一主机上运行的最好方法是什么? 我曾尝试在父playbook中用主机名声明一个变量,然后将其传递给包含的playbook,但我收到一个错误,告诉我该变量未定义 下面是我的剧本: --- # Main staging configuration playbook - vars: host_name: "stage_ansible" hosts: "{{ host_name }}" remote_user: ubuntu tasks:
---
# Main staging configuration playbook
- vars:
host_name: "stage_ansible"
hosts: "{{ host_name }}"
remote_user: ubuntu
tasks:
- name: test connection
ping:
remote_user: ubuntu
- include: NginxDefinitions.yml
vars:
service_name: "interaction.qmerce.com"
env_name: "stage4"
host_name_pass: "{{ host_name }}"
...
我收到的错误是:
`ERROR! 'host_name' is undefined
如果要定义主机运行时并避免在playbook上硬编码,可以传递主机 为此,请从第一个播放中删除
vars
定义,并将以下内容添加到ansible playbook
命令行:
--extra-vars host_name=localhost
或者当您有多台主机时:
--extra-vars '{"host_name":["host1","host2","host3"]}'
酷,它工作了!谢谢它还解决了我的下一个问题——如何通过命令行传递变量。