初めてでない輩は「私だ!!」
アドウェイズの10入社エンジニアのヒラノです(だ)。
本日紹介する商品は、ansible(たぶん、アンシブル)!!
ansibleとは
こちらのansibleはPhytonベースで動作するSSHタスク丸投げツールです。- サーバーにOSをインストールした後のわずらわしい作業
- Gitでpushした後に、関連するサーバーでやる作業
丸投げツールansibleのイメージがこんな感じです。
まずはインストール
# 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をつかって、いろいろインストールしていきます。