因此,首先,我可能在这里错过了一些非常简单的内容,但我看不到它。我正在尝试将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-pull
或ansible-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
答案 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
然后在输入主机名时需要匹配。