Skip to content
Snippets Groups Projects
Unverified Commit 1e769b72 authored by Max Gautier's avatar Max Gautier
Browse files

Rework vagrant inventory handling + support for multiples inventories

The current way to handle a custom inventory in vagrant is a bit
hackish, copy files around and can break Vagrantfile parsing in
cornercase scenarios (removing vagrant inventories, or the inventory
copied into vagrant inventory).

Instead, simply pass additional inventories to the ansible-playbook
command lines as raw arguments with `-i`.
This also makes supporting multiples inventories trivial, so we add a
new `$inventories` variable for that purpose.
parent d54cfba6
No related branches found
No related tags found
No related merge requests found
...@@ -55,6 +55,8 @@ $subnet ||= "172.18.8" ...@@ -55,6 +55,8 @@ $subnet ||= "172.18.8"
$subnet_ipv6 ||= "fd3c:b398:0698:0756" $subnet_ipv6 ||= "fd3c:b398:0698:0756"
$os ||= "ubuntu2004" $os ||= "ubuntu2004"
$network_plugin ||= "flannel" $network_plugin ||= "flannel"
$inventory ||= "inventory/sample"
$inventories ||= [$inventory]
# Setting multi_networking to true will install Multus: https://github.com/k8snetworkplumbingwg/multus-cni # Setting multi_networking to true will install Multus: https://github.com/k8snetworkplumbingwg/multus-cni
$multi_networking ||= "False" $multi_networking ||= "False"
$download_run_once ||= "True" $download_run_once ||= "True"
...@@ -93,19 +95,6 @@ if ! SUPPORTED_OS.key?($os) ...@@ -93,19 +95,6 @@ if ! SUPPORTED_OS.key?($os)
end end
$box = SUPPORTED_OS[$os][:box] $box = SUPPORTED_OS[$os][:box]
# if $inventory is not set, try to use example
$inventory = "inventory/sample" if ! $inventory
$inventory = File.absolute_path($inventory, File.dirname(__FILE__))
# if $inventory has a hosts.ini file use it, otherwise copy over
# vars etc to where vagrant expects dynamic inventory to be
if ! File.exist?(File.join(File.dirname($inventory), "hosts.ini"))
$vagrant_ansible = File.join(File.absolute_path($vagrant_dir), "provisioners", "ansible")
FileUtils.mkdir_p($vagrant_ansible) if ! File.exist?($vagrant_ansible)
$vagrant_inventory = File.join($vagrant_ansible,"inventory")
FileUtils.rm_f($vagrant_inventory)
FileUtils.ln_s($inventory, $vagrant_inventory)
end
if Vagrant.has_plugin?("vagrant-proxyconf") if Vagrant.has_plugin?("vagrant-proxyconf")
$no_proxy = ENV['NO_PROXY'] || ENV['no_proxy'] || "127.0.0.1,localhost" $no_proxy = ENV['NO_PROXY'] || ENV['no_proxy'] || "127.0.0.1,localhost"
...@@ -286,14 +275,13 @@ Vagrant.configure("2") do |config| ...@@ -286,14 +275,13 @@ Vagrant.configure("2") do |config|
ansible.playbook = $playbook ansible.playbook = $playbook
ansible.compatibility_mode = "2.0" ansible.compatibility_mode = "2.0"
ansible.verbose = $ansible_verbosity ansible.verbose = $ansible_verbosity
$ansible_inventory_path = File.join( $inventory, "hosts.ini")
if File.exist?($ansible_inventory_path)
ansible.inventory_path = $ansible_inventory_path
end
ansible.become = true ansible.become = true
ansible.limit = "all,localhost" ansible.limit = "all,localhost"
ansible.host_key_checking = false ansible.host_key_checking = false
ansible.raw_arguments = ["--forks=#{$num_instances}", "--flush-cache", "-e ansible_become_pass=vagrant"] ansible.raw_arguments = ["--forks=#{$num_instances}",
"--flush-cache",
"-e ansible_become_pass=vagrant"] +
$inventories.map {|inv| ["-i", inv]}.flatten
ansible.host_vars = host_vars ansible.host_vars = host_vars
ansible.extra_vars = $extra_vars ansible.extra_vars = $extra_vars
if $ansible_tags != "" if $ansible_tags != ""
......
...@@ -35,7 +35,8 @@ cleanup-packet: ...@@ -35,7 +35,8 @@ cleanup-packet:
create-vagrant: create-vagrant:
vagrant up vagrant up
cp $(CI_PROJECT_DIR)/inventory/sample/vagrant_ansible_inventory $(INVENTORY) cp $(CI_PROJECT_DIR)/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory $(INVENTORY)
delete-vagrant: delete-vagrant:
vagrant destroy -f vagrant destroy -f
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment