与 AWS 连接时的 Ansible 动态清单

Ansible dynamic inventory when connecting with AWS

我已经下载了 ec2.py 和 ec2.ini 个文件并将它们放在

/etc/ansible/inventory

并且我已将 ansible.cfg 更改为

inventory      = /etc/ansible/inventory/ec2.py

我将环境变量设置为

export AWS_ACCESS_KEY_ID="XXXXXXXXXXXXXXX"
export AWS_SECRET_ACCESS_KEY="XXXXXXXXXXXXXXXXXXXXX"
export AWS_DEFAULT_REGION="us-east-1"
export EC2_INI_PATH="/etc/ansible/inventory/ec2.ini"

现在当我 运行 ansible -m ping all 我得到

[WARNING]: provided hosts list is empty, only localhost is available

而不是 ping 我帐户中的所有实例

当我 运行 ./ec2.py --list 我得到

{
   "_meta": {
   "hostvars": {}
}
}

我在 aws 中的所有实例都是 运行ning

您似乎没有使用正确的清单文件。

  • 检查ec2.py是否可执行(chmod +x)
  • 运行 ansible 使用 -v 选项来检查它到底是什么配置文件 使用

    ansible -v -m ping all

  • 检查您是否有ANSIBLE_INVENTORY或ANSIBLE_HOSTS环境 变量覆盖预期的配置文件。您可以通过设置

    覆盖库存定义

    export ANSIBLE_INVENTORY=/etc/ansible/inventory/ec2.py

提醒配置文件按以下顺序处理

  • ANSIBLE_CONFIG(一个环境变量)
  • ansible.cfg(在当前目录下)
  • .ansible.cfg(在主目录中)
  • /etc/ansible/ansible.cfg

1.5 之前的顺序是:

  • ansible.cfg(在当前目录下)
  • ANSIBLE_CONFIG(一个环境变量)
  • .ansible.cfg(在主目录中)
  • /etc/ansible/ansible.cfg