Ansibleの設定方法
AnsibleはChefのようなDeployツールで以下のような特徴があります
- agent less
- 対象のサーバにAnsibleの命令を受け取るAgentをインストールする必要がない
- interactive mode
- レシピファイル内にすべて記述せずに対話的に設定をしていくことが可能らしい
- GUI web console
使い方
1. Ansibleのインストール(Ansibleサーバ)
sudo apt-get install ansible cd /etc/ansible ls -l total 20 drwxr-xr-x 2 root root 4096 Apr 25 05:31 ./ drwxr-xr-x 84 root root 4096 Apr 25 05:32 ../ -rw-r--r-- 1 root root 6119 Apr 1 2014 ansible.cfg -rw-r--r-- 1 root root 982 Apr 3 2014 hosts
2. 対象のサーバを指定
Ansibleサーバからアクセスするターゲットサーバの指定をします
vi hosts ================================================== [gateway] 192.168.33.21 [webserver] 192.168.33.22 [database] 192.168.33.23 192.168.33.24 [application] 192.168.33.25 ==================================================
フォーマットは色々ありますが、今回は以下の書式をで書きます
[Group名] IPアドレス
3. setting ssh agent
ansibleは対象のサーバにsshで接続するので、ssh agentなどを設定してパスワードレスでアクセスできるようにしてやる必要があります
ここらへんは過去ポストをご参照ください
パスワード入力なしでssh接続する方法①(ssh-agent) - 脳汁portal
パスワード入力なしでssh接続する方法②(.ssh/config) - 脳汁portal
sshの設定が完了したら、ansibleのpingモジュールを利用して実際に接続出来るか確認します
$ ansible all -m ping 192.168.33.21 | success >> { "changed": false, "ping": "pong" } 192.168.33.22 | success >> { "changed": false, "ping": "pong" } 192.168.33.23 | success >> { "changed": false, "ping": "pong" } . . .
またはコマンドを直接送ることも可能です。
今回はサーバグループを指定して実行してみます
$ ansible gateway -a "/bin/date" 192.168.33.21 | success | rc=0 >> Thu Apr 21 05:06:25 GMT 2016 $ ansible webserver -a "/bin/date" 192.168.33.22 | success | rc=0 >> Thu Apr 21 05:09:31 GMT 2016 $ ansible database -a "/bin/date" 192.168.33.23 | success | rc=0 >> Thu Apr 21 05:21:30 GMT 2016 192.168.33.24 | success | rc=0 >> Thu Apr 21 05:26:30 GMT 2016 192.168.33.25 | success | rc=0 >> Thu Apr 21 05:29:39 GMT 2016
4. playbookの作成
playbookはChefでいうレシピファイルになります
(Chefを使ったことがないので違ったらすいません
playbookはymlファイルで構成します。
sample
vi playbook_hogehoge.yml ======================================== - hosts: all # 指定したすべてのサーバで行いたい場合 sudo: yes # sudoを利用するかどうか tasks: # Tasks以下に実際に行う処理を記述していく - name: download from url # 処理の名前 get_url: # ansibleのget_urlモジュールを使用 url: ダウンロードしたいURL # ダウンロード先のURLの指定 dest: /usr/local/src/hoge.tar.gz # ファイルの配置先の指定 timeout: 30 # タイムアウトの指定(v1.8から - name: apt de git install suru command: apt-get install git # コマンドを直接指定することもできる - hosts: gateway # 特定のグループのみに作業させることも可能 tasks: . . . ========================================
5. Playbookの実行
playbookの作成が完了したらansible-playbookコマンドで実行できます
ansible-playbook playbook_hogehoge.yml