#cloud-config # # Example: install and configure vpn-router during first boot. # # This is one way to reach the state described in README.md, not an interface # the package depends on. It writes the configuration file directly, which # keeps everything in one place and works the same whether or not debconf is # involved. # # Template variables are Terraform templatefile() placeholders. Adapt or drop # them for whatever renders this file. # # This variant lets the package generate its own CA on first boot. See # cloud-init-with-pki.yaml.tpl for the variant that supplies existing PKI # material instead. hostname: ${hostname} fqdn: ${fqdn} manage_etc_hosts: false apt: sources: vpn-router: source: "deb [signed-by=/etc/apt/keyrings/vpn-router.asc] ${repo_url} ${ubuntu_codename} main" key: | ${indent(8, trimspace(repo_gpg_key))} write_files: # The configuration file. Created here before the package is installed, so # postinst leaves it alone. - path: /etc/vpn-router/vpn-router.conf permissions: '0600' owner: root:root content: | [general] platform = ${platform} mode = ${mode} [interfaces] external = ${external_interface} internal = ${internal_interface} [wan] local_fqdn = ${fqdn} local_id_mode = ${local_id_mode} [local] cidrs = ${local_cidrs} int_addr = ${int_addr} int_gateway_ip = ${int_gateway_ip} [remote] addrs = ${remote_addrs} id = ${remote_id} cidrs = ${remote_cidrs} psk_b64 = ${psk_b64} [p2s] enabled = ${p2s_enabled} address_pool = ${p2s_address_pool} ca_name = ${p2s_ca_name} [wireguard] enabled = ${wg_enabled} address = ${wg_address} listen_port = ${wg_listen_port} package_update: true packages: - vpn-router # Nothing further is required: installing the package starts # vpn-router-setup, which applies the configuration written above.