- bootstrap.yml: support pkg for FreeBSD sudo/python3 install - base role: FreeBSD package sets, sudoers paths, host key regen, admin group, usermod process-in-use tolerance - freebsd role: pkg update/upgrade tasks - general role: standalone hostname tasks (ungated from network.skip), hostname_override support - inspircd role: deploy configs for ca/us manero.org irc servers with vault-backed secrets - uisp role: download and run installer on fresh hosts, skip if already running - netbox role: stop services before usermod to avoid process-in-use failures - hosts: add irc_servers group, ca/us.manero.org (Tailscale), drop staging.towerops.net - all.yml: graham user gets static ed25519 key alongside github keys
112 lines
3.5 KiB
YAML
112 lines
3.5 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"
|
|
ansible.builtin.template:
|
|
src: templates/etc/systemd/network/link.j2
|
|
dest: "/etc/systemd/network/10-{{ interface.name }}-nic.link"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
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)"
|
|
ansible.builtin.template:
|
|
src: templates/etc/network/interfaces.d/interface.j2
|
|
dest: "/etc/network/interfaces.d/{{ interface.name }}"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
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)"
|
|
ansible.builtin.template:
|
|
src: templates/etc/network/interfaces.j2
|
|
dest: "/etc/network/interfaces"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
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"
|
|
ansible.builtin.template:
|
|
src: templates/etc/network/interfaces.j2
|
|
dest: "/etc/network/interfaces"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
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"
|
|
ansible.builtin.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: "Restart networking"
|
|
ansible.builtin.systemd:
|
|
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"
|
|
ansible.builtin.template:
|
|
src: templates/etc/resolv.conf.j2
|
|
dest: /etc/resolv.conf
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
follow: yes
|
|
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']) }}"
|
|
when: network.skip | default(False) != True
|
|
tags:
|
|
- network_resolv_conf
|