如何设置Ansible AWS的动态清单

2020-06-24 14:38:09 浏览数 (1)

当您将Ansible与AWS结合使用时,维护清单文件将是一项繁重的任务,因为AWS经常更改IP,自动缩放实例等。但是,有一个简单的解决方案就是ansible动态清单。它基本上是一个Python脚本,当您运行ansible命令时会进行API调用以获取实例信息。这将为您提供动态清单详细信息,这些信息可以用来方便管理AWS基础架构。

设置Ansible AWS动态清单

1.使用pip安装boto库。如果您尚未安装pip,则可以按照此文档进行安装–> 安装python pip

pip install boto

2.将清单脚本下载到/ etc / ansible目录。

Wget https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py

3.使文件可执行。

chmod x ec2.py

4.将ec2.ini文件下载到/ etc / ansible目录。

https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.ini

5. ec2.ini文件具有默认的AWS配置,可通过ec2.py文件读取。因此,请注释掉并配置必要的参数,以免查询时间过长。这样的例子就是“ regions”参数。默认情况下,该值为“ all”。这样可以对所有区域进行API调用。因此,最好只提及您使用的特定aws区域。

在[credentials]部分下,您需要提及abos访问密钥和私钥,以便boto库进行API调用。

或者,您可以在家里创建一个凭证文件,如下所示。

touch ~/.aws/credentials

打开凭证文件,然后如下所示进行输入。

[default]

aws_access_key_id = YOUR_ACCESS_KEY

aws_secret_access_key = YOUR_SECRET_KEY

注意:如果您正在使用AWS实例进行此设置,并且具有具有访问AWS服务权限的IAM角色,则无需将访问密钥和秘密密钥添加到凭证文件中

6 现在,使用以下命令测试清单配置。

./ec2.py --list

应该获得如下所示的输出。

{

  “ _meta”:{

    “ hostvars”:{}

  }

}

如果您有一些实例正在运行,则将获得包含所有实例详细信息的输出。

7.如果要将动态清单用作默认的ansible清单,则需要编辑/ etc / ansible目录中存在的ansible.cfg文件,并在ansible.cfg中搜索清单参数。如下所示更改库存参数值。

inventory      = /etc/ansible/ec2.py

现在,您可以对动态清单资源运行正常的ansible命令。例如,以下命令将对使用动态清单获取的所有正在运行的ec2实例运行ping命令。

ansible all -m ping

0 人点赞