ansible-devops-vm/Vagrantfile

102 lines
5.3 KiB
Ruby

# This guide is optimized for Vagrant 1.8 and above.
# Older versions of Vagrant put less info in the inventory they generate.
Vagrant.require_version ">= 1.8.0"
require 'etc'
Vagrant.configure(2) do |config|
#config.vm.box = "hashicorp/bionic64"
config.vm.box = "generic/debian10"
config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: ".git/"
# The currently only supported provider is Virtualbox
# You will have to install Virtualbox from https://www.virtualbox.org
# Manual for the following settings: https://www.virtualbox.org/manual/ch03.html
config.vm.provider :virtualbox do |vbox, override|
vbox.customize ["modifyvm", :id, "--name", "jotbe DevOps VM Ansible Playground"]
# Amount of virtual memory
vbox.customize ["modifyvm", :id, "--memory", 8192]
# Amount of virtual CPUs, by default it uses half ot the physical CPUs
vbox.customize ["modifyvm", :id, "--cpus", Etc.nprocessors/2]
# The amount of graphics memory
vbox.customize ["modifyvm", :id, "--vram", 128]
# If you want to use the 3D graphic acceleration in the VM, turn it on
vbox.customize ["modifyvm", :id, "--accelerate3d", "off"]
# Required. Allows to use more than 16 IRQs, important esp. for 64-bit guests and if more than 1 virtual CPU is used
vbox.customize ["modifyvm", :id, "--ioapic", "on"]
# Enable copy & paste between the VM and the host
vbox.customize ["modifyvm", :id, "--clipboard-mode", "bidirectional"]
# Disable serial ports (COM) if not needed
vbox.customize ["modifyvm", :id, "--uartmode1", "disconnected"]
# If your local network uses the same subnet as the default Virtualbox one (10.0.2.0/24), set a different one here
vbox.customize ["modifyvm", :id, "--natnet1", "10.0.50.0/24"]
# Attach a virtual DVD drive to be able to easily install the Virtualbox Guest Additions
vbox.customize ["storageattach", :id, "--storagectl", "IDE Controller", "--port", "1", "--device", "1", "--type", "dvddrive", "--medium", "emptydrive"]
#vbox.customize ["storagectl", :id, "--name", "SATA Controller", "--hostiocache", "on"]
# Default: The VM is hosted on an SSD.
# Set to "off" if it is hosted on an HDD to enable performance optimizations for rotational drives (e.g. defragmentation):
#vbox.customize ["storageattach", :id, "--storagectl", "SCSI", "--port", 0, "--nonrotational", "on"]
#vbox.customize ["storageattach", :id, "--storagectl", "SCSI", "--port", 1, "--nonrotational", "on"]
# Set to true, if you intent to use a GUI
vbox.gui = true
end
config.vm.define "jbdev" do |dev|
dev.vm.hostname = "jbdev.local"
# If you have installed the Vagrant::Hostsupdate plugin, you can add additional domains
# that should be mapped to the VM.
#dev.hostsupdater.aliases = ["jenkins.jbdev.local", "grafana.jbdev.local"]
# An additional IP that allows you to access the VM and its services from the VM host.
# If you change this IP, you will have to modify the `ansible_host` in the inventory file correspondingly.
# More information about the various network modes:
# https://www.virtualbox.org/manual/ch06.html#network_nat_service
dev.vm.network :private_network, ip: "192.168.6.65"
# Provision the VM from the Vagrant host.
# The host has to have Ansible installed and will connect to the VM via SSH
# dev.vm.provision :ansible do |ansible|
# #ansible.verbose = "vvv"
# ansible.compatibility_mode = "2.0"
# ansible.playbook = "provisioning/playbook.yml"
# ansible.inventory_path = "provisioning/inventory"
# ansible.become = true
# end
# Provision by running Ansible from within the VM.
# Vagrant will try to install Ansible automatically using pip
# Advantage: Ansible doesn't have to be installed on the Vagrant host
# See also: https://www.vagrantup.com/docs/provisioning/ansible_local.html
dev.vm.provision "ansible_local" do |ansible|
#ansible.verbose = "vvv"
ansible.compatibility_mode = "2.0"
ansible.install_mode = "pip_args_only"
ansible.pip_install_cmd = "sudo apt install -y python3-distutils && curl https://bootstrap.pypa.io/get-pip.py | sudo python3"
# The following will not work properly since the split of Ansible into ansible-base (soon ansible-core)
# and the Ansible collections and modules both together resembling Ansible.
# `ansible --version` will yield the ansible-base version and this command is used by ansible_local.
# It is not suitable to figure out which Ansible distribution/bundle was installed.
# To workaround the wrongful mismatch result when installing Ansible through Vagrant,
# we have to leave ansible.version empty/unset and use ansible.pip_args to provide the desired version.
#
# See also:
# - https://www.ansible.com/blog/ansible-3.0.0-qa
# - https://github.com/hashicorp/vagrant/issues/12204
#ansible.version = "3.3.0"
ansible.pip_args = "ansible==3.3.0" # Will install ansible-base==2.10.8, ansible --version will yield 2.10.8
ansible.playbook = "provisioning/playbook.yml"
#ansible.inventory_path = "provisioning/inventory"
ansible.galaxy_role_file = "provisioning/requirements.yml"
ansible.galaxy_roles_path = "provisioning/roles"
ansible.become = true
ansible.extra_vars = {
virtualbox_host_version: "6.1.18"
}
end
end
end