Ansible 添加主机的范围

Ansible 添加主机的范围,ansible,ansible-playbook,Ansible,Ansible Playbook,这是我正在尝试的剧本 --- # ansible/site.yml - hosts: localhost gather_facts: yes connection: local sudo: no roles: - ec2 - hosts: ec2hosts gather_facts: yes user: ubuntu roles: - supervisor 这是ec2角色的一部分 --- # ansible/roles/ec2/main.yml

这是我正在尝试的剧本

---
# ansible/site.yml

- hosts: localhost
  gather_facts: yes
  connection: local
  sudo: no
  roles:
    - ec2

- hosts: ec2hosts
  gather_facts: yes
  user: ubuntu
  roles:
    - supervisor
这是ec2角色的一部分

--- 
# ansible/roles/ec2/main.yml

# Provision EC2 instances
# ...
  register: ec2

- name: Add EC2 instances to host groups
  add_host: hostname={{ item.public_ip }} groups=ec2hosts
  with_items: ec2.instances
第一部分工作正常,主机似乎添加正确,但一旦进入下一个重头戏(在新创建的
ec2hosts
上安装supervisor),它会给我一个
跳过:没有匹配的主机

那么,为什么我的主要剧本不承认在第一部剧本中创建的主持人组呢

编辑:

主机文件。我是否需要在此处声明主机组以使其全局可访问?我尝试删除
[ec2hosts]
行,并在没有将其指定为清单文件的情况下运行

# inventory/hosts
[local]
localhost

[ec2hosts]
运行它:

ansible-playbook -i ansible/inventory/hosts ansible/site.yml -vvv    
相关输出:

...

TASK [ec2 : Add EC2 instances to host groups] ***************************

PLAY *******************************************************************
skipping: no hosts matched

PLAY RECAP **************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0 

看起来您的add_主机模块循环未运行。检查并确保ec2.instances变量已正确填充

您正在运行的ansible的哪个版本?开发分支,因此>2您正在执行的操作应该可以正常工作。您可以发布您是如何从命令行运行的吗?您的资源清册是否有现有的ec2hosts组?您可以发布使用-vvv运行的输出吗?看起来您的循环没有针对add_hosts模块运行。您能否验证ec2.instances是否包含实例列表?当我运行类似的操作,并且主机实际被添加时,add_hosts模块返回的事实显示哪些主机被添加。您是对的,带有
和\u项的东西:ec2.instances
不起作用,因为在该阶段没有发生任何事情。谢谢你给我指明了正确的方向