ansibleを使ってみた(導入偏)

諸君、始めましての方は「お初にお目にかかります。」
初めてでない輩は「私だ!!」
アドウェイズの10入社エンジニアのヒラノです(だ)。

10364185_488597614606966_8576069851112379053_n


本日紹介する商品は、ansible(たぶん、アンシブル)!!

ansibleとは

こちらのansibleはPhytonベースで動作するSSHタスク丸投げツールです。
  • サーバーにOSをインストールした後のわずらわしい作業
  • Gitでpushした後に、関連するサーバーでやる作業
そういった作業は全て丸投げしてしまいましょう。
丸投げツールansibleのイメージがこんな感じです。
d4e17666-s

今回はCentos6.4 を想定して説明を行います。

まずはインストール

# EPEL 有効化
$ sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

# ansible インストール
$ sudo yum install ansible --enablerepo=epel
インストールはyumだから簡単!!Pythonベースなので様々なOSに対応してます。

クライアントサーバーで作業アカウント作成

  • SSH接続が出来る
  • Sudoが使える
以上の条件を満たすアカウントを作成します。

ansibleの接続テスト

作成したアカウントが使用できるか確認します。
まずansible用のサーバーリストを作成します。
ansibleはsshのconfigファイルを読みにいかないのでサーバーリストに設定を書きます
$ mkdir ansible
$ cd ansible
$ vim project.hosts
#書式
#[group1]
#host1 ansible_ssh_user=SSHログインユーザー ansible_ssh_private_key_file=秘密鍵
#host2
#[group2]
#host3
#host4

[webserver]
web1.adways.net ansible_ssh_user=ansible_client ansible_ssh_private_key_file=~/.ssh/web1.id_rsa
web2.adways.net ansible_ssh_user=ansible_client ansible_ssh_private_key_file=~/.ssh/web2.id_rsa

[dbserver]
db1.adways.net ansible_ssh_user=ansible_client ansible_ssh_private_key_file=~/.ssh/db1.id_rsa
db2.adways.net ansible_ssh_user=ansible_client ansible_ssh_private_key_file=~/.ssh/db1.id_rsa
作成したファイルに接続テストを行います。
ansible [-i サーバーリストファイル] [all or サーバーグループ or サーバー名] -m [利用するモジュール]
-i はサーバーリストを指定します。 (未指定の場合 /etc/ansible/hostsを参照します。)
$ ansible -i project.hosts all -m ping

web1.adways.net | success >> {
    "changed": false,
    "ping": "pong"
}
web2.adways.net | success >> {
    "changed": false,
    "ping": "pong"
}
db1.adways.net | success >> {
    "changed": false,
    "ping": "pong"
}
db2.adways.net | success >> {
    "changed": false,
    "ping": "pong"
}
これで接続確認完了

コマンド一斉実行

次にコマンドを投げてみる。
$ ansible -i project.hosts all -a "コマンド"
これで一斉にコマンドを対象サーバーで実行できます。
実際に実行してみた結果が以下になります
$ ansible -i project.hosts all -a "/sbin/ifconfig"
web1.adways.net | success | rc=0 >>
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.0.0.101  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9787444 errors:0 dropped:0 overruns:0 frame:0
          TX packets:585928 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1134324481 (1.0 GiB)  TX bytes:206534293 (196.9 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:58389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58389 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:122014573 (116.3 MiB)  TX bytes:122014573 (116.3 MiB)

web2.adways.net | success | rc=0 >>
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.0.0.102  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9787444 errors:0 dropped:0 overruns:0 frame:0
          TX packets:585928 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1134324481 (1.0 GiB)  TX bytes:206534293 (196.9 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:58389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58389 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:122014573 (116.3 MiB)  TX bytes:122014573 (116.3 MiB)

db1.adways.net | success | rc=0 >>
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.0.0.103  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9787444 errors:0 dropped:0 overruns:0 frame:0
          TX packets:585928 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1134324481 (1.0 GiB)  TX bytes:206534293 (196.9 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:58389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58389 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:122014573 (116.3 MiB)  TX bytes:122014573 (116.3 MiB)

db2.adways.net | success | rc=0 >>
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.0.0.104  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9787444 errors:0 dropped:0 overruns:0 frame:0
          TX packets:585928 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1134324481 (1.0 GiB)  TX bytes:206534293 (196.9 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:58389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58389 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:122014573 (116.3 MiB)  TX bytes:122014573 (116.3 MiB)

次回はタスクをファイルにまとめたPlayBookをつかって、いろいろインストールしていきます。