Ansibleを入れてみた

Ansibleをいれてみた

注意:この記事は、Ansibleを触り始めて1時間にも満たない人間が書いた記事です。

本日、Ansible 勉強会 #1 に参加した。 構築で使う意欲よりも、運用で使ってみようという意欲が湧いたので、初期導入からやってみる。

インストール

Ansibleはエージェントレスなため、ansibleを実行したいマシンにansibleをインストールすればいい。
macでHomebrew使ってる場合はこれだけ。

brew install ansible

実行

ansibleはsshconfigを考慮するため、IPだけでなく、sshconfigに書いてるHostを使っても実行可能だ。

例えば

Host local-centos
    User aibou
    HostName 192.168.100.1
    IdentityFile ~/.ssh/id_rsa

と記述していれば、ansible の inventory に local-centos と記述することができる。

ということで、inventoryファイルを作ってみる。

[local]
local-centos

その後、このコマンドを実行してみた。

ansible -i ./inventory local -m ping

ここでエラーにならない場合は、サーバ側で必要なパッケージがインストール済みで問題ないが、
こんなエラーになる可能性がある。

local-centos | FAILED >> {
    "failed": true,
    "msg": "Error: ansible requires a json module, none found!",
    "parsed": false
}

こういう場合、エージェントレスとはいうもののpython-simplejsonパッケージが必要なため、インストールする必要がある。

sudo yum install -y python-simplejson

その後、もう一度コマンドを実行すると成功結果が返ってくる。

local-centos | success >> {
    "changed": false,
    "ping": "pong"
}

Inventoryのグループ

Inventoryにはグループを設定することができる。
上記で言うと、[local]がそれに該当する。
なので、こういう感じで書ける。

[web-server]
hoge-wap-01
hoge-wap-02
hoge-wap-03
hoge-wap-04
hoge-wap-05
hoge-wap-06

とおもいきや、Rangeで記述することができるらしい。

[web-server]
hoge-wap-[01:06]

これは便利!

その他、Inventoryにいろいろ設定できるらしいが、まだ理解してないのでパス。

所感

今まで、サーバの構築のために社内共有Chefサーバ使用していた。
それはそれで使い続けてもいいかなとは思ってるが、オペレーションを行うためにAnsibleを導入するのはアリだと思う。
例えば、パッケージのアップデートを始め、障害時のミドルウェアの再起動等をAnsibleを用いて行うことで、手間を減らせると考えられる。

監視サーバもしくはJenkinsサーバにインストールしておくことで、いろいろ夢が広がりそうだ