指定AWS EC2标签并运行Ansible

首先

当使用Ansible对服务器执行命令时,需要在清单文件中定义目标服务器的IP地址。然而,AWS的EC2默认情况下每次重启都会导致IP地址变化。使用弹性IP可以固定IP地址,但需要支付费用。在这种情况下,可以通过指定AWS EC2标签来执行Ansible而不使用IP地址,这种方法非常方便。以下是介绍这种方法的内容。

前提 tí) means “premise” or “condition” in Chinese.

以下是中国籍的简述,请注意,只需要一种选择:

■ Ansible服务器已经搭建完成,并且目标服务器和Ansible执行用户具备ssh执行权限。
> 在下面的“步骤”中,我们将以ansible作为Ansible执行用户名的示例。

■确保在AWS控制台上为Ansible执行目标服务器(EC2)添加了标签
> 在下面的”步骤”中,以role(键)=webserver(值)为例添加了标签。

在AWS控制台上已创建了IAM用户的访问密钥,请参考下面的”操作步骤”,将访问密钥ID设置为xxxxxxxx,将密钥访问密码设置为yyyyyyyy。

步驟

所有的步骤都在Ansible服务器上执行。

➀ 设置访问密钥信息

用中文本地化重述以下命令,只需要提供一种选项:
# vi /home/ansible/.aws/credentials

打开位于/home/ansible/.aws/credentials的文件。

※credentials文件需放置在执行Ansible的ssh用户的主目录下。在上面的例子中,我们使用ansible用户。用户名可以根据实际情况进行更改。

请在credentials文件中添加以下3行:
—–开始—–
[default]
aws_access_key_id = xxxxxxxx
aws_secret_access_key = yyyyyyyy
—–结束—–

请设定xxxxxxx/yyyyyyyy为实际值。

安装 boto

要操作AWS,需要安装Python SDK即Boto。首先使用Python的包管理工具pip通过yum安装pip,然后使用pip安装Boto。

用中文原生语言来解释:
1. 使用yum命令安装Python的pip工具。
2. 使用pip命令安装boto库。

从Github上下载并编辑ec2.py/ec2.ini文件。

ec2.py是一个用于获取AWS EC2库存信息(包括标签)的脚本。ec2.ini是ec2.py的配置文件。

■ 下载链接
> https://github.com/ansible/ansible/tree/devel/contrib/inventory

请将ec2.py和ec2.ini文件放置在与存货文件相同的文件夹中。
然后,对ec2.py文件进行配置,并使用chmod命令给予执行权限。

■ ec2.ini的修改部分
修改ec2.ini的以下部分。(无需修改ec2.py)
> region = ap-northeast-1a(修改)
> instance_filters = tag:role=webserver(新增)
> rds = false(取消注释)
> elasticache = false(取消注释)
> destination_variable = private_dns_name(修改)
> vpc_destination_variable = private_ip_address(新增)
> cache_max_age = 0(新增)

对playbook中hosts的指定进行修改。

修改playbook中指定hosts的部分,使用标签(tag)。

修正例

hosts: tag_role_webserver

※请根据需要适当替换role(键)和webserver(值)。

确认执行playbook。

执行以下的playbook命令,确认列出了指定标签的EC2。

请列出 <inventory文件> 中的主机,并运行 <playbook文件> 中的任务 # ansible-playbook -i <inventory文件> <playbook文件> –list-hosts

以上

广告
将在 10 秒后关闭
bannerAds