Ansible playbooks to build VyOS VM images.
You need a machine with at least 20 GB free space with Debian 10 (bare-metal, virtual, Docker container with --privileged flag). Also, you need to install ansible and python3 packages:
sudo apt update
sudo apt install -y ansible python3
If you want to build an OVA image, you also need ovftool from VMware. It should be downloaded from the VMware site. Also, you need a private key to sign an OVA file. It can be generated with the next command:
openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:1024 -keyout myself.pem -out myself.pem
All other requirements will be installed by ansible-playbook.
You need to copy the ISO image with VyOS to /tmp/vyos.iso before running ansible-playbook. Resulting images also will be located inside /tmp/ directory.
The Dockerfile has all required dependencies.
- Download the
Dockerfile
wget https://raw.githubusercontent.com/vyos/vyos-vm-images/current/Dockerfile
- Build local image with name
vyos-vm-images(only if you do not have it)
docker build --tag vyos-vm-images:latest -f ./Dockerfile .
- Start and connect to the container:
docker run --rm -it --privileged -v $(pwd):/vm-build -v $(pwd)/images:/images -w /vm-build vyos-vm-images:latest bash- Clone repo
git clone https://github.com/vyos/vyos-vm-images.git && cd vyos-vm-images
-
QEMU
ansible-playbook qemu.yml -
VMware Cloud-init
ansible-playbook vmware.yml -e vyos_vmware_private_key_path=path_to_private_key -
VMware simple ova
ansible-playbook vmware.yml -e vyos_vmware_private_key_path=path_to_private_key -e cloud_init=false -e ovf_template=simple -
Microsoft Hyper-V
ansible-playbook hyperv.yml -
Vagrant libvirt
ansible-playbook vagrant-libvirt.yml
-
Path to local ISO image (default: /tmp/vyos.iso):
-e iso_local=pathExample:
-e iso_local=/tmp/vyos/custom_image.iso -
Disk size (default: 10GB):
-e disk_size=sizeExample for 2 GB:
-e disk_size=2 -
Enable Cloud-init (default: according to platform):
-e cloud_init=true -
Configure custom Cloud-init datasources (default: according to platform):
-e cloud_init_ds=datasourcesExample:
-e cloud_init_ds=NoCloud,ConfigDrive,None -
Install guest agent. It can be
qemu,vmware(default: none):-e guest_agent=agentExample:
-e guest_agent=qemu -
Disable configuration stage modules in Cloud-init. Mostly useful when you are building for non-cloud environments, where Cloud-init meta-data is not available (default: false):
-e cloud_init_disable_config=true -
Create an archive with files required to PXE boot (default: false):
-e pxe=true -
Keep default
vyosuser with passwordvyosin configuration when building an image with Cloud-init (default: false):-e keep_user=true -
Select a type of partition table for a disk image. Supported:
mbr,gpt,hybrid(default:hybrid):-e parttable_type=hybrid -
Select default console for boot. Supported:
kvm,serial(default: depending on platform):-e grub_console=serial -
Install custom packages. Can be a list in the
files/custom_packages_list.txtfile separated by spaces, or deb files inside thefiles/custom_debs/directory:-e custom_packages=true -
Copy custom files. All files from inside the
files/custom_files/directory will be copied to the target filesystem recursively:-e custom_files=true -
Enable DHCP on eth0 (default:
false):-e enable_dhcp=true -
Enable SSH (default:
false):-e enable_ssh=true -
Remove
loginfrom configuration. Unlikekeep_user, this option will completely removesystem loginfrom configuration.-e without_login=true