facts/Vagrantfile in simp-rspec-puppet-facts-1.4.1 vs facts/Vagrantfile in simp-rspec-puppet-facts-2.0.0
- old
+ new
@@ -1,44 +1,166 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
-VAGRANTFILE_API_VERSION = "2"
+VAGRANTFILE_API_VERSION = '2'
+# Used with google provider unless ENV['GOOGLE_ZONE'] is set
+DEFAULT_GOOGLE_ZONE = 'us-east1-b'
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+ config.vm.hostname = 'foo.example.com'
- config.vm.hostname = "foo.example.com"
- config.vm.define "redhat-6-x86_64" do |host|
- host.vm.box = "anandbitra/redhat-6.5"
- host.vm.provision "file", source: "Gemfile", destination: "Gemfile"
- host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'redhat 6'"
- host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no'
+ config.vm.provider 'virtualbox' do |vb|
+ # centos/* boxes don't install vbox guest additions
+ unless Vagrant.has_plugin?('vagrant-vbguest')
+ msg = 'ERROR: plugin `vagrant-vbguest` is missing. To fix, run:' +
+ "\n\n\tvagrant plugin install vagrant-vbguest\n\n"
+ warn msg unless @_msg
+ @_msg = msg
+ exit 99
+ end
end
- config.vm.define "redhat-7-x86_64" do |host|
- host.vm.box = "mrlesmithjr/rhel-7"
- host.vm.provision "file", source: "Gemfile", destination: "Gemfile"
- host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'redhat 7'"
- host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no'
+ # 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
+ # (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
+
+ # 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
+
+ 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
- config.vm.define "centos-6-x86_64" do |host|
- host.vm.box = "puppetlabs/centos-6.6-64-nocm"
- 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'
+
+ # 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.
+ #
+ # Some providers' images (e.g., Google) already have RHEL subscriptions.
+ # However, if yours doesn't (ex: virtualbox), you can install the vagrant
+ # plugin `vagrant-registration` and set the RHEL_SUB_* environment variables
+ # below:
+ if Vagrant.has_plugin?('vagrant-registration')
+ if ENV['RHEL_SUB_USERNAME'] && ENV['RHEL_SUB_PASSWORD']
+ ENV['RHEL'] = 'yes'
+ config.registration.username = ENV['RHEL_SUB_USERNAME']
+ config.registration.password = ENV['RHEL_SUB_PASSWORD']
+ elsif ENV['RHEL_SUB_ORG'] && ENV['RHEL_SUB_ACTIVATIONKEY']
+ ENV['RHEL'] = 'yes'
+ config.registration.org = ENV['RHEL_SUB_ORG']
+ config.registration.activationkey = ENV['RHEL_SUB_ACTIVATIONKEY']
+ end
end
- config.vm.define "centos-7-x86_64" do |host|
- host.vm.box = "puppetlabs/centos-7.0-64-nocm"
- 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'
+ # 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'
+### config.vm.define "centos-6-x86_64" do |host|
+### host.vm.provider 'virtualbox' do |vb,override|
+### vb.vm.box = "centos/6"
+### 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 = 'centos-6-v20170717'
+### end
+### 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
+
+ config.vm.define "centos-7-x86_64" do |host|
+ host.vm.provider 'virtualbox' do |vb,override|
+ vb.vm.box = "centos/7"
+ 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 = 'centos-7-v20170719'
+ end
+ 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
- config.vm.define "fedora-23-x86_64" do |host|
- host.vm.box = "box-cutter/fedora23"
- host.vm.provision "file", source: "Gemfile", destination: "Gemfile"
- host.vm.provision "shell", path: "scripts/get_facts_for_each_facter.sh", args: "'fedora 23'"
- host.vm.provision "shell", inline: "/sbin/shutdown -h now" unless ENV['SHUTDOWN'] == 'no'
+ if ENV['RHEL'] == 'yes'
+ config.vm.define "redhat-6-x86_64" do |host|
+ os = 'redhat'
+ ver = '6'
+ if Vagrant.has_plugin?('vagrant-rsync-back')
+ config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git/", ".idea/"], args: ['--verbose', '--archive', '--delete', '-z', '--prune-empty-dirs', "--include='*/'", "--include='#{os}-#{ver}-x86_64.facts'", "--exclude='*'"]
+ end
+
+ config.vm.provider 'virtualbox' do |vb|
+ vb.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'
+ 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
+
+ config.vm.define "redhat-7-x86_64" do |host|
+ os = 'redhat'
+ ver = '7'
+ if Vagrant.has_plugin?('vagrant-rsync-back')
+ config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git/", ".idea/"], args: ['--verbose', '--archive', '--delete', '-z', '--prune-empty-dirs', "--include='*/'", "--include='#{os}-#{ver}-x86_64.facts'", "--exclude='*'"]
+ end
+
+ host.vm.provider 'virtualbox' do |vb,override|
+ vb.vm.box = "mrlesmithjr/rhel-7"
+ 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-7-v20170719'
+ 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