facts/Vagrantfile in simp-rspec-puppet-facts-2.0.1 vs facts/Vagrantfile in simp-rspec-puppet-facts-2.1.0

- old
+ new

@@ -1,17 +1,44 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - - # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = '2' # Used with google provider unless ENV['GOOGLE_ZONE'] is set DEFAULT_GOOGLE_ZONE = 'us-east1-b' VM_FQDN = 'foo.example.com' +GOOGLE_PROJECT_ID = ENV.fetch('GOOGLE_CLOUD_PROJECT_ID', nil) + +unless GOOGLE_PROJECT_ID + $stderr.puts("Warning: GOOGLE_CLOUD_PROJECT_ID not set, will not use GCE") +end + +VALID_OS_TYPES = [ + 'CENTOS', + 'OEL', + 'RHEL' +] + +found_os = false + +VALID_OS_TYPES.each do |os| + if ENV.fetch(os, nil) + found_os = true + break + end +end + +unless found_os + $stderr.puts("Error: You must set one of ['#{VALID_OS_TYPES.join(', ')}'] as an environment variable to 'yes'") + exit 1 +end + +if Dir.glob('modules/*').empty? + $stderr.puts('No modules found in the "modules" directory. Hit ^C to exit or Enter to proceed.') + $stdin.gets +end + Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.hostname = VM_FQDN config.vm.provider 'virtualbox' do |vb| # centos/* boxes don't install vbox guest additions @@ -22,48 +49,49 @@ @_msg = msg exit 99 end end - # Reference: https://github.com/mitchellh/vagrant-google#configuration - config.vm.provider 'google' do |google, override| + if GOOGLE_PROJECT_ID + # Reference: https://github.com/mitchellh/vagrant-google#configuration + config.vm.provider 'google' do |google, override| - # The Client Email address for your Service Account - google.google_project_id = ENV.fetch('GOOGLE_CLOUD_PROJECT_ID') + # The Client Email address for your Service Account + google.google_project_id = ENV.fetch('GOOGLE_CLOUD_PROJECT_ID') - # The Client Email address for your Service Account - # (it should end with gserviceaccount.com) - google.google_client_email = ENV.fetch('GOOGLE_CLIENT_EMAIL') + # The Client Email address for your Service Account + # (it should end with gserviceaccount.com) + google.google_client_email = ENV.fetch('GOOGLE_CLIENT_EMAIL') - if ENV.key? 'GOOGLE_KEY_LOCATION' - # The location of the P12 private key file matching your Service Account. - google.google__key_location = ENV['GOOGLE_KEY_LOCATION'] - else - # The location of the JSON private key file matching your Service Account. - # "/path/to/your/private-key.json" - google.google_json_key_location = ENV.fetch('GOOGLE_JSON_KEY_LOCATION') - end + if ENV.key? 'GOOGLE_KEY_LOCATION' + # The location of the P12 private key file matching your Service Account. + google.google__key_location = ENV['GOOGLE_KEY_LOCATION'] + else + # The location of the JSON private key file matching your Service Account. + # "/path/to/your/private-key.json" + google.google_json_key_location = ENV.fetch('GOOGLE_JSON_KEY_LOCATION') + end - # The zone name where the instance will be created. - # Make sure to set this to trigger the zone_config - google.zone = _zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) + # The zone name where the instance will be created. + # Make sure to set this to trigger the zone_config + google.zone = _zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) - google.zone_config _zone do |zone| - # zone.name = 'vagrant-rspec-puppet-facts' - zone.machine_type = ENV['GOOGLE_MACHINE_TYPE'] || 'g1-small' - zone.zone = _zone - zone.metadata = {'custom' => 'metadata', 'testing' => 'foobarbaz'} - zone.scopes = ['monitoring', 'https://www.googleapis.com/auth/compute'] - zone.tags = ['vagrant', 'simp-rspec-puppet-facts', 'temporary'] - end + google.zone_config _zone do |zone| + # zone.name = 'vagrant-rspec-puppet-facts' + zone.machine_type = ENV['GOOGLE_MACHINE_TYPE'] || 'g1-small' + zone.zone = _zone + zone.metadata = {'custom' => 'metadata', 'testing' => 'foobarbaz'} + zone.scopes = ['monitoring', 'https://www.googleapis.com/auth/compute'] + zone.tags = ['vagrant', 'simp-rspec-puppet-facts', 'temporary'] + end - override.ssh.username = ENV.fetch('GOOGLE_SSH_USERNAME') - override.ssh.private_key_path = ENV.fetch('GOOGLE_SSH_KEY', '~/.ssh/id_rsa') - override.vm.box = 'google/gce' + override.ssh.username = ENV.fetch('GOOGLE_SSH_USERNAME') + override.ssh.private_key_path = ENV.fetch('GOOGLE_SSH_KEY', '~/.ssh/id_rsa') + override.vm.box = 'google/gce' + end end - # Optional: RHEL subscription information # # A licensed RHEL subscription is required to use yum to configure VMs, and # yum is needed to sey up the environment to collect most SIMP facter facts. # @@ -85,46 +113,72 @@ # The centos/* machines won't support vboxsf # config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: ['.git/'] config.vm.synced_folder ".", "/vagrant", type: "virtualbox" - unless ENV['CENTOS'] == 'no' + if ENV['CENTOS'] == 'yes' config.vm.define "centos-6-x86_64" do |host| host.vm.provider 'virtualbox' do |vb,override| override.vm.box = "centos/6" end - host.vm.provider 'google' do |google,override| - google.name = 'foo-centos6-64' - google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) - google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| - zone.image = 'centos-6-v20170717' + + if GOOGLE_PROJECT_ID + host.vm.provider 'google' do |google,override| + google.name = 'foo-centos6-64' + google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) + google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| + zone.image = 'centos-6-v20170717' + end end -# override.vm.provision 'shell', inline: "/use/bin/hostname #{VM_FQDN}" end + host.vm.provision "file", source: "Gemfile", destination: "Gemfile" host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'centos 6'" host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no' end config.vm.define "centos-7-x86_64" do |host| host.vm.provider 'virtualbox' do |vb,override| override.vm.box = "centos/7" end - host.vm.provider 'google' do |google,override| - google.name = 'foo-centos7-64' - google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) - google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| - zone.image = 'centos-7-v20170719' + + if GOOGLE_PROJECT_ID + host.vm.provider 'google' do |google,override| + google.name = 'foo-centos7-64' + google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) + google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| + zone.image = 'centos-7-v20170719' + end end - # override.vm.provision 'shell', inline: "/usr/bin/hostnamectl set-hostname #{VM_FQDN}" end + host.vm.provision "file", source: "Gemfile", destination: "Gemfile" host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'centos 7'" host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no' end end + if ENV['OEL'] == 'yes' + config.vm.define "oel-6-x86_64" do |host| + host.vm.provider 'virtualbox' do |vb,override| + override.vm.box = "elastic/oel-6-x86_64" + end + host.vm.provision "file", source: "Gemfile", destination: "Gemfile" + host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'centos 6'" + host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no' + end + + config.vm.define "oel-7-x86_64" do |host| + host.vm.provider 'virtualbox' do |vb,override| + override.vm.box = "elastic/oel-7-x86_64" + end + host.vm.provision "file", source: "Gemfile", destination: "Gemfile" + host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'centos 7'" + host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no' + end + end + if ENV['RHEL'] == 'yes' config.vm.define "redhat-6-x86_64" do |host| os = 'redhat' ver = '6' if Vagrant.has_plugin?('vagrant-rsync-back') @@ -133,14 +187,16 @@ config.vm.provider 'virtualbox' do |vb,override| override.vm.box = "anandbitra/redhat-6.5" end - host.vm.provider 'google' do |google,override| - google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) - google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| - zone.image = 'rhel-6-v20170717' + if GOOGLE_PROJECT_ID + host.vm.provider 'google' do |google,override| + google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) + google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| + zone.image = 'rhel-6-v20170717' + end end end host.vm.provision "file", source: "Gemfile", destination: "Gemfile" host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'#{os} #{ver}'" @@ -156,19 +212,25 @@ end host.vm.provider 'virtualbox' do |vb,override| override.vm.box = "mrlesmithjr/rhel-7" end - host.vm.provider 'google' do |google,override| - # google.name = 'foo' - google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) - google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| - zone.image = 'rhel-7-v20170719' + + if GOOGLE_PROJECT_ID + host.vm.provider 'google' do |google,override| + # google.name = 'foo' + google.zone = ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) + google.zone_config ENV.fetch('GOOGLE_ZONE', DEFAULT_GOOGLE_ZONE) do |zone| + zone.image = 'rhel-7-v20170719' + end end end + host.vm.provision "file", source: "Gemfile", destination: "Gemfile" host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'#{os} #{ver}'" host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no' end - end end + +# -*- mode: ruby -*- +# vi: set ft=ruby :