ansibleをmacに入れてさくらVPSの環境構築してみる、その1

Infrastructure as Code!!

ということで、言いたい事言ってこの流れに乗ってみました。

chef流行ってますけど、なんかちょいと壁が高そうと感じてたところに、ansibleとやらを知ったので、導入してみました。

さくらVPSの乗せ変え作業が目的だったので、それを最終目標に、今回はとりあえず導入編で。

環境
  • メインマシン : 手元のMac(OS X 10.7.5)

  • 対象サーバ : さくらVPS (CentOS6)

ansible インストール

Macにansibleをインストールします。

(ここを参考にしました。Installing Ansible on OS X)

pythonの動作環境構築

ansible はpythonで動くので、まずはpythonが動く環境を用意します。

$ python –version

Python 2.7.1

versionの確認。python2.6以下の場合2.7にupdateしましょう。

$ eazy_install virtualenv

(※以降、権限の問題でエラーが出る場合は、適宜sudoしました。)

virtualenvというpythonの複数versionを動作させるツールを入れます。(おそらく他のpythonシステムと併用を考えての導入かと。ansibleのためだけなら不要かも?)

$ virtualenv ansible-env

ansibleを動作させる環境を「ansible-env」という名前で作ってるようです。

$ source ansible-env/bin/activate

これでその環境になります。(ansible-env) と出てきます。

(ansible-env)/Users/username%

こんな感じ。(これ以降すべてこの環境で実施しています)

で、その他必要なモジュールをインストール

$ easy_install pip

$ pip install paramiko PyYAML jinja2

ようやくansible インストール

$ git clone git://github.com/ansible/ansible.git

$ cd ansible

$ source ./hacking/env-setup

ansibleを使う

動くかどうか試します。

(ここを参考にしました。構成管理ツール Ansible について)

$ echo “127.0.0.1” > ~/ansible_hosts

$ export ANSIBLE_HOSTS=~/ansible_hosts

$ ansible all -m ping –ask-pass

SSH password:

127.0.0.1 | success » {

“changed”: false,

“ping”: “pong”

}

ANSIBLE_HOSTSを設定して、そのホストへpingを打っているようです。

上記のように出力されれば動作OK。ダメな場合、赤字でエラー内容が表示されます。

また、ANSIBLE_HOSTSのような環境変数じゃなくても

/etc/ansible/hosts

にinitファイル形式で書いてもOK

[servers]

foo.example.com

bar.example.com

[webservers]

49.212.xxx.xxx

[]で名前をつけてグループ化できます。

playbook作成

playbookとは、ansibleの構成要素の一つで、動作を決めるものです。

yaml形式でこんな風に書きます。

webapp.yml

- hosts: webserver
  user: root
  sudo: yes
  tasks:
    - name: install apache
      action: yum pkg=httpd state=installed
    - name: install php
      action: yum pkg=php state=installed

簡単に内容を説明すると、webserverというホスト(先ほどのグループ化した名前)にuserはrootでsshログインして、tasksに書かれているaction:やcommand:を実行します。name:は単に名前を付けているだけです。

ansible実行

playbookを作ったら実行、、、の前に!

対象サーバにパスワード無しでsshできるようしておきましょう。

公開鍵設定

それができたら実行!

ansible-playbook webapp.yml

これだけ!

これだけで、apacheとphpが動く環境が出来ました。あとはこのymlをどんどん変えて行けばお好みの環境ができそうですね!

まとめ

とりあえず、動作させてみたってとこで一旦終了。

phpのversion指定やdbその他モジュール追加など等にチャレンジして、また書いて行こうと思います。

もうちょっと詳しい機能や、説明はこちらを参考にしてみてください

ansibleを使ってみる