はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
普段業務では、MacからAnsibleを使用しております。
Amazon Linuxから使う必要がでたので、インストールの作業内容をまとめたいとおもいます。

インストール

pipのインストール

[root@ip-172-31-21-105 ~]# sudo easy_install pip

Ansibleのインストール

[root@ip-172-31-21-105 ~]# sudo pip install ansible

Ansibleの確認

[root@ip-172-31-21-105 ~]# which ansible
/usr/bin/ansible

AWS EC2 External Inventory Scriptと組み合わせる

Ansible and Dynamic Amazon EC2 Inventory Management
が、AWSのブログにあります。

$ export AWS_ACCESS_KEY_ID='YOUR_AWS_API_KEY'
$ export AWS_SECRET_ACCESS_KEY='YOUR_AWS_API_SECRET_KEY'
$ export ANSIBLE_HOSTS=/etc/ansible/ec2.py
$ export EC2_INI_PATH=/etc/ansible/ec2.ini

とあるので、これを拡張したいと思います。ただ、毎回ログインしてexportコマンドを打つのは大変なので
assume-roleからアクセスキーとシークレットキーを取得して起動するようにセットアップします。

assume-roleからアクセスキーとシークレットキーを取得するようにセットアップする

jqを使いますので、インストール済みの状態で説明します。

ansible用ディレクトリ作成してモジュールを設置する
mkdir /opt/ansible
cd /opt/ansible
curl -O https://raw.githubusercontent.com/ansible/ansible/devel/plugins/inventory/ec2.py
curl -O https://raw.githubusercontent.com/ansible/ansible/devel/plugins/inventory/ec2.ini
/etc/profile.dにファイルを設置する
/etc/profile.d/ansible_ec2.shにファイルを設置します
EC2_ROLE=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/`
AWS_ACCESS_KEY_ID=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/$EC2_ROLE|jq '.AccessKeyId'|sed "s/"//g"`
AWS_SECRET_ACCESS_KEY=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/$EC2_ROLE|jq '.SecretAccessKey'|sed "s/"//g"`
export EC2_INI_PATH=/opt/ansible/ec2.ini
一覧を取得する
/opt/ansible/ec2.py --list

結果は割愛します。

まとめ

これで動的にセットアップができるようになります。
とても便利になりました。

参考資料・リンク

元記事はこちら

AnsibleをAmazon Linuxにセットアップする | f_prgのブログです。