We will use official box "ubuntu/xenial64" and modify it to work with Vagrant.
- Vagrantfile
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
- run Virtual machine (VM)
vagrant up
- login to VM
vagrant ssh
- fix hostname in
/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"
- or update using command:
#
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
- update
sudo update-grub
-
so we will have interface named 'eth1'
-
reboot VM from the host
vagrant reload
- To use Ansible we need to install Python 2
sudo apt-get install python
- we will use our new box
- And we will use Ansible to provision VM
-
we will add a new interface 'eth1' with static IP
-
Vagrantfile
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
OK. 谢谢。