ドットインストールのAnsible入門の学習メモ
公式サイト
vagrantでcentos環境を構築する
###その前に、vagrantとは・・
vagrantとは、Vagrant1.6のDocker providerを読んでみるに、vagrantとは仮装マシン(virtualbox、AWS..)を操作するためのTool(=interfaceを提供)のようだ。対象レイヤーは、CPU、メモリといったところから、OS、ミドルウェアもプロビジョニングできるのかもしれない。実際は、OSくらいまでで、それ以降はansibleのような構成管理ツールに任せることになるのだろう。Dockerを組み合わせた場合は、Vagrant上のOSがDocker HostOSになってコンテナを動かすことになる。これはリンクの後者の方に該当。
Mac OSにvagrantをインストールする
brewでインストールする
% brew install caskroom/cask/brew-cask
% brew cask install vagrant
vagrantのセットアップ
% vagrant init chef/centos-6.5
Vagrantfileを編集して、host
、web
、db
の3台構成にする。
17 config.vm.define "host" do |node|
18 node.vm.box = "chef/centos-6.5"
19 node.vm.hostname = "host"
20 node.vm.network :private_network, ip: "192.168.43.51"
21 end
22
23 config.vm.define "web" do |node|
24 node.vm.box = "chef/centos-6.5"
25 node.vm.hostname = "web"
26 node.vm.network :private_network, ip: "192.168.43.52"
27 end
28
29 config.vm.define "db" do |node|
30 node.vm.box = "chef/centos-6.5"
31 node.vm.hostname = "db"
32 node.vm.network :private_network, ip: "192.168.43.53"
33 end
% vagrant up
% vagrant status
Current machine states:
host running (virtualbox)
web running (virtualbox)
db running (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
ansibleを導入
hostへアクセス
% vagrant ssh host
[vagrant@host ~]$ wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
[vagrant@host ~]$ sudo rpm -ivh epel-release-6-8.noarch.rpm
警告: epel-release-6-8.noarch.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中... ########################################### [100%]
1:epel-release ########################################### [100%]
[vagrant@host ~]$ sudo yum -y install ansible
[vagrant@host ~]$ ansible --version
ansible 1.9.0.1
configured module search path = None
sshでHostからWeb,DBへアクセスできるようにする
鍵認証を設定
[vagrant@host ~]$ cat ~/.ssh/config
Host web
HostName 192.168.43.52
Host db
HostName 192.168.43.53
[vagrant@host ~]$ ssh-keygen -t rsa
[vagrant@host ~]$ ssh-copy-id web
[vagrant@host ~]$ ssh-copy-id db
ansibleを使ってみよう
[vagrant@host ~]$ ansible all -i hosts -m ping
192.168.43.53 | success >> {
"changed": false,
"ping": "pong"
}
192.168.43.52 | success >> {
"changed": false,
"ping": "pong"
}
[vagrant@host ~]$ cat hosts
[web]
192.168.43.52
[db]
192.168.43.53
ansible.cfgをセットしてみる
[vagrant@host ~]$ cat ansible.cfg
[defaults]
hostfile = ./hosts
[vagrant@host ~]$ ansible all -m ping
192.168.43.52 | success >> {
"changed": false,
"ping": "pong"
}
192.168.43.53 | success >> {
"changed": false,
"ping": "pong"
}
playbookを作ってみる
[vagrant@host ~]$ ansible-playbook playbook.yml
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.43.52]
ok: [192.168.43.53]
TASK: [add a new user] ********************************************************
changed: [192.168.43.53]
changed: [192.168.43.52]
PLAY RECAP ********************************************************************
192.168.43.52 : ok=2 changed=1 unreachable=0 failed=0
192.168.43.53 : ok=2 changed=1 unreachable=0 failed=0
[vagrant@host ~]$ ansible-playbook playbook.yml
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.43.52]
ok: [192.168.43.53]
TASK: [add a new user] ********************************************************
ok: [192.168.43.53]
ok: [192.168.43.52]
PLAY RECAP ********************************************************************
192.168.43.52 : ok=2 changed=0 unreachable=0 failed=0
192.168.43.53 : ok=2 changed=0 unreachable=0 failed=0
[vagrant@host ~]$ cat playbook.yml
---
- hosts: all
sudo: yes
tasks:
- name: add a new user
user: name=osamunmun
Module Index
ここを見て、どういうモジュールがあるか、またそのインタフェース仕様を確認できる。
playbookの実行オプション
[vagrant@host ~]$ ansible-playbook playbook.yml --syntax-check
playbook: playbook.yml
[vagrant@host ~]$ ansible-playbook playbook.yml --list-task
playbook: playbook.yml
play #1 (all): TAGS: []
add a new user TAGS: []
[vagrant@host ~]$ ansible-playbook playbook.yml --check
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.43.52]
ok: [192.168.43.53]
TASK: [add a new user] ********************************************************
changed: [192.168.43.52]
changed: [192.168.43.53]
PLAY RECAP ********************************************************************
192.168.43.52 : ok=2 changed=1 unreachable=0 failed=0
192.168.43.53 : ok=2 changed=1 unreachable=0 failed=0