Changeset View
Changeset View
Standalone View
Standalone View
Vagrantfile
Show All 34 Lines | |||||
ENV_PRODUCTION = "production" | ENV_PRODUCTION = "production" | ||||
ENV_STAGING = "staging" | ENV_STAGING = "staging" | ||||
ENVIRONMENT_FACTS = { | ENVIRONMENT_FACTS = { | ||||
ENV_ADMIN => { | ENV_ADMIN => { | ||||
"vagrant_testing" => "1", | "vagrant_testing" => "1", | ||||
"testing" => "vagrant", | "testing" => "vagrant", | ||||
"deployment" => ENV_ADMIN, | "deployment" => ENV_ADMIN, | ||||
"subnet" => "vagrant" | "subnet" => "vagrant", | ||||
"environment" => ENV_PRODUCTION, | |||||
}, | }, | ||||
ENV_PRODUCTION => { | ENV_PRODUCTION => { | ||||
"vagrant_testing" => "1", | "vagrant_testing" => "1", | ||||
"testing" => "vagrant", | "testing" => "vagrant", | ||||
"deployment" => ENV_PRODUCTION, | "deployment" => ENV_PRODUCTION, | ||||
"subnet" => "vagrant", | "subnet" => "vagrant", | ||||
"puppet_vardir" => "/var/lib/puppet" | "puppet_vardir" => "/var/lib/puppet", | ||||
"environment" => ENV_PRODUCTION, | |||||
}, | }, | ||||
ENV_STAGING => { | ENV_STAGING => { | ||||
"vagrant_testing" => "1", | "vagrant_testing" => "1", | ||||
"testing" => "vagrant", | "testing" => "vagrant", | ||||
"deployment" => ENV_STAGING, | "deployment" => ENV_STAGING, | ||||
"subnet" => "vagrant" | "subnet" => "vagrant", | ||||
"environment" => ENV_STAGING, | |||||
}, | }, | ||||
} | } | ||||
vms = { | vms = { | ||||
################ | ################ | ||||
# STAGING | # STAGING | ||||
################ | ################ | ||||
"staging-webapp" => { | "staging-webapp" => { | ||||
▲ Show 20 Lines • Show All 340 Lines • ▼ Show 20 Lines | "test-bullseye" => { | ||||
:box => $global_debian11_box, | :box => $global_debian11_box, | ||||
:box_url => $global_debian11_box_url, | :box_url => $global_debian11_box_url, | ||||
}, | }, | ||||
} | } | ||||
Vagrant.configure("2") do |global_config| | Vagrant.configure("2") do |global_config| | ||||
vms.each do | vm_name, vm_props | | vms.each do | vm_name, vm_props | | ||||
global_config.vm.define vm_name do |config| | global_config.vm.define vm_name do |config| | ||||
_environment = vm_props[:environment] | _environment_name = vm_props[:environment] | ||||
_facts = ENVIRONMENT_FACTS[_environment] | _vm_facts = ENVIRONMENT_FACTS[_environment_name] | ||||
_mount_point_puppet = vm_props[:type] == TYPE_MASTER ? "/etc/puppet/code" : "/tmp/puppet" | _mount_point_puppet = vm_props[:type] == TYPE_MASTER ? "/etc/puppet/code" : "/tmp/puppet" | ||||
# config.ssh.insert_key = false | # config.ssh.insert_key = false | ||||
config.vm.box = vm_props[:box] ? vm_props[:box] : $global_debian10_box | config.vm.box = vm_props[:box] ? vm_props[:box] : $global_debian10_box | ||||
config.vm.box_url = vm_props[:box_url] ? vm_props[:box_url] : $global_debian10_box_url | config.vm.box_url = vm_props[:box_url] ? vm_props[:box_url] : $global_debian10_box_url | ||||
config.vm.box_check_update = false | config.vm.box_check_update = false | ||||
config.vm.hostname = vm_props[:hostname] | config.vm.hostname = vm_props[:hostname] | ||||
config.vm.network :private_network, ip: vm_props[:ip], netmask: "255.255.0.0" | config.vm.network :private_network, ip: vm_props[:ip], netmask: "255.255.0.0" | ||||
Show All 13 Lines | vms.each do | vm_name, vm_props | | ||||
provider.cpus = vm_props[:cpus] | provider.cpus = vm_props[:cpus] | ||||
# local test run: https://github.com/vagrant-libvirt/vagrant-libvirt/issues/45 | # local test run: https://github.com/vagrant-libvirt/vagrant-libvirt/issues/45 | ||||
provider.driver = 'kvm' | provider.driver = 'kvm' | ||||
end | end | ||||
# installs fact for `puppet agent --test` cli to work within the vm | # installs fact for `puppet agent --test` cli to work within the vm | ||||
config.vm.provision :shell do |s| | config.vm.provision :shell do |s| | ||||
s.path = install_facts_script_path | s.path = install_facts_script_path | ||||
s.args = [ | s.args = [ | ||||
_facts["deployment"], | _vm_facts["deployment"], | ||||
_facts["subnet"] | _vm_facts["subnet"] | ||||
] | ] | ||||
end | end | ||||
if vm_props[:type] == TYPE_MASTER | if vm_props[:type] == TYPE_MASTER | ||||
config.vm.provision "file", source: "vagrant/puppet_master/", destination: "/tmp/" | config.vm.provision "file", source: "vagrant/puppet_master/", destination: "/tmp/" | ||||
config.vm.provision :shell, :path => "vagrant/puppet_master/prepare_puppet_master.sh" | config.vm.provision :shell, :path => "vagrant/puppet_master/prepare_puppet_master.sh" | ||||
end | end | ||||
config.vm.provision "puppet" do |puppet| | config.vm.provision "puppet" do |puppet| | ||||
puppet.environment = _environment | puppet.environment = _vm_facts["environment"] | ||||
if vm_props[:type] == TYPE_AGENT | if vm_props[:type] == TYPE_AGENT | ||||
puppet.environment_path = "#{environment_path}" | puppet.environment_path = "#{environment_path}" | ||||
puppet.hiera_config_path = "#{puppet.environment_path}/#{puppet.environment}/hiera.yaml" | puppet.hiera_config_path = "#{puppet.environment_path}/#{puppet.environment}/hiera.yaml" | ||||
end | end | ||||
puppet.manifest_file = "#{manifest_file}" | puppet.manifest_file = "#{manifest_file}" | ||||
puppet.manifests_path = "#{manifests_path}" | puppet.manifests_path = "#{manifests_path}" | ||||
puppet.options = "#{puppet_options}" | puppet.options = "#{puppet_options}" | ||||
puppet.facter = _facts | puppet.facter = _vm_facts | ||||
# Dont use nfs mount as the nfs_version can't be | # Dont use nfs mount as the nfs_version can't be | ||||
# specified. The default is nfsv3 and udp which is not | # specified. The default is nfsv3 and udp which is not | ||||
# supported by the debian 11 kernel | # supported by the debian 11 kernel | ||||
end | end | ||||
end | end | ||||
end | end | ||||
end | end |