Ansibleの基本的な使い方

概要

what ansible?

  • サーバ構築を自動化するツール 基本的な部分はchefとかと目的は同じ
  • 操作にはsshログインにて操作を行うためよけいなエージェントをサーバ側へ入れる必要がない
  • 構築用設定ファイルはymlにて設定
  • chefではrubyが使えるので何でもできるがansibleは基本的なコマンドのみを提供する
  • ansibleのみでは単体での動作だが、playbookに書いた手順を実行することができる

インストール

macports

$ sudo port install ansible
$ ansible --version
ansible 1.8.2

apt-get

$ sudo apt-get install ansible
$ ansible --version
ansible 1.5.4

使い方

対象ホストを記述したファイルと、手順を書いたplaybookと、サーバに対しての操作を行うmoduleがそろっていると使える

基本

$ ansible <対象グループ> オプション

ex.

$ ansible servers -i hosts.ini --sudo -u ubuntu --private-key="private.pem" -a "shutdown -h now"

hosts.ini 対象サーバのリストを書いたファイル

[servers]
192.168.xxx.xxx
192.168.xxx.yyy

ホスト指定設定ファイル

  • 指定をしないとデフォルトだとhelpで表示されるdefaultを指定
  • -iかinventory-file= にて指定を行う
    • ansible <対象グループ> -i INVENTORY OR –inventory-file=INVENTORY
    • <対象グループ>にallを入れるとiで指定したホスト全てに対して処理を行う

サーバ指定ファイル


192.168.xxx.aaa
[main]
192.168.xxx.yyy
192.168.xxx.xxx
192.168.xxx.zzz
[db]
192.168.xxx.bbb
191.168.xxx.ddd

Module

ホストへPing

ping moduleをsってサーバへpingを送信。
サーバが生きていればsuccessが表示される。


$ ansible main -i hosts.ini -m ping
192.168.xxx.yyy | success >> {
"changed": false,
"ping": "pong"
}
192.168.xxx.yyy | success >> {
"changed": false,
"ping": "pong"
}

...
..
.

その他のModuleはこのへんにドキュメントがある
http://docs.ansible.com/modules_by_category.html

主要オプション

コマンドを実行する ( -a )

$ ansible servers -i hosts.ini -a "shutdown -h now"

sshに必要なキーファイル指定 ( –private-key )

$ ansible servers -i hosts.ini --private-key="hogehoge.pem" -a "shutdown -h now"

ログイン用ユーザ指定 ( -u )

$ ansible final-servers -i hosts -u ubuntu -a "shutdown -h now"

sshログインパスワード & sudoパスワード ( -k )

$ ansible final-servers -i hosts -u ubuntu -k -a "shutdown -h now"

sudoで実行 ( –sudo )

$ ansible final-servers -i hosts --sudo -a "shutdown -h now"