Vagrant with Ubuntu 16.04 in VirtualBox
We will use official box "ubuntu/xenial64" and modify it to work with Vagrant.
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "1524"
end
end
vagrant up
vagrant ssh
/etc/hosts
127.0.0.1 ubuntu-xenial
This will fix error:
"sudo: unable to resolve host ubuntu-xenial
login to VM (vagrant ssh
)
add (or modify) lines in /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 net.ifnames=0 biosdevname=0 net.ifnames=0 biosdevname=0"
GRUB_CMDLINE_LINUX=" net.ifnames=0 biosdevname=0"
#
sudo sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT=\"\(.*\)\"/GRUB_CMDLINE_LINUX_DEFAULT=\"\1 net.ifnames=0 biosdevname=0\"/" /etc/default/grub
sudo sed -i "s/GRUB_CMDLINE_LINUX=\"\(.*\)\"/GRUB_CMDLINE_LINUX=\"\1 net.ifnames=0 biosdevname=0\"/" /etc/default/grub
sudo update-grub
vagrant reload
sudo apt-get install python
Vagrant.configure(2) do |config|
...
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "1524"
end
config.vm.provision "ansible" do |p|
p.playbook = "playbook.yml"
p.verbose = true
p.extra_vars =
{
var1: "value1",
..
}
end
end
playbook.yml
---
- hosts: all
sudo: true
tasks:
# tasks here
playbook.yml
---
- hosts: all
tasks:
# base
# - hostname: name={{hostname}}
- lineinfile: dest=/etc/hosts regexp='ubuntu-xenial' line='127.0.0.1 ubuntu-xenial' state=present
- lineinfile: dest=/etc/hosts regexp='{{hostname}}' line='127.0.0.1 {{hostname}}' state=present
- shell: sudo bash -c 'hostnamectl set-hostname {{hostname}}'
HOSTNAME = 'debugserver'
IP = "51.0.99.120"
NETWORK_MASK = "255.0.0.0"
NETWORK_GATEWAY = "51.0.0.1"
Vagrant.configure(2) do |config|
...
# IP
config.vm.network "public_network", auto_config: false, :bridge => "eth0", ip: "#{IP}"
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "1524"
end
config.vm.provision "ansible" do |p|
p.playbook = "playbook.yml"
p.verbose = true
p.extra_vars =
{
machine: "main",
public_ip: IP,
public_mask: NETWORK_MASK,
public_gateway: NETWORK_GATEWAY,
}
end
end
playbook.yml
---
- hosts: all
sudo: true
tasks:
# base
# - hostname: name={{hostname}}
- lineinfile: dest=/etc/hosts regexp='ubuntu-xenial' line='127.0.0.1 ubuntu-xenial' state=present
- lineinfile: dest=/etc/hosts regexp='{{hostname}}' line='127.0.0.1 {{hostname}}' state=present
- shell: sudo bash -c 'hostnamectl set-hostname {{hostname}}'
# eth
- name: stop eth1
shell: ifdown eth1
ignore_errors: yes
- name: set networking
template: src="files/interfaces/eth1.cfg.j2" dest="/etc/network/interfaces.d/eth1.cfg"
- name: start interface
#shell: ifup eth1 && ifdown eth1 && ifup eth1
shell: ifup eth1
ignore_errors: yes
- name: restart interface
shell: sudo ifconfig eth1 up && sudo ifconfig eth1 down && sudo ifconfig eth1 up
files/interfaces/eth1.cfg.j2
auto eth1
iface eth1 inet static
address {{public_ip}}
netmask {{public_mask}}
{% if public_gateway is defined %}gateway {{public_gateway}} {% endif %}