从Ansible Playbook访问元组子级中的主机

从Ansible Playbook访问元组子级中的主机,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我正在尝试整理我的inventory.yaml文件,按组排列主机,然后在Ansible playbook中调用它们 inventory.yaml文件如下所示: --- all: hosts: children: MY_Lab: Ubuntu_18: hosts: BWT_BKP_A: ansible_host: "10.2.8.19" BW

我正在尝试整理我的inventory.yaml文件,按组排列主机,然后在Ansible playbook中调用它们

inventory.yaml文件如下所示:

---
all:
  hosts:
    children:
      MY_Lab:
        Ubuntu_18:
          hosts:
            BWT_BKP_A:
              ansible_host: "10.2.8.19"

            BWT_BKP_B:
              ansible_host: "10.2.8.22"

            BWT_BKP_C:
              ansible_host: "10.2.9.12"
        vars:
          ansible_connection: ssh
          ansible_user: administrator
          ansible_ssh_pass: P@ssword
          ansible_sudo_pass: P@ssword
在我的Ansible playbook中,我想访问Ubuntu_18部分的主机,但我不能:

name: Test connectivity
  hosts: BWT_BKP_A
  vars:
   ansible_python_interpreter: /usr/bin/python3
  tasks:
    - name: Ping test
      ping:
我得到以下错误:

 ansible-playbook ping-test.yaml -i inventory.yaml
[WARNING]: Could not match supplied host pattern, ignoring: BWT_BKP_A

PLAY [Test connectivity] *****************************************************************************************************
skipping: no hosts matched
如果我尝试整个团队,比如:

hosts: Ubuntu_18
我也犯了同样的错误


不知道我错过了什么。我使用的是ansible 2.9.12

您的库存文件中有一个错误。
子项
键应该是
主机的对等项,而不是子项,每次尝试创建“子组”时,都需要另一个
子项:

将其用作我的测试清单:

---
all:
  children:
    MY_Lab:
      children:
        Ubuntu_18:
          hosts:
            BWT_BKP_A:
              ansible_host: "127.0.0.1"

            BWT_BKP_B:
              ansible_host: "127.0.0.1"

            BWT_BKP_C:
              ansible_host: "127.0.0.1"
我可以跑:

$ ansible -i hosts.yml -m ping MY_Lab
BWT_BKP_B | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
BWT_BKP_A | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
BWT_BKP_C | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
或:


等等。

谢谢拉尔克斯。这解决了问题!
$ ansible -i hosts.yml -m ping BWT_BKP_A
BWT_BKP_A | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}