154 lines
3.9 KiB
YAML
154 lines
3.9 KiB
YAML
|
---
|
||
|
|
||
|
- name: "install systemd-networkd"
|
||
|
block:
|
||
|
- name: "install systemd-networkd (Arch Linux)"
|
||
|
pacman:
|
||
|
name: systemd-networkd
|
||
|
state: present
|
||
|
when: ansible_os_family == "Archlinux"
|
||
|
- name: "install systemd-networkd (RedHat)"
|
||
|
yum:
|
||
|
name: systemd-networkd
|
||
|
state: present
|
||
|
when: ansible_os_family == "RedHat"
|
||
|
|
||
|
- name: "uninstall NetworkManager"
|
||
|
block:
|
||
|
- name: "uninstall NetworkManager (Arch Linux)"
|
||
|
pacman:
|
||
|
name: NetworkManager
|
||
|
state: absent
|
||
|
when: ansible_os_family == "Archlinux"
|
||
|
- name: "uninstall systemd-networkd (RedHat)"
|
||
|
yum:
|
||
|
name: NetworkManager
|
||
|
state: absent
|
||
|
when: ansible_os_family == "RedHat"
|
||
|
|
||
|
- name: "remove existing systemd-networkd configuration"
|
||
|
file:
|
||
|
path: "/etc/systemd/network"
|
||
|
state: absent
|
||
|
|
||
|
- name: "create systemd-networkd directory"
|
||
|
file:
|
||
|
path: "/etc/systemd/network"
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0755
|
||
|
state: directory
|
||
|
|
||
|
- name: "setup network interfaces via systemd-networkd (DHCP)"
|
||
|
block:
|
||
|
- name: filter dhcp interfaces
|
||
|
set_fact:
|
||
|
dhcp_interfaces: "{{ (dhcp_interfaces | default([])) + [ item ] }}"
|
||
|
when: item.dhcp
|
||
|
with_items: "{{ networking }}"
|
||
|
|
||
|
- name: "configure network interface {{ item.name }} (DHCP)"
|
||
|
template:
|
||
|
src: 10-dhcp.network.j2
|
||
|
dest: "/etc/systemd/network/{{ item.filename }}"
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0644
|
||
|
when: dhcp_interfaces is defined
|
||
|
with_items: "{{ dhcp_interfaces }}"
|
||
|
|
||
|
- name: "setup network interfaces via systemd-networkd (static)"
|
||
|
block:
|
||
|
- name: filter static interfaces
|
||
|
set_fact:
|
||
|
static_interfaces: "{{ (static_interfaces | default([])) + [ item ] }}"
|
||
|
when: not item.dhcp
|
||
|
with_items: "{{ networking }}"
|
||
|
|
||
|
- name: "configure network interface {{ item.name }} (static)"
|
||
|
template:
|
||
|
src: 10-static.network.j2
|
||
|
dest: "/etc/systemd/network/{{ item.filename }}"
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0644
|
||
|
when: static_interfaces is defined
|
||
|
with_items: "{{ static_interfaces }}"
|
||
|
|
||
|
- name: "setup wpa_supplicant configurations"
|
||
|
when: networking_wpa_supplicant is defined and networking_wpa_supplicant | length > 0
|
||
|
block:
|
||
|
- name: "copy systemd unit for custom wpa_supplicant@.service"
|
||
|
copy:
|
||
|
src: files/wpa_supplicant@.service
|
||
|
dest: /etc/systemd/system/wpa_supplicant@.service
|
||
|
owner: root
|
||
|
group: root
|
||
|
|
||
|
- name: "create wpa_supplicant configuration files"
|
||
|
template:
|
||
|
src: wpa_supplicant.conf.j2
|
||
|
dest: "/etc/wpa_supplicant/wpa_supplicant-{{ item.interface }}.conf"
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0640
|
||
|
with_items: "{{ networking_wpa_supplicant }}"
|
||
|
|
||
|
- name: "start and enable wpa_supplicant for interfaces"
|
||
|
service:
|
||
|
name: wpa_supplicant@{{ item.interface }}.service
|
||
|
state: started
|
||
|
enabled: yes
|
||
|
with_items: "{{ networking_wpa_supplicant }}"
|
||
|
|
||
|
- name: create symlink to resolv.conf
|
||
|
file:
|
||
|
src: /run/systemd/resolve/stub-resolv.conf
|
||
|
dest: /etc/resolv.conf
|
||
|
state: link
|
||
|
force: yes
|
||
|
follow: no
|
||
|
owner: root
|
||
|
group: root
|
||
|
|
||
|
- name: enable networkd
|
||
|
service:
|
||
|
name: systemd-networkd
|
||
|
enabled: yes
|
||
|
daemon_reload: yes
|
||
|
|
||
|
- name: start and enable resolved
|
||
|
service:
|
||
|
name: systemd-resolved
|
||
|
state: started
|
||
|
enabled: yes
|
||
|
daemon_reload: yes
|
||
|
|
||
|
- name: set timezone
|
||
|
timezone:
|
||
|
name: "{{ networking_timezone }}"
|
||
|
|
||
|
- name: start and enable timesyncd
|
||
|
service:
|
||
|
name: systemd-timesyncd
|
||
|
state: started
|
||
|
enabled: yes
|
||
|
daemon_reload: yes
|
||
|
|
||
|
- name: start systemd-networkd after dbus.sock
|
||
|
block:
|
||
|
- name: create drop-in for systemd-networkd
|
||
|
file:
|
||
|
path: /etc/systemd/system/systemd-networkd.d
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0755
|
||
|
state: directory
|
||
|
- name: template after-dbus.conf
|
||
|
template:
|
||
|
src: after-dbus.conf.j2
|
||
|
dest: /etc/systemd/system/systemd-networkd.d/after-dbus.conf
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: 0644
|
||
|
when: ansible_os_family == "RedHat"
|