diff --git a/.gitignore b/.gitignore index 1377554..9183973 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.swp +.vagrant diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..9b54625 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,40 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +require 'json' + +Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com') + +# Load ~/.VagrantFile if exist, permit local config provider +vagrantfile = File.join("#{Dir.home}", '.VagrantFile') +load File.expand_path(vagrantfile) if File.exists?(vagrantfile) + +Vagrant.configure('2') do |config| + config.vm.synced_folder '.', '/vagrant', type: "rsync", rsync__exclude: [ '.vagrant', '.git', 'build' ] + + templates = [] + + Dir.glob('./vars/*.json') do |item| + json = File.read("#{item}") + templates.push(JSON.parse(json)) + end + + templates.each do |template| + config.vm.define "#{template['box_name']}" do |node| + node.vm.hostname = "#{template['box_name']}-#{template['roles_version']}" + node.vm.box = "debian/stretch64" + node.vm.box_version = "#{template['debian_version']}" + + node.vm.provision "shell", path: "scripts/ansible_install_pip", env: { "ANSIBLE_VERSION" => "#{template['ansible_version']}" } + node.vm.provision "shell", path: "scripts/ansible_roles_galaxy", env: { "ROLES_VERSION" => "#{template['roles_version']}" } + + node.vm.provision "ansible_local" do |ansible| + ansible.playbook = "ansible/#{template['box_name']}.yml" + ansible.install = false + ansible.playbook_command = ". /tmp/venv/bin/activate && ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 ansible-playbook" + end + end + end + +end +