locals { dhcp_config_path_systemd_unit = { name = "dhcp_config.path" enabled = true contents = templatefile( "${path.module}/files/dhcp/dhcp_config.path.tftpl", { path = "/var/lib/containers/storage/volumes/dhcp_config/_data/writable/" } ) } dhcp_config_service_systemd_unit = { name = "dhcp_config.service" enabled = false contents = file("${path.module}/files/dhcp/dhcp_config.service") } dhcp_data_filesystem = { device = "${local.data_device_path}-part3" format = "ext4" label = "dhcp_data" } dhcp_data_volume_file = { path = "/etc/containers/systemd/dhcp_data.volume" user = {id = 0} group = {id = 0} mode = 420 # 0644 contents = { source = format( "data:text/plain;base64,%s", base64encode(file("${path.module}/files/dhcp/dhcp_data.volume")) ) } } dhcp_builddir_dir = { path = "/root/dhcp" user = {id = 0} group = {id = 0} mode = 448 # 0700 } dnsmasq_base_config_file = { path = "/root/dhcp/dnsmasq.conf" user = {id = 0} group = {id = 0} mode = 420 # 0644 contents = { source = format( "data:text/plain;base64,%s", base64encode(templatefile( "${path.module}/files/dhcp/dnsmasq.conf.tftpl", { dhcp_server_ip_addr = var.dhcp_server_ip_addr dhcp_range = split("/", var.dhcp_range)[0] dhcp_range_netmask = cidrnetmask(var.dhcp_range) dhcp_router = var.dhcp_gateway config_extension_dir = "/etc/dnsmasq.d/writable/" } )) ) } } generate_dhcp_options_script_file = { path = "/var/roothome/generate_dhcp_options.sh" user = {id = 0} group = {id = 0} mode = 448 # 0700 contents = { source = format( "data:text/plain;base64,%s", base64encode(file("${path.module}/files/dhcp/generate_dhcp_options.sh")) ) } } dhcp_containerfile_file = { path = "/root/dhcp/Containerfile" user = {id = 0} group = {id = 0} mode = 420 # 0644 contents = { source = format( "data:text/plain;base64,%s", base64encode(file("${path.module}/files/dhcp/dnsmasq.Containerfile")) ) } } dhcp_container_file = { path = "/etc/containers/systemd/dnsmasq_container.container" user = {id = 0} group = {id = 0} mode = 420 # 0644 contents = { source = format( "data:text/plain;base64,%s", base64encode(file("${path.module}/files/dhcp/dnsmasq_container.container")) ) } } dhcp_filesystems = [ local.dhcp_data_filesystem, ] dhcp_directories = [ local.dhcp_builddir_dir, ] dhcp_files = [ local.dhcp_data_volume_file, local.dnsmasq_base_config_file, local.generate_dhcp_options_script_file, local.dhcp_containerfile_file, local.dhcp_container_file, ] dhcp_systemd_units = [ local.dhcp_config_path_systemd_unit, local.dhcp_config_service_systemd_unit, ] }