diff --git a/templates/answerfile.j2 b/templates/answerfile.j2 index a2c9c721a17ff302682be48f1751a7f057cd9cbb..e4c07b31414caf7288404a522e9f81de0f703cc7 100644 --- a/templates/answerfile.j2 +++ b/templates/answerfile.j2 @@ -3,20 +3,94 @@ export DISTRIBUTION="{{ hostobj.os.distribution }}" export RELEASE="{{ hostobj.os.release }}" export ARCH="{{ hostobj.os.architecture }}" export MIRROR="{{ system_local_mirror | default(system_home_mirror | default("")) }}" +export LOCALE="{{ hostobj.locale | default("C.UTF-8") }}" +export KEYMAP="{{ hostobj.keymap | default("us") }}" +export TIMEZONE="{{ hostobj.timezone | default("GMT") }}" {% set disks = [] %} {% for disk in hostobj.disks %} {% do disks.append('"%s"' | format(disk.device)) %} {{ 'export DISK_%s_SCHEME="%s"' | format(disk.device | upper, disk.scheme | upper) }} {% if 'partitions' in disk %} -{{ 'declare -a DISK_%s_PARTITIONS = ()' | format(disk.device | upper) }} +{{ 'declare -a DISK_%s_PARTITIONS=()' | format(disk.device | upper) }} {% for part in disk.partitions %} -{{ 'DISK_%s_PARTITIONS += ("%s:%s:%s:%s:%s:%s:%s")' | format(disk.device | upper, part.size, part.fs, part.mountpoint | default(""), part.mountoptions | default("defaults"), part.dump | default("0"), part.pass | default("0"), part.format | default("true")) }} +{{ 'DISK_%s_PARTITIONS+=("%s:%s:%s:%s:%s:%s:%s")' | format(disk.device | upper, part.size, part.fs, part.mountpoint | default(""), part.mountoptions | default("defaults"), part.dump | default("0"), part.pass | default("0"), part.format | default("true")) }} {% endfor %} {{ 'export DISK_%s_PARTITIONS' | format(disk.device | upper) }} {% endif %} {% endfor %} -declare -a DISK_DEVICES = ({{ disks | join(" ") }}) +declare -a DISK_DEVICES=({{ disks | join(" ") }}) export DISK_DEVICES +{% set netifs = [] %} +{% for ifname, ifdata in hostobj.network.devices.items() %} +{% set ifresdata = namespace(ipv4_address = "", ipv4_netmask = "", ipv6_address = "", ipv6_prefix = "") %} +{% if ifdata.ipv4 is defined %} +{% if hostobj.network.classes[ifdata.class].dhcp is defined %} +{% if hostobj.network.classes[ifdata.class].dhcp.ipv4 is defined %} +{% if (ifdata.ipv4 | ip_in_range('%s-%s' | format(hostobj.network.classes[ifdata.class].dhcp.ipv4.from, hostobj.network.classes[ifdata.class].dhcp.ipv4.to))) == true %} +{% set ifresdata.ipv4_address = "DHCP" %} +{% else %} +{% set ifresdata.ipv4_address = ifdata.ipv4 %} +{% set ifresdata.ipv4_netmask = ('%s/%s' | format(ifdata.ipv4, hostobj.network.classes[ifdata.class].ipv4.prefix) | ipaddr('netmask')) %} +{% endif %} +{% else %} +{% set ifresdata.ipv4_address = ifdata.ipv4 %} +{% set ifresdata.ipv4_netmask = ('%s/%s' | format(ifdata.ipv4, hostobj.network.classes[ifdata.class].ipv4.prefix) | ipaddr('netmask')) %} +{% endif %} +{% else %} +{% set ifresdata.ipv4_address = ifdata.ipv4 %} +{% set ifresdata.ipv4_netmask = ('%s/%s' | format(ifdata.ipv4, hostobj.network.classes[ifdata.class].ipv4.prefix) | ipaddr('netmask')) %} +{% endif %} +{% endif %} +{% if ifdata.ipv6 is defined %} +{% if hostobj.network.classes[ifdata.class].dhcp is defined %} +{% if hostobj.network.classes[ifdata.class].dhcp.ipv6 is defined %} +{% if (ifdata.ipv6 | ip_in_range('%s-%s' | format(hostobj.network.classes[ifdata.class].dhcp.ipv6.from, hostobj.network.classes[ifdata.class].dhcp.ipv6.to))) == true %} +{% set ifresdata.ipv6_address = "DHCP" %} +{% else %} +{% set ifresdata.ipv6_address = ifdata.ipv6 %} +{% set ifresdata.ipv6_prefix = hostobj.network.classes[ifdata.class].ipv6.prefix %} +{% endif %} +{% else %} +{% set ifresdata.ipv6_address = ifdata.ipv6 %} +{% set ifresdata.ipv6_prefix = hostobj.network.classes[ifdata.class].ipv6.prefix %} +{% endif %} +{% else %} +{% set ifresdata.ipv6_address = ifdata.ipv6 %} +{% set ifresdata.ipv6_prefix = hostobj.network.classes[ifdata.class].ipv6.prefix %} +{% endif %} +{% endif %} +{{ 'export NETIF_%s="%s:%s:%s:%s:%s"' | format(ifname | upper, ifresdata.ipv4_address, ifresdata.ipv4_netmask, ifresdata.ipv6_address, ifresdata.ipv6_prefix, ifdata.static | default("true")) }} +{% do netifs.append('"%s"' | format(ifname)) %} +{% endfor %} +declare -a NETIF_DEVICES=({{ netifs | join(" ") }}) + +{% set dnsns = [] %} +{% set dnsdom = [] %} +{% for ncname, ncdata in hostobj.network.classes.items() %} +{% if (ncdata.default | default(False)) == True %} +{% if ncdata.ipv4 is defined %} +{{ 'export DEFAULTGATEWAY="%s"' | format(ncdata.ipv4.gateway) }} +{% endif %} +{% if ncdata.ipv6 is defined %} +{{ 'export DEFAULTGATEWAY6="%s"' | format(ncdata.ipv6.gateway) }} +{% endif %} +{% if ncdata.dns is defined %} +{% if ncdata.dns.nameservers.ipv4 is defined %} +{% do dnsns.extend(ncdata.dns.nameservers.ipv4) %} +{% endif %} +{% if ncdata.dns.nameservers.ipv6 is defined %} +{% do dnsns.extend(ncdata.dns.nameservers.ipv6) %} +{% endif %} +{% if ncdata.dns.domain is defined %} +{% do dnsdom.append('"%s"' | format(ncdata.dns.domain)) %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +declare -a DNS_SERVER=({{ dnsns | join(" ") }}) +declare -a DNS_DOMAINS=({{ dnsdom | join(" ") }}) + +