はじめに
こんにちは。インフラエンジニアレベル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
結果は割愛します。
まとめ
これで動的にセットアップができるようになります。
とても便利になりました。
参考資料・リンク
http://docs.ansible.com/guide_aws.html
http://docs.ansible.com/intro_dynamic_inventory.html
https://aws.amazon.com/jp/blogs/apn/getting-started-with-ansible-and-dynamic-amazon-ec2-inventory-management/
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html