Windows7でAnsible+Vagrantを使ってubuntu+Nginx環境構築
introduction
chefより初心者にはわかりやすいと言われるAnsible
を使ってみる。今回はWindows7
マシンでということで、windows環境では、VagrantをAnsibleでコントロールするのはかなり面倒(調べた限りつらい)なので、別途LinuxのマシンをVagrantでつくって、そこでAnsibleを動かすようにします。
ansibleって?
Chefと同様に冪等性(べきとうせい)に配慮した構成管理ツールです。YAML形式で書いたPlaybookとSSHさえつながっていればOKといったシンプルなものです。詳しくはググッてみたり、公式サイトのドキュメント参照ください。自分も便利ならひとまず動かしてみようという感じで、よく知りません。それでも大ジョブです。最近Ansible2.0がリリースされたようですね!
さっそくAnsibleを使ってみる
今回作る環境は、OS:ubuntu
、Webサーバ:Nginx
をインストールします。VagrantのBoxのOSがubuntu
なので、playbookにはNginxの記述のみです。
作業領域へ移動
windowsなのでgit bash
を使用して作業進めていきます。
作業領域は~/work/
とします。
1.$ cd ~/work/
Vagrantの環境をgitでもってくる
progre/template-vagrant
を使わせて頂きます!ありがとう!
今回OSはubuntu
です。
1.$ git clone https://github.com/progre/template-vagrant.git
template-vagrant/ansible
に移動
1.$ cd template-vagrant/ansible
playbook.yml
の用意
template-vagrant/ansible/playbook.yml
Nginx
をインストールするplaybook
です。
1.---
2.- hosts: 127.0.0.1
3. connection: local
4. sudo: yes
5. tasks:
6. - name: install nginx
7. apt: pkg=nginx update_cache=yes
hosts
の用意
template-vagrant/ansible/hosts
1.127.0.0.1 ansible_connection=local
provision.sh
の用意
template-vagrant/provision.sh
Vagrantのプロビジョニングで実行する処理を準備します。ansibleが入ってなかったらansibleをインストールして、その後、playbookを実行する流れです。
1.#!/usr/bin/env bash
2.
3.if ! [ `which ansible` ]; then
4. apt-get update -y
5. apt-get install -y ansible
6.fi
7.
8.ansible-playbook -i /vagrant/ansible/hosts /vagrant/ansible/playbook.yml
Vagarntfile
の用意
template-vagrant/Vagarntfile
1.Vagrant.configure("2") do |config|
2. config.vm.box = "ubuntu/trusty64"
3.
4. config.vm.network :private_network, ip: "192.168.20.0"
5. config.vm.provision "shell", :path => "provision.sh"
6. config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=775', 'fmode=664']
7.end
プロビジョニング
起動
時間かかります。upするだけでNginxのインストールまで実行。
1.$ vagrant up
2....
3....
4....
5.==> default: Fetched 593 kB in 1s (302 kB/s)
6.==> default: Selecting previously unselected package python-markupsafe.
7.==> default: (Reading database ... 62972 files and directories currently installed.)
8.==> default: Preparing to unpack .../python-markupsafe_0.18-1build2_amd64.deb ...
9.==> default: Unpacking python-markupsafe (0.18-1build2) ...
10.==> default: Selecting previously unselected package python-jinja2.
11.==> default: Preparing to unpack .../python-jinja2_2.7.2-2_all.deb ...
12.==> default: Unpacking python-jinja2 (2.7.2-2) ...
13.==> default: Selecting previously unselected package ansible.
14.==> default: Preparing to unpack .../ansible_1.5.4+dfsg-1_all.deb ...
15.==> default: Unpacking ansible (1.5.4+dfsg-1) ...
16.==> default: Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
17.==> default: Setting up python-markupsafe (0.18-1build2) ...
18.==> default: Setting up python-jinja2 (2.7.2-2) ...
19.==> default: Setting up ansible (1.5.4+dfsg-1) ...
20.==> default:
21.==> default: PLAY [127.0.0.1] **************************************************************
22.==> default:
23.==> default: GATHERING FACTS ***************************************************************
24.==> default: ok: [127.0.0.1]
25.==> default:
26.==> default: TASK: [install nginx] *********************************************************
27.==> default: changed: [127.0.0.1]
28.==> default:
29.==> default: PLAY RECAP ********************************************************************
30.==> default: 127.0.0.1 : ok=2 changed=1 unreachable=0 failed=0
確認
http://192.168.20.0/
にアクセスすると、Nginxの初期画面が表示される。
まとめ
今回使用したVagrantのBoxはubuntu/trusty64
だった。よくみたらこれには、ansibleを動かすのに必要なpython
が入っていたのでカンタンだった。。今後もっとplaybookを書いていこう。今回はubuntu
だったがCentOS
もできるので、VagrantのBoxはここで探すといいです。
ここ参考にさせて頂きました。