仕事では利用しているAnsible。
プライベートで使っているサーバーも、構成管理することにしました。
まずは初期構築の部分をまとめてみました。
ansibleのインストール
Ansibleを利用するクライアント側にansibleをインストールします。
1
2
3
| $ pip install ansible
$ ansible --version
ansible 2.1.2.0
|
手元ではbotoが入ってなかったので、インストールしました。
Dynamic Inventoryのインストール
AWSのインスタンスをAnsibleで管理する場合、
インスタンスのIPではなく、Tag Nameで管理できると便利です。
Terminateして立ち上げ直した場合などはIPが変わりますし、
冗長構成の場合は複数台に対して同じ作業がしやすくなります。
そこで、Dynamic Inventoryという仕組みを使います。
ec2.pyとec2.iniをダウンロードします。
https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.py
https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.ini
動作確認です。
1
2
3
4
| $ export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXX
$ export AWS_DEFAULT_REGION=ap-noartheast-1
$ ./ec2.py --list
|
SSHの設定を書くために、同じディレクトリにansible.cfgを設置します。
sshの設定ファイルを読む設定と、Persistの設定を記載しています。
[ssh_connection]
control_path = %(directory)s/%%h-%%r
ssh_args = -o ControlPersist=15m -F ssh_config -q
scp_if_ssh=True
SSH接続する際の設定をssh_configに記載します。
接続ユーザーと鍵の設定をしています。
Host *
User ec2-user
IdentityFile /aws.pem
動作確認
ansibleコマンドでuptimeを打ってみます。
1
2
3
| ansible -i ec2.py tag_Name_gside -m command -a "uptime"
192.0.2.0 | SUCCESS | rc=0 >>
12:13:54 up 13 days, 14:16, 1 user, load average: 0.04, 0.03, 0.00
|
まとめ
そんなにハマるところはなかったですが、繋がらないなとハマったら、
sshの接続を疑うとこからはじめて見ましょう。
鍵の場所が正しくないとか、大体のミスは発見できます。