infra/ansible/roles/general/tasks/debian/network.yml
2025-10-05 13:12:28 -05:00

130 lines
3.7 KiB
YAML

#- name: "Create base network configuration"
# copy:
# src: files/etc/network/interfaces
# dest: /etc/network/interfaces
# owner: root
# group: root
# mode: 00644
# tags:
# - network_interfaces
- name: "Create systemd interface files"
template:
src: templates/etc/systemd/network/link.j2
dest: "/etc/systemd/network/10-{{ interface.name }}-nic.link"
owner: root
group: root
mode: 00644
loop: "{{ interfaces }}"
loop_control:
loop_var: interface
vars:
interfaces: "{{ network.interfaces | default([]) | selectattr('bridge', 'undefined') }}"
register: network_systemd_interface
tags:
- network_systemd_interface
when: network.skip | default(False) != True
- name: "Build split network configuration (interfaces)"
template:
src: templates/etc/network/interfaces.d/interface.j2
dest: "/etc/network/interfaces.d/{{ interface.name }}"
owner: root
group: root
mode: 00644
loop: "{{ interfaces }}"
loop_control:
loop_var: interface
vars:
interfaces: "{{ network.interfaces | default([]) }}"
interface_network: "{{ interface.network | default(False) }}"
register: network_interfaces_split
when: network.skip | default(False) != True and network.single_file | default(False) == False
tags:
- network_interfaces
- name: "Build split network configuration (main)"
template:
src: templates/etc/network/interfaces.j2
dest: "/etc/network/interfaces"
owner: root
group: root
mode: 00644
vars:
interfaces: "{{ [] }}"
register: network_interfaces_split_main
when: network.skip | default(False) != True and network.single_file | default(False) == False
tags:
- network_interfaces
- name: "Build combined network configuration"
template:
src: templates/etc/network/interfaces.j2
dest: "/etc/network/interfaces"
owner: root
group: root
mode: 00644
vars:
interfaces: "{{ network.interfaces | default([]) }}"
register: network_interfaces_single
when: network.skip | default(False) != True and network.single_file | default(False) == True
tags:
- network_interfaces
- name: "Remove split network configuration files"
file:
path: "/etc/network/interfaces.d/{{ interface.name }}"
state: absent
loop: "{{ interfaces }}"
loop_control:
loop_var: interface
vars:
interfaces: "{{ network.interfaces | default([]) }}"
interface_network: "{{ interface.network | default(False) }}"
register: network_interfaces_split_removed
when: network.skip | default(False) != True and network.single_file | default(False) == True
tags:
- network_interfaces
- name: "Set hostname (/etc/hosts)"
template:
src: templates/etc/hosts.j2
dest: "/etc/hosts"
owner: root
group: root
mode: 00644
tags:
- network_hostname
- name: "Set hostname (/etc/hostname)"
template:
src: templates/etc/hostname.j2
dest: "/etc/hostname"
owner: root
group: root
mode: 00644
tags:
- network_hostname
- name: "Restart networking"
systemd_service:
name: networking
daemon_reload: true
state: restarted
when: network.skip | default(False) != True and (network_systemd_interface.changed or network_interfaces_split.changed or network_interfaces_split_main.changed or network_interfaces_single.changed or network_interfaces_split_removed.changed)
tags:
- network_restart
- name: "Configure /etc/resolv.conf"
template:
src: templates/etc/resolv.conf.j2
dest: /etc/resolv.conf
owner: root
group: root
mode: 00644
vars:
domain: "{{ network.domain | default('local') }}"
search_domains: "{{ network.search_domains | default([domain]) }}"
nameservers: "{{ network.nameservers | default(['9.9.9.9', '149.112.112.112']) }}"
tags:
- network_resolv_conf