diff --git a/files/cloud_init.cfg.tftpl b/files/cloud_init.cfg.tftpl index 20b47d3..ea6d991 100644 --- a/files/cloud_init.cfg.tftpl +++ b/files/cloud_init.cfg.tftpl @@ -3,9 +3,11 @@ hostname: "${name}" manage_etc_hosts: true disable_root: false ssh_authorized_keys: + %{ for key in admin_authorized_keys ~} - "${key}" %{ endfor ~} + %{ if insecure_password } chpasswd: list: | @@ -15,12 +17,14 @@ ssh_pwauth: true %{ else } ssh_pwauth: false %{ endif } + %{ if use_host_cert } ssh_keys: ed25519_private: | ${indent(4, private_key)} ed25519_certificate: "${host_cert}" %{ endif} + write_files: - path: /etc/default/locale content: | @@ -29,10 +33,12 @@ write_files: - path: /etc/locale.gen content: | en_US.UTF-8 UTF-8 + runcmd: - dhclient -r - dhclient - locale-gen + %{ if data_disk } device_aliases: data: /dev/vdb @@ -46,9 +52,18 @@ fs_setup: filesystem: 'ext4' device: data.1 overwrite: false +%{ endif } + +%{ if data_disk || add_data_share } mounts: +%{ if data_disk } - ["data.1", "/mnt/data"] %{ endif } +%{ if add_data_share } +- ["data", "/mnt/data", "9p", "trans=virtio", "0", "0"] +%{ endif } +%{ endif } + %{ if fixed_dns != "" } manage_resolv_conf: true resolv_conf: diff --git a/main.tf b/main.tf index f5bce34..1808aad 100644 --- a/main.tf +++ b/main.tf @@ -16,6 +16,7 @@ locals { private_key = tls_private_key.debian.private_key_openssh, data_disk = var.data_disk != null fixed_dns = var.fixed_dns + add_data_share = var.add_data_share }) cloudinit_network_config = templatefile("${path.module}/files/network_config.cfg.tftpl", { fixed_address = var.fixed_address @@ -93,11 +94,22 @@ resource "libvirt_domain" "debian" { dynamic "disk" { for_each = var.data_disk != null ? [1] : [] + content { volume_id = var.data_disk } } + dynamic "filesystem" { + for_each = var.add_data_share ? [1] : [] + + content { + source = "/data/${local.domain_name}/" + target = "data" + readonly = false + } + } + network_interface { bridge = var.bridge_name hostname = var.name diff --git a/variables.tf b/variables.tf index 0e388e8..7cd972a 100644 --- a/variables.tf +++ b/variables.tf @@ -106,3 +106,9 @@ variable "fixed_dns" { default = "" description = "Fixed DNS server the machine should have." } + +variable "add_data_share" { + type = bool + default = true + description = "Whether to share /data with the guest OS." +}