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

2013/07/24

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を使ってみる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です