Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 多个资源清册不工作-找不到主机_Amazon Ec2_Ansible_Ansible Inventory - Fatal编程技术网

Amazon ec2 多个资源清册不工作-找不到主机

Amazon ec2 多个资源清册不工作-找不到主机,amazon-ec2,ansible,ansible-inventory,Amazon Ec2,Ansible,Ansible Inventory,我正在使用Ansible EC2动态清单脚本访问EC2中的主机。我正在寻找的主机有一个名为sisyphus\u environment的标签,其值为development,另一个名为sisyphus\u project的标签,其值为reddot,因此我需要这些标签的交集 然而,我甚至不能在EC2清单中正确地过滤一个标签 我可以使用AWS CLI清楚地找到有问题的实例: $ aws ec2 describe-instances --filters \ Name=tag:sisyph

我正在使用Ansible EC2动态清单脚本访问EC2中的主机。我正在寻找的主机有一个名为
sisyphus\u environment
的标签,其值为
development
,另一个名为
sisyphus\u project
的标签,其值为
reddot
,因此我需要这些标签的交集

然而,我甚至不能在EC2清单中正确地过滤一个标签

我可以使用AWS CLI清楚地找到有问题的实例:

$ aws ec2 describe-instances --filters \
        Name=tag:sisyphus_environment,Values=development \
        Name=tag:sisyphus_project,Values=reddot \
        Name=tag:sisyphus_role,Values=nginx | \
    jq '.Reservations[].Instances[] | { InstanceId: .InstanceId }'
{
  "InstanceId": "i-deadbeef"
}
{
  "InstanceId": "i-cafebabe"
}
我试图对Ansible做同样的事情,它被表示为一个静态组,由这些标记过滤的动态成员组成

我的ansible.cfg:

[defaults]
retry_files_enabled = false
roles_path = roles:galaxy_roles
inventory = inventory/

[ssh_connection]
ssh_args = -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
我的EC2清单以及

我的库存目录如下所示:

$ tree inventory/
inventory/
├── ec2.ini
├── ec2.py
└── inventory.ini

0 directories, 3 files
[tag_sisyphus_project_reddot]
# blank

[reddot:children]
tag_sisyphus_project_reddot
我必须用扩展名
.ini
命名
库存
,否则Ansible试图将其加载为YAML,但失败了

我的
inventory/inventory.ini
文件如下所示:

$ tree inventory/
inventory/
├── ec2.ini
├── ec2.py
└── inventory.ini

0 directories, 3 files
[tag_sisyphus_project_reddot]
# blank

[reddot:children]
tag_sisyphus_project_reddot
这样做了。不幸的是,这件简单的事情失败了:

$ inventory/ec2.py --refresh-cache
...
$ ansible reddot -m command -a 'echo true'
 [WARNING]: No hosts matched, nothing to do
如果按标记进行查询,则会得到以下结果:

$ ansible tag_sisyphus_project_reddot -m command -a 'echo true'
10.0.0.1 | SUCCESS | rc=0 >>
true
...
有我错过的一步吗

我的翻译:

$ ansible --version
ansible 2.2.0.0
  config file = /home/naftuli/Documents/Development/ansible-reddot/ansible.cfg
  configured module search path = Default w/o overrides