不思議の国のAnsible – 第2話


 
logo


不思議の国のAnsible1

第2話 忠実な兵士たち

 

前回より続く

 

はじめての Ansible コマンド


アリスは レベルが上がった!

コマンド ansible を手に入れた!
コマンド ansible-doc を手に入れた!
モジュール ping をおぼえた!

icon_bob01おめでとうアリス!
新しいコマンドとモジュールを手に入れたみたいだね。
icon_alice01コマンドは、OS から実行可能なコマンドという意味ですよね?
モジュールっていうのは、コマンドとは違うんですか?
icon_bob01モジュールっていうのは、Ansible の言葉なんだけど
管理対象サーバ上でどんな仕事をするのか、その命令の種類だと考えればいい。

Ansible では標準で 200以上のモジュールが用意されているし、
必要であれば2自由に拡張することもできる。

icon_alice01よく使う手順のパターンがまとまっている感じですかね。
icon_bob01その通り。ではまず手始めに ping というモジュールを使ってみよう。
icon_alice01ネットワークコマンドの ping とは別物なんですね。
icon_bob01うん、これはネットワークの疎通だけではなくて、Ansible のサービス階層で
対象サーバが利用可能な状態にあるかどうかをチェックできるんだ。
icon_alice01使い方を教えてください!
icon_bob01ansible というコマンドで、実際に管理対象サーバに命令を送ることができる。
書式は ansible 対象サーバのIPアドレス -m ping だよ。

アリスは、この不思議な世界でコマンドを頭に思い浮かべる。
するとどこからともなく奇妙な兵士が現れた。トランプの胴体にハート型の槍を携えている。

icon_alice01コマンド実行!

アリスがコマンドを唱えると、トランプ兵はそそくさとどこかへ帰ってしまった。

icon_alice01あれ? なんだかうまくいっていないみたいです。
icon_bob01あ、そうだった。Ansible では安全のため、あらかじめ指定したサーバ以外には
接続しないようになっている。
それを管理しているのが /etc/ansible/hosts というファイル3なんだけど、
このように、接続先の 192.168.100.12 という1行に書き換えてごらん。

元々書かれている内容は、全部削除して構わないよ。

icon_alice01できました。それでは気を取り直して……

またまた、どこかからトランプ兵が現れる。
今度は管理対象サーバへ繋がる扉の前4まで一目散へ駆け出していった。
ところが押しても引いてもドアが開かず、結局諦めて帰っていった。

icon_alice01あらら、まだダメみたいですね。
icon_bob01今度は SSH の認証に失敗したようだ。
君の秘密鍵は、実はココ (~/.ssh/alice.pem) に隠してある。
それを指定してみよう。
ansible コマンドに –private-key というオプションを付け加えるよ。

三たび現れたトランプ兵は、今度はアリスの目の前に駆けつける。
アリスがトランプ兵に扉の鍵を渡すと、うやうやしく敬礼して扉のもとへ。
今回は無事、扉を開けられたようだ。
程なく戻ってきたトランプ兵はアリスの元へ駆け寄り、「pong」と叫んで報告する。

icon_alice01うまくいきました!
icon_bob01Ansible の出力は、だいたいこんな感じになる。
FAILED の部分が success に変わって、付随する情報が出力されているね。

ちなみに、毎回秘密鍵を指定するのが面倒なら、こんな風に ssh-agent に登録しておくといいよ。

icon_alice01こっちのほうが後々楽になりそうです。
icon_bob01それと、IPアドレスの代わりに all と指定すれば
/etc/ansible/hosts ファイルに書かれた全てのサーバに対して
処理が実行される。
今はまだ管理対象サーバが1つしかないから、挙動は変わらないけどね。

icon_alice01all ですね。覚えておきます。

ドキュメントの参照

 

icon_alice01ところで、ansible-doc ってコマンドもありましたけど、使ってみていいですか?
icon_bob01もちろんだよ!
これはヘルプ用のコマンドで、ansible-doc モジュール名 と実行すれば説明や
使用例をすぐに参照できる。

icon_alice01英語ですけど、なんとなくわかるような、わからないような……
でも使用例が載っているのはありがたいですね。
モジュールの使い方を忘れてしまった時なんかに重宝しそうです。
icon_bob01もちろん、Ansible 公式ドキュメント も素晴らしく充実していて使いやすいよ。

さまざまな実行オプション

 

icon_bob01ansible コマンドの方にもまだまだ色んなオプションがあって……
そうだな、例えば-a オプションを使えば、管理されるサーバ側で
好きなコマンドを実行することができる。

icon_bob01--sudo オプションを使えば、管理対象サーバで root 権限が必要な作業もお手のものさ。

icon_alice01コマンド一つでいろんな事ができるんですね。すごい!
icon_bob01まだまだ、こんなのは序の口。でも雰囲気は掴めたんじゃないかな。
icon_alice01はい。おかげさまで。
私が指示したとおりに、忠実に働いてくれるんですね。
icon_bob01そこが Ansible を使う価値さ。
icon_alice01でもこうやってコマンドを実行できるのは確かに便利ですけど、
手で作業するのとあんまり変わらないような気もします……
icon_bob01うん、実はサーバの構築や運用にあたって ansible コマンドを直接実行
する場面はほとんどない。
Ansible では あるべき状態をファイルに記述して、それを実行するという
スタイルが普通なんだ。

それは、この世界では playbook と呼ばれている。
少し休憩したら、次はその話をしようか。

 

次回へつづく

 
最後までお読みいただき、どうもありがとうございました。


  1. 画像素材 http://kage-design.com/wp/ []
  2. ほとんどの場合は独自のモジュールを作らなくても事足りる []
  3. 正確に言えば、デフォルトの参照先の1つ []
  4. 第1章を参照 []