Vagrant

Windows7でAnsible+Vagrantを使ってubuntu+Nginx環境構築

ansible_logo
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

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の初期画面が表示される。
welcome-to-nginx

まとめ

今回使用したVagrantのBoxはubuntu/trusty64だった。よくみたらこれには、ansibleを動かすのに必要なpythonが入っていたのでカンタンだった。。今後もっとplaybookを書いていこう。今回はubuntuだったがCentOSもできるので、VagrantのBoxはここで探すといいです。

参考サイト:
AnsibleをゲストOSに押し込んでVagrant環境構築する

ここ参考にさせて頂きました。

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました