Configuring Vyos with cloud-init

Vyos uses cloud-init to configure itself automatically in cloud environments. There is a Meta-Data module cc_vyos.py that takes care of the cloud-specific configuration.

Additional module cc_vyos_userdata.py introduces a new parameter vyos_config_commands into User-Data (#cloud-config). This parameter should be a list of VyOS configuration commands that will be applied during deployment. This module will run last.

Commands requirements:

  • one command per line

  • if command ending by value, it must be inside single quotes: set some option 'value', delete some option 'value'

  • a single-quote symbol is not allowed inside command or value

The commands’ list produced by the show configuration commands command on a VyOS router should comply with all the requirements, so it is easy to get a proper commands’ list by copying it from another router.

Usage example (User-Data content):

#cloud-config
vyos_config_commands:
- set system host-name 'demo123'
- set system ntp server 1.pool.ntp.org
- set system ntp server 2.pool.ntp.org
- delete interfaces ethernet eth2 address
- set interfaces ethernet eth2 address '192.0.2.1/24'

References

https://github.com/vyos/vyos-cloud-init/commit/1607eec32641ad93ea211e447336b3366c28de06