In my workflow I run `vagrant up --no-provision` to bring the machines up, then do some other stuff and, only then do I need to run the provisioner. But this "other stuff" I am doing actually need the ansible inventory to be present. Is there a proper way to generate the inventory? Right now, after the --no-provision step, I run vagrant provision passing it an ansible tag called "none" which does not exist in my playbooks.
if you make the ip address and hostname a ruby variable in the Vagrantfile, you can use the var ip_address to also fill the inventory file:
ip_address=”192.168.33.10″
hostname=”myhost”
inventory_file=”ansible/inventory”
…
config.vm.network “private_network”, ip: ip_address
config.vm.hostname = hostname
…
config.vm.provision “ansible” do |ansible|
File.write(inventory_file, “#{hostname} ansible_ssh_host=#{ip_address} ansible_ssh_port=22”)
…
edit: with a bit of ruby code the inventory_file will be filled at the moment of provisioning.
edit2: shorter code