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
- add (or modify) line in
/etc/default/grub
GRUB_CMDLINE_LINUX=" net.ifnames=0 biosdevname=0"
- update
sudo update-grub
-
so we will have interface named 'eth1'
-
reboot VM
vagrant reload
- To use Ansible we need to install Python 2
sudo apt-get install python
- commit the box
vagrant package
it will create *.box file in the current directory.
You can use this box file to add to the local vagrant repository or copy it to another server.
- use new box in Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "my/ubuntu-xenial64"
..
end
- we will use our new box with python 2 and renamed interface.
- 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|
config.vm.box = "my/ubuntu-xenial64"
# 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. 谢谢。