Skip to content

higebu/vyos-vm-images

 
 

Repository files navigation

vyos-vm-images

Ansible playbooks to build VyOS VM images.

Requirements

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 python packages:

sudo apt update
sudo apt install -y python3 python3-pip
sudo pip3 install poetry
poetry install
poetry shell

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.

Prepare

You can copy the base ISO image with VyOS to ./build/vyos.iso before running ansible-playbook, or specify its location with the iso_local variable. The latest rolling build will be downloaded by the playbook. Resulting images also will be located inside ./build/ directory.

Supported Platforms

  • QEMU

    ansible-playbook qemu.yml
    
  • VMware Cloud-init

    ansible-playbook vmware.yml -e vyos_vmware_sign=true -e vyos_vmware_private_key_path=path_to_private_key
    
  • VMware simple ova

    ansible-playbook vmware.yml -e cloud_init=false -e ovf_template=simple
    
  • Microsoft Hyper-V

    ansible-playbook hyperv.yml
    
  • Vagrant libvirt

    ansible-playbook vagrant-libvirt.yml
    
  • Vagrant virtualbox

    ansible-playbook vagrant-virtualbox.yml
    

Additional (optional) parameters

  • Path to local ISO image (default: /tmp/vyos.iso):

    -e iso_local=path
    

    Example:

    -e iso_local=/tmp/vyos/custom_image.iso
    
  • Disk size (default: 10GB):

    -e disk_size=size
    

    Example 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=datasources
    

    Example:

    -e cloud_init_ds=NoCloud,ConfigDrive,None
    
  • Install guest agent. It can be qemu, vmware (default: none):

    -e guest_agent=agent
    

    Example:

    -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 vyos user with password vyos in 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.txt file separated by spaces, or deb files inside the files/custom_debs/ directory:

    -e custom_packages=true
    
  • Release (default: false):

    -e release=true
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jinja 100.0%