かべぎわブログ

ブログです

VagrantでAnsibleプロビジョニングする

以下のようなVagrantfileを利用する。
config.vm.provisionでansibleをえらんであげればOK
この場合はVagrantfileと同一ディレクトリにあるplaybook.ymlを実行してくれる。

Vagrant.configure("2") do |config|
  config.vm.network "private_network", type: "dhcp"

  config.vm.define "test-php" do |php|
    php.vm.box = "ubuntu/focal64"
    php.vm.define "test-php"
    php.vm.hostname = "test-php"
  end

  config.vm.provision "ansible" do |ansible|
    ansible.version = "latest"
    ansible.playbook = "playbook.yml"
    ansible.verbose = "v"
  end
end

AnsibleのインベントリファイルはVagrantが自動生成してくれて、ローカルの.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventoryに格納される。

自動生成されるインベントリファイルの例は以下のとおり。

# Generated by Vagrant

test-php ansible_host=127.0.0.1 ansible_port=2200 ansible_user='vagrant' ansible_ssh_private_key_file='/Users/kabegiwa/vagrant/test_php/.vagrant/machines/php-test/virtualbox/private_key'

config.vm.defineで定義した名前でインベントリには登録されます。
なので以下のようなかんじでplaybookはつくってあげます。

---
- name: setup virtual machine
  hosts: test-php
  roles:
    - role: php

そしてvagrant upなりvagrant provisionなりしてあげればAnsibleでのプロビジョニングが実行されます。

参考にしたページ

https://www.vagrantup.com/docs/provisioning/ansible