# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = '2' Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.hostname = 'foo.example.com' config.vm.provider 'virtualbox' do |v| v.gui = false end config.vm.define 'debian-10-x86_64' do |host| host.vm.box = 'debian/contrib-buster64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'debian-11-x86_64' do |host| host.vm.box = 'boxomatic/debian-11' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'debian-12-x86_64' do |host| host.vm.box = 'boxomatic/debian-12' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'linuxmint-19-x86_64' do |host| host.vm.box = 'ltsp/linuxmint-19.1-cinnamon-64bit' host.vm.provision 'shell', inline: 'export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y ruby ruby-dev libc6-dev' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'ubuntu-18.04-x86_64' do |host| host.vm.box = 'ubuntu/bionic64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'ubuntu-20.04-x86_64' do |host| host.vm.box = 'ubuntu/focal64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'ubuntu-21.04-x86_64' do |host| host.vm.box = 'ubuntu/hirsute64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'ubuntu-21.10-x86_64' do |host| host.vm.box = 'ubuntu/impish64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'ubuntu-22.04-x86_64' do |host| host.vm.box = 'ubuntu/jammy64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end # the ssh bits on this did not work right, most of the steps for # generating things were done manually config.vm.define 'ubuntu-22.10-x86_64' do |host| host.vm.box = 'ubuntu/kinetic64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'centos-7-x86_64' do |host| host.vm.box = 'centos/7' host.vm.network :private_network, ip: '10.0.0.2' host.vm.synced_folder '.', '/vagrant', nfs: true, nfs_udp: false host.vm.provision 'shell', inline: 'yum -y install ruby-devel gcc wget net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'centos-8-x86_64' do |host| host.vm.box = 'centos/8' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' host.vbguest.auto_update = true end # images are at https://cloud.centos.org/centos/8-stream/x86_64/images/ # (check for version updates periodically) # facts land as centos-8-x86_64.facts config.vm.define 'centos-stream8-x86_64' do |host| host.vm.box = 'centos/stream8' host.vm.box_url = 'https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-Vagrant-8-20231127.0.x86_64.vagrant-virtualbox.box' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' # commented to allow manual retrieval of facts # host.vm.provision 'shell', inline: '/sbin/shutdown -h now' host.vbguest.auto_update = true end # images are at https://cloud.centos.org/centos/9-stream/x86_64/images/ # can be imported with `vagrant box add --name centos/stream9 $url` you can also # use the host.vm.box_url below # facts land as centos-9-x86_64.facts # config.vm.define 'centos-stream9-x86_64' do |host| host.vm.box = 'centos/stream9' host.vm.box_url = 'https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-Vagrant-9-20231204.0.x86_64.vagrant-virtualbox.box' # centos packages their box with synced folders set to rsync (presumably # since vboxsf is not built in their kernel) # If the version of the kernel-headers/kernel-devel that are available # for download are newer than what is on the box then guest additions will # not build. If the stars align, then you can set `type: 'virtualbox'` # for synced_folder and maybe it will work, otherwise, it is a manual # effort to rsync the fact files back # host.vm.synced_folder '.', '/vagrant', type: 'virtualbox' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' # commented to allow manual retrieval of the facts # host.vm.provision 'shell', inline: '/sbin/shutdown -h now' # this will install the guest additions which requires `vagrant plugin install vagrant-vbguest` host.vbguest.auto_update = true end config.vm.define 'almalinux-8-x86_64' do |host| host.vm.box = 'almalinux/8' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'almalinux-9-x86_64' do |host| host.vm.box = 'almalinux/9' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'rockylinux-8-x86_64' do |host| host.vm.box = 'rockylinux/8' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'rockylinux-9-x86_64' do |host| host.vm.box = 'rockylinux/9' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'redhat-8-x86_64' do |host| host.vm.box = 'generic/rhel8' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'archlinux-x86_64' do |host| host.vm.box = 'archlinux/archlinux' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'sles-11sp1-x86_64' do |host| host.vm.box = 'suse/sles11sp3' host.vm.network 'private_network', ip: '192.168.123.2' host.vm.synced_folder '.', '/vagrant', type: 'nfs' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'sles-12sp1-x86_64' do |host| host.vm.box = 'idar/sles12sp3' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'sles-15-x86_64' do |host| host.vm.box = 'trueability/sles-15-sp1' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', inline: [ 'SUSEConnect -p sle-module-desktop-applications/15.1/x86_64', 'SUSEConnect -p sle-module-legacy/15.1/x86_64', 'zypper install --no-confirm net-tools-deprecated', ].join(' && ') host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'opensuse-42.3-x86_64' do |host| host.vm.box = 'opensuse/openSUSE-42.3-x86_64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' end config.vm.define 'opensuse-Tumbleweed-x86_64' do |host| host.vm.box = 'opensuse/openSUSE-Tumbleweed-x86_64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' end config.vm.define 'opensuse-15.4-x86_64' do |host| host.vm.box = 'opensuse/Leap-15.4.x86_64' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' end config.vm.define 'freebsd-11-x86_64' do |host| host.vm.box = 'bento/freebsd-11' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'pkg install -y bash devel/ruby-gems' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -p now' end config.vm.define 'freebsd-12-x86_64' do |host| host.vm.box = 'bento/freebsd-12' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'pkg install -y bash devel/ruby-gems' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -p now' end config.vm.define 'freebsd-13-x86_64' do |host| host.vm.box = 'bento/freebsd-13' host.vm.synced_folder '.', '/vagrant' # this was needed for the 202309.08.0 release of this box host.ssh.shell = '/bin/sh' host.vm.provision 'shell', inline: 'pkg install -y bash devel/ruby-gems' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -p now' end config.vm.define 'gentoo-x86_64' do |host| host.vm.box = 'generic/gentoo' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'emerge-webrsync && emerge app-crypt/gnupg net-misc/curl' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'solaris-11-x86_64' do |host| host.vm.box = 'http://benden.us/vagrant/solaris-11.2.box' host.ssh.insert_key = false host.vm.provision 'shell', inline: 'pkg info gcc || pkg install gcc' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: "/sbin/shutdown -i S -g0 -y 'Bye' &" end config.vm.define 'openbsd-6.4-x86_64' do |host| host.vm.box = 'generic/openbsd6' host.vm.box_version = '~> 1.9.18' host.vm.network :private_network, ip: '10.0.0.2' host.vm.synced_folder '.', '/vagrant', nfs: true host.vm.provision 'shell', inline: <<-SCRIPT.gsub(/^ +/, '') . ~/.profile pkg_info -qe 'bash->=0' || pkg_add bash pkg_add facter puppet-5.5.6 ln -sf /usr/local/bin/gem24 /usr/bin/gem ln -sf /usr/local/bin/ruby24 /usr/bin/ruby SCRIPT host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'osx-10.10-x86_64' do |host| host.vm.box = 'AndrewDryga/vagrant-box-osx' host.vm.network :private_network, ip: '10.0.0.2' host.vm.synced_folder '.', '/vagrant', nfs: true host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'windows-7-x86_64' do |host| host.vm.hostname = 'foo' host.vm.box = 'ferventcoder/win7pro-x64-nocm-lite' host.vm.communicator = 'winrm' host.vm.guest = :windows host.vm.network :private_network, auto_network: true host.vm.network 'forwarded_port', guest: 22, host: 2200, id: 'ssh', auto_correct: true host.windows.set_work_network = true host.vm.provision 'shell', path: 'windows_get_facts.ps1' # host.vm.provision 'shell', inline: "Stop-Computer -AsJob" host.vm.provision 'shell', inline: 'shutdown -s -f -c "Fact Collection Complete"' # host.vm.post_up_message = 'Note that windows machines do not automatically shutdown. You must run a \'vagrant destroy\' or \'vagrant halt\' to terminate/stop the build vm.' end config.vm.define 'windows-2012r2-core-x86_64' do |host| host.vm.hostname = 'foo' host.vm.box = 'windows-2012r2-core-x86_64' host.vm.communicator = 'winrm' host.vm.guest = :windows host.vm.network :private_network, auto_network: true host.vm.network 'forwarded_port', guest: 22, host: 2200, id: 'ssh', auto_correct: true host.windows.set_work_network = true host.vm.provision 'shell', path: 'windows_get_facts.ps1' host.vm.provision 'shell', inline: 'shutdown -s -f -c "Fact Collection Complete"' end config.vm.define 'amazonlinux-2-x86_64' do |host| host.vm.box = 'bento/amazonlinux-2' host.vm.provision 'shell', inline: 'yum -y install gcc glibc-devel' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-32-x86_64' do |host| host.vm.box = 'generic/fedora32' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-33-x86_64' do |host| host.vm.box = 'generic/fedora33' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 33, so we need ruby and facter from Fedora host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools ruby ruby-devel facter' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-34-x86_64' do |host| host.vm.box = 'generic/fedora34' host.vm.synced_folder '.', '/vagrant' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-35-x86_64' do |host| host.vm.box = 'generic/fedora35' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 35, so we need ruby 2.7 and facter from Fedora host.vm.provision 'shell', inline: 'dnf -y module install ruby:2.7/default' host.vm.provision 'shell', inline: 'dnf -y install wget make gcc net-tools facter ruby-devel' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-36-x86_64' do |host| host.vm.box = 'generic/fedora36' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 36, so we need facter from Fedora host.vm.provision 'shell', inline: 'dnf -y install facter ruby ruby-devel wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-37-x86_64' do |host| host.vm.box = 'generic/fedora37' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 37, so we need facter from Fedora host.vm.provision 'shell', inline: 'dnf -y install facter ruby ruby-devel wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-38-x86_64' do |host| host.vm.box = 'generic/fedora38' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 38, so we need facter from Fedora host.vm.provision 'shell', inline: 'dnf -y install facter ruby ruby-devel wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end config.vm.define 'fedora-39-x86_64' do |host| host.vm.box = 'generic/fedora39' host.vm.synced_folder '.', '/vagrant' # there's no official support for fedora 39, so we need facter from Fedora host.vm.provision 'shell', inline: 'dnf -y install facter ruby ruby-devel wget make gcc net-tools' host.vm.provision 'file', source: 'Gemfile', destination: 'Gemfile' host.vm.provision 'shell', path: 'get_facts.sh' host.vm.provision 'shell', inline: '/sbin/shutdown -h now' end end