Ansible aws_ec2清单永不匹配主机组

时间:2020-05-16 13:49:04

标签: ansible ansible-inventory ansible-pull

因此,首先,我可能在这里错过了一些非常简单的内容,但我看不到它。我正在尝试将asible pull与aws_ec2广告资源插件一起使用打包程序在AWS中的EC2实例上运行。我有以下清单文件:

plugin: aws_ec2
regions:
  - eu-west-1
  - eu-west-2
keyed_groups:
  - key: tags['role']
    prefix: enc
filters:
  instance-state-name: running
  tag:ami: "true

当我运行ansible-inventory -i /tmp/ansible/inventories/dev/ami_inventory_aws_ec2.yml --list时,我得到以下组:

"all": {
        "children": [
            "aws_ec2",
            "enc_web",
            "ungrouped"
        ]
    },
    "aws_ec2": {
        "hosts": [
            "ip-10-93-66-209.eu-west-1.compute.internal"
        ]
    },
    "enc_web": {
        "hosts": [
            "ip-10-93-66-209.eu-west-1.compute.internal"
        ]
    }

这是我期望看到的。然后在我的剧本中有以下内容:

---
- import_playbook: bootstrap.yml

- hosts: enc_web
  gather_facts: True
  roles:
    - name: enc.base
....

在这一点上,我认为运行ansible-pullansible-playblook有无--limit enc_web ansible会匹配组名并运行,但是我得到

[WARNING]: Could not match supplied host pattern, ignoring: ami-aws-web-01
ERROR! Specified hosts and/or --limit does not match any hosts

我在这里真的缺少一些基本知识吗?应该在该组名称中的所有主机上运行吗?

我完整的ansible命令是:

ansible-pull --url=git@bitbucket.org:XXXXX/ansible.git --accept-host-key --directory=/tmp/ansible --full --checkout=web --private-key=/home/ubuntu/.ssh/ansible/ansible -e ami=true -e region=eu-west-1 --vault-password-file=~/.ssh/ansible/dev --inventory-file=/tmp/ansible/inventories/dev/ami_inventory_aws_ec2.yml playbooks/web.yml --limit enc_web

1 个答案:

答案 0 :(得分:0)

将清单文件更改为:

plugin: aws_ec2
regions:
 - eu-west-1
 - eu-west-2
keyed_groups:
 - key: tags['role']
    prefix: enc
filters:
  instance-state-name: running
  tag:ami: "true"
hostnames:
 - tag:Name

然后在输入主机名时需要匹配。