以下のような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でのプロビジョニングが実行されます。