Ansibleを使ってみる

2016–10–30

仕事では利用しているAnsible。 プライベートで使っているサーバーも、構成管理することにしました。 まずは初期構築の部分をまとめてみました。

ansibleのインストール

Ansibleを利用するクライアント側にansibleをインストールします。

$ pip install ansible
$ ansible --version
ansible 2.1.2.0	  

手元ではbotoが入ってなかったので、インストールしました。

$ pip install 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

動作確認です。

$ 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を打ってみます。

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の接続を疑うとこからはじめて見ましょう。

ssh -vv -F ssh_config	  

鍵の場所が正しくないとか、大体のミスは発見できます。