Search on the blog

2016年10月1日土曜日

Vagrant + VirtualBox + Ansible

 Ansible簡単で便利なので使った方がいいよーと勧められたので試してみた。

各ソフトウェアの説明
  • Vagrant
    • 仮想環境構築ソフトウェア
    • 設定ファイルを記述することで、仮想環境の構築・設定を自動化できる
  • VirtualBox
    • 仮想化ソフトウェア
    • あるOS上で別のOSを動かすことができる
  • Ansible
    • 構成管理ツール
    • サーバのプロビジョニングを効率化できる

各ソフトウェアのインストール

サンプル
Ubuntuを入れて、nginxをインストールして、nginxを起動するという流れをVagrant + VirtualBox + Ansibleでやってみた。

サンプルは以下のバージョンで動作確認を行った。
  • Vagrant 1.8.6
  • VirtualBox 5.1.6
  • Ansible 2.0.2.0
Ubuntu 14.04のboxを追加
$ vagrant box add ubuntu14.04 \
https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
$ vagrant box list
ubuntu14.04 (virtualbox, 0)

Vagrantfileのテンプレート作成
適当な作業ディレクトリを作成してcdする。
vagrant initすると、Vagrantfileが自動生成される。
$ mkdir ansible_sample
$ cd ansible_sample
$ vagrant init

Vagrantfileの編集
テンプレートを編集して以下を記述する。
config.vm.box = "ubuntu14.04"
config.vm.network "private_network", ip: "192.168.33.10"

config.vm.provision "ansible" do |ansible|
  ansible.playbook = "provisioning/playbook.yml"
  ansible.inventory_path = "provisioning/hosts"
  ansible.limit = 'sample'
end

inventory fileの編集
inventory fileはAnsibleの管理対象を定義するファイル。
今回の場合はUbuntuのVMなのでそのIPアドレスを書いておく。
[sample]のところは好きな名前でよい。
$ mkdir provisioning
$ emacs provisioning/hosts
[sample]
192.168.33.10

playbook作成
hostsにはinventory fileで定義した名前を書く。
become: yesはsudo実行の意味。
$ emacs provisioning/playbook.yml
---
- hosts: sample
  become: yes
  user: vagrant 
  tasks:      
    - name: install nginx
      apt: name=nginx update_cache=yes
    - name: restart nginx
      service: name=nginx state=restarted

実行
実行前にディレクトリ構造が以下のようになっていることを確認。
$ tree
.
├── Vagrantfile
└── provisioning
    ├── hosts
    └── playbook.yml

問題なければ、VMを起動&プロビジョン実施。
$ vagrant up
$ vagrant provision

確認
ゲストOSにsshしてservice statusを調べる。
$ vagrant ssh
vagrant@vagrant-ubuntu-trusty-64:~$ service nginx status
 * nginx is running

ホストOSからcurlしてみる。
$ curl 192.168.33.10 
Welcome to nginx!の文字が表示されればOK。

0 件のコメント:

コメントを投稿