今回行うこと
前回は、ホスト側でansible2の実行環境の構築を行った。
今回は、 vagrantを使った仮想環境の構築と、ansibleによる最低限の初期化を行う。
なお、今回作成したファイルは
https://github.com/ak-ymst/vm_config
にあります。
Vagrantを使って仮想環境の準備
ansibleによるプロビジョニングに先駆けて、vagrantを使って仮想環境の構築を行う。
OSイメージはこちら(http://www.vagrantbox.es/)からCentOS7.1を貰ってきて使うことにした。
使用したVagrantfileは以下のとおり
Vagrant.configure("2") do |config|
config.vm.provider :virtualbox do |v|
v.name = "centos7.1"
v.customize ["modifyvm", :id, "--memory", 3072]
end
config.vm.box = "centos7.1"
config.vm.box_url = "https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box"
config.vm.network :private_network, ip: "192.168.33.100"
config.ssh.forward_agent = true
end
上記Vagrantfileを用意した上で次のコマンドを実行する。
$ vagrant up
コマンド終了後(初回時のみBOXのダウンロードに多少時間がかかる), sshでログインできることを確認する。
$ vagrant ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[vagrant@localhost ~]$
Ansibleの動作確認
まず、プロビジョニングが実行されるように、Vagrantfileに以下を追加。
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/playbook.yml"
ansible.inventory_path = "ansible/hosts"
ansible.limit = 'all'
end
ansible.inventory_pathはプロビジョニング対象ホストのリストを保存するファイル名で、内容は以下のとおり。
[vagrant-centos7.1]
192.168.33.100
playbookはプロビジョニングの実際の内容。
とりあえず、動作確認ということで、yumのupdateを行う。
ansible/playbook.yml
---
- hosts: all
become: true
roles:
- init
ansible/roles/init/tasks/main.yml
---
- name: yum update
become: yes
yum: name=* state=latest
そして、provision実行
$ vagrant provision
==> default: Running provisioner: ansible...
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.100]
TASK [init : yum update] *******************************************************
changed: [192.168.33.100]
PLAY RECAP *********************************************************************
192.168.33.100 : ok=2 changed=1 unreachable=0 failed=0
$
Timezoneの変更
CentOSのデフォルトのタイムゾーンはUTCとなっているので、これを日本時間に変更する。
[vagrant@vagrant-centos7 ~]$ date
2016年 2月 1日 月曜日 08:12:04 GMT
[vagrant@vagrant-centos7 ~]$ ll /etc/localtime
lrwxrwxrwx. 1 root root 35 11月 2 14:19 /etc/localtime -> ../usr/share/zoneinfo/Europe/London
以下をansible/roles/init/tasks/main.ymlに追加
- name: change timezone to Asia/Tokyo
become: yes
file: src=/usr/share/zoneinfo/Asia/Tokyo dest=/etc/localtime state=link force=true
そしてProvisionを再実行
$ vagrant provision
==> default: Running provisioner: ansible...
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.100]
TASK [init : yum update] *******************************************************
ok: [192.168.33.100]
TASK [init : change timezone to Asia/Tokyo] ************************************
changed: [192.168.33.100]
PLAY RECAP *********************************************************************
192.168.33.100 : ok=3 changed=1 unreachable=0 failed=0
$ vagrant ssh
Last login: Mon Feb 1 17:21:47 2016 from 192.168.33.1
[vagrant@vagrant-centos7 ~]$ date
2016年 2月 1日 月曜日 17:23:44 JST
[vagrant@vagrant-centos7 ~]$ ll /etc/localtime
lrwxrwxrwx 1 root root 30 2月 1 17:21 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
[vagrant@vagrant-centos7 ~]$
無事Timezoneが変更されたことが確認されたところで今回は終了。
次回は、httpd等のインストールを行っていきます。