Make Ansible包含的剧本与它们的父母在相同的主机上运行

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:

Hello,让一个包含的剧本在同一主机上运行的最好方法是什么? 我曾尝试在父playbook中用主机名声明一个变量,然后将其传递给包含的playbook,但我收到一个错误,告诉我该变量未定义

下面是我的剧本:

--- 
  # 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"]}'

酷,它工作了!谢谢它还解决了我的下一个问题——如何通过命令行传递变量。