Vagrant+Ansible触ってみた

vagrantansible

chefが余りにも取っ付きにくかったため、下記エントリを読み、Ansibleを触ってみることにしました。

Chefがつらい人のためのAnsibleのはなし - ゆううきブログ

Vagrant準備

Vagrantのお作法もよくわかってないですが、二つディレクトリを作成し、それぞれのディレクトリでVagrantfileを作成した。
VMIPアドレスをセットする場合は、Vagrantfileに下記のように追記します。

  config.vm.network :private_network, ip: "192.168.50.10"

二つVMを立ち上げ、片方からもう片方にssh接続できるようにします。
片方VMで鍵作成してもう片方のVMの~/.ssh/authorized_keyに公開鍵を突っ込みます

$ssh-keygen -t rsa
$cat ~/.ssh/id_rsa.pub # これを適当にコピる

Ansibleインストール

$sudo apt-get update
$sudo apt-get install ansible

Ansibleで対象ホストを指定する

ANSIBLE_HOSTSに指定されたファイルを見に行くため、パスを通す

export ANSIBLE_HOSTS=~/hosts

ファイル自体の中身はこんな感じに書きます。webserverというグループにVMを追加するイメージです。
~/hosts

[webserver]
vm-ip-address

適当なyamlを書いてみる

redisをインストールするだけのyamlです。
VMはUbuntu12.10なのですが、12.10の場合、redisのバージョンが2.4と古いため、
最新のredisをインストールできるようにします。
さらにUbuntu12.10には初期状態では"apt-add-repository"コマンドがないため、
それを利用するために"software-properties-common"をインストールします。

http://www.ansibleworks.com/docs/modules.html#packaging

~/test.yml

- hosts: webserver
  user: vagrant
  sudo: yes
  tasks:
    - name: install software-properties-common for apt-add-repository
      apt: pkg=software-properties-common update_cache=yes
    - name: add repo for redis
      apt_repository: repo='deb http://ppa.launchpad.net/chris-lea/redis-server/ubuntu quantal main' state=present
    - name: add repo for redis2
      apt_repository: repo='deb-src http://ppa.launchpad.net/chris-lea/redis-server/ubuntu quantal main' state=present
    - name: apt-get update
      apt: update_cache=yes
    - name: install redis
      apt: pkg=redis-server update_cache=yes

実行します。

$ansible-playbook test.yml

対象VMでredisが正しくインストールされたか確認

vagrant@quantal64:~$ redis-server -v
Redis server v=2.6.14 sha=00000000:0 malloc=jemalloc-3.4.0 bits=64

yamlの書き方とか正しいのかよくわからないけどできてた!!

なんかVagrantからAnsibleを使うのがあるらしいね!!
Ansible - Provisioning - Vagrant by HashiCorp