はじめに
Ansible実行をVagrantから行うための設定方法のメモです
参考: Vagrant公式ドキュメント
分けて起動する場合
$ vagrant up
$ ansible-playbook -i hosts site.yml --sudo -k
※ -i
: Inventoryファイルを指定する
※ hosts
: Inventoryファイル
※ site.yml
: play-bookファイル
※ -k
オプション: SSH のパスワードを尋ねる(プロンプトが出る)
Vagrantから直接プロビジョニングする場合
Ansible用プロビジョニング設定をVagrantfile
へ
Vagrant.configure(2) do |config|
config.vm.define "web" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "web"
node.vm.network :private_network, ip: "192.168.33.40"
end
config.vm.define "dbserver" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "dbserver"
node.vm.network :private_network, ip: "192.168.33.41"
end
#
# Run Ansible from the Vagrant Host
#
config.vm.provision "ansible" do |ansible|
ansible.ask_sudo_pass = true
ansible.playbook = "site.yml"
ansible.groups = {
"group1" => ["web"]
"group2" => ["dbserver"]
}
end
end
-
ansible.ask_sudo_pass = true
により-k
オプションと同等 -
ansible.playbook = "site.yml"
によりplay-bookファイルを指定- currentディレクトリのからパスで指定する
-
ansible.group
によりInventoryファイルにおけるグループを作成- 上記の例では実行により
.vagrant/provisioners/ansible/inventory/
ディレクトリ上にvagrant_ansible_inventory
というInventoryファイルが以下のように作成される
- 上記の例では実行により
# Generated by Vagrant
web ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
dbserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
[group1]
web
[group2]
dbserver
Vagrantでのgroup名、host名をAnsibleでのコンポーネントのものと一致させる
実行
$ vagrant up/reload --provision
$ vagrant provision