From 6201647b6a31ba0f6dfcec8bd0ab335aacba9ff6 Mon Sep 17 00:00:00 2001 From: Leonidas Spyropoulos <artafinde@gmail.com> Date: Fri, 23 Apr 2021 11:59:37 +0100 Subject: [PATCH] New shared networking role. This is shared between common and install_arch roles Closed: #288 Signed-off-by: Leonidas Spyropoulos <artafinde@gmail.com> --- roles/common/defaults/main.yml | 2 - roles/common/handlers/main.yml | 6 --- roles/common/tasks/main.yml | 32 ++----------- roles/install_arch/tasks/main.yml | 29 +++--------- .../templates/10-dhcp-ethernet.network.j2 | 1 - .../templates/10-static-ethernet.network.j2 | 1 - .../defaults/main.yml | 1 + .../files/hcloud-init | 0 .../files/hcloud-init.service | 1 + roles/networking/handlers/main.yml | 8 ++++ roles/networking/tasks/main.yml | 45 +++++++++++++++++++ .../templates/10-dhcp-ethernet.network.j2 | 0 .../templates/10-static-ethernet.network.j2 | 0 .../templates/resolv.conf.j2 | 0 14 files changed, 63 insertions(+), 63 deletions(-) delete mode 120000 roles/install_arch/templates/10-dhcp-ethernet.network.j2 delete mode 120000 roles/install_arch/templates/10-static-ethernet.network.j2 rename roles/{install_arch => networking}/defaults/main.yml (73%) rename roles/{install_arch => networking}/files/hcloud-init (100%) rename roles/{install_arch => networking}/files/hcloud-init.service (95%) create mode 100644 roles/networking/handlers/main.yml create mode 100644 roles/networking/tasks/main.yml rename roles/{common => networking}/templates/10-dhcp-ethernet.network.j2 (100%) rename roles/{common => networking}/templates/10-static-ethernet.network.j2 (100%) rename roles/{common => networking}/templates/resolv.conf.j2 (100%) diff --git a/roles/common/defaults/main.yml b/roles/common/defaults/main.yml index 0760ecf91..ee917a2f5 100644 --- a/roles/common/defaults/main.yml +++ b/roles/common/defaults/main.yml @@ -1,5 +1,3 @@ --- configure_network: false enable_zram_swap: false -network_interface: "e*" -dns_servers: [] diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml index a55336f43..27008abdc 100644 --- a/roles/common/handlers/main.yml +++ b/roles/common/handlers/main.yml @@ -1,11 +1,5 @@ --- -- name: restart networkd - systemd: - name: systemd-networkd - state: restarted - daemon_reload: true - - name: restart journald systemd: name: systemd-journald diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 11b4e884d..b6a5e35a4 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -1,9 +1,5 @@ --- -- name: set fact for local dns resolver in use - set_fact: - host_has_local_dns_resolver: "{{ dns_servers|length == 1 and '127.0.0.1' in dns_servers }}" - - name: install inetutils for hostname pacman: name=inetutils state=present @@ -63,32 +59,10 @@ - name: generate ssh key for root command: ssh-keygen -b 4096 -N "" -f /root/.ssh/id_rsa creates="/root/.ssh/id_rsa" -- name: configure network - template: src=10-static-ethernet.network.j2 dest=/etc/systemd/network/10-static-ethernet.network owner=root group=root mode=0644 - notify: - - restart networkd - when: configure_network - -- name: create symlink to resolv.conf - file: src=/run/systemd/resolve/stub-resolv.conf dest=/etc/resolv.conf state=link force=yes owner=root group=root mode=0755 - when: configure_network and not host_has_local_dns_resolver - -- name: create resolv.conf - template: src=resolv.conf.j2 dest=/etc/resolv.conf owner=root group=root mode=0644 - when: configure_network and host_has_local_dns_resolver - -- name: start networkd - service: name=systemd-networkd state=started enabled=yes - when: configure_network - -- name: start resolved - service: - name: systemd-resolved - state: "{{'stopped' if host_has_local_dns_resolver else 'started'}}" - enabled: "{{'no' if host_has_local_dns_resolver else 'yes'}}" +- name: configure networking + include_role: + name: networking when: configure_network - tags: - - this - name: configure tcp receive window limits sysctl: diff --git a/roles/install_arch/tasks/main.yml b/roles/install_arch/tasks/main.yml index 2f416a5d3..bf8c3838a 100644 --- a/roles/install_arch/tasks/main.yml +++ b/roles/install_arch/tasks/main.yml @@ -122,27 +122,11 @@ register: chroot_mkinitcpio changed_when: "chroot_mkinitcpio.rc == 0" -- name: configure network (static) - template: src=10-static-ethernet.network.j2 dest=/mnt/etc/systemd/network/10-static-ethernet.network owner=root group=root mode=0644 - when: not dhcp|default(false) - -- name: configure network (dhcp) - template: src=10-dhcp-ethernet.network.j2 dest=/mnt/etc/systemd/network/10-dhcp-ethernet.network owner=root group=root mode=0644 - when: dhcp|default(false) - -- name: install hcloud-init - copy: src=hcloud-init dest=/mnt/usr/local/bin/hcloud-init owner=root group=root mode=0755 - when: "'hcloud' in group_names or inventory_hostname == 'packer-base-image'" - -- name: install hcloud-init.service - copy: src=hcloud-init.service dest=/mnt/etc/systemd/system/hcloud-init.service owner=root group=root mode=0644 - when: "'hcloud' in group_names or inventory_hostname == 'packer-base-image'" - -- name: enable hcloud-init inside chroot - command: chroot /mnt systemctl enable hcloud-init - register: chroot_systemd_services - changed_when: "chroot_systemd_services.rc == 0" - when: "'hcloud' in group_names or inventory_hostname == 'packer-base-image'" +- name: configure networking + include_role: + name: networking + vars: + chroot_path: "/mnt" - name: provide default mount options (btrfs) lineinfile: @@ -180,9 +164,6 @@ - name: configure sshd template: src=sshd_config.j2 dest=/mnt/etc/ssh/sshd_config owner=root group=root mode=0644 -- name: create symlink to resolv.conf - file: src=/run/systemd/resolve/stub-resolv.conf dest=/mnt/etc/resolv.conf state=link force=yes owner=root group=root mode=0644 - - name: clean pacman cache command: yes | chroot /mnt pacman -Scc register: chroot_pacman_clean_cache diff --git a/roles/install_arch/templates/10-dhcp-ethernet.network.j2 b/roles/install_arch/templates/10-dhcp-ethernet.network.j2 deleted file mode 120000 index a152d98ea..000000000 --- a/roles/install_arch/templates/10-dhcp-ethernet.network.j2 +++ /dev/null @@ -1 +0,0 @@ -../../common/templates/10-dhcp-ethernet.network.j2 \ No newline at end of file diff --git a/roles/install_arch/templates/10-static-ethernet.network.j2 b/roles/install_arch/templates/10-static-ethernet.network.j2 deleted file mode 120000 index d73e3a3b2..000000000 --- a/roles/install_arch/templates/10-static-ethernet.network.j2 +++ /dev/null @@ -1 +0,0 @@ -../../common/templates/10-static-ethernet.network.j2 \ No newline at end of file diff --git a/roles/install_arch/defaults/main.yml b/roles/networking/defaults/main.yml similarity index 73% rename from roles/install_arch/defaults/main.yml rename to roles/networking/defaults/main.yml index f04986c35..df6f06dc7 100644 --- a/roles/install_arch/defaults/main.yml +++ b/roles/networking/defaults/main.yml @@ -1,3 +1,4 @@ --- +chroot_path: "" network_interface: "e*" dns_servers: [] diff --git a/roles/install_arch/files/hcloud-init b/roles/networking/files/hcloud-init similarity index 100% rename from roles/install_arch/files/hcloud-init rename to roles/networking/files/hcloud-init diff --git a/roles/install_arch/files/hcloud-init.service b/roles/networking/files/hcloud-init.service similarity index 95% rename from roles/install_arch/files/hcloud-init.service rename to roles/networking/files/hcloud-init.service index 54d433f50..a293cedb6 100644 --- a/roles/install_arch/files/hcloud-init.service +++ b/roles/networking/files/hcloud-init.service @@ -10,6 +10,7 @@ Wants=systemd-networkd.service [Service] ExecStart=/usr/local/bin/hcloud-init Type=oneshot +RemainAfterExit=yes StandardOutput=journal StandardError=journal diff --git a/roles/networking/handlers/main.yml b/roles/networking/handlers/main.yml new file mode 100644 index 000000000..ebbc6ef0c --- /dev/null +++ b/roles/networking/handlers/main.yml @@ -0,0 +1,8 @@ +--- + +- name: restart networkd + systemd: + name: systemd-networkd + state: restarted + daemon_reload: true + when: chroot_path | length == 0 diff --git a/roles/networking/tasks/main.yml b/roles/networking/tasks/main.yml new file mode 100644 index 000000000..278967e44 --- /dev/null +++ b/roles/networking/tasks/main.yml @@ -0,0 +1,45 @@ +--- +- name: set fact for local dns resolver in use + set_fact: + host_has_local_dns_resolver: "{{ dns_servers|length == 1 and '127.0.0.1' in dns_servers }}" + +- name: configure network (static) + template: src=10-static-ethernet.network.j2 dest={{ chroot_path }}/etc/systemd/network/10-static-ethernet.network owner=root group=root mode=0644 + notify: + - restart networkd + when: not dhcp|default(false) + +- name: configure network (dhcp) + template: src=10-dhcp-ethernet.network.j2 dest={{ chroot_path }}/etc/systemd/network/10-dhcp-ethernet.network owner=root group=root mode=0644 + notify: + - restart networkd + when: dhcp|default(false) + +- name: create symlink to resolv.conf + file: src=/run/systemd/resolve/stub-resolv.conf dest={{ chroot_path }}/etc/resolv.conf state=link force=yes owner=root group=root mode=0644 + +- name: install hcloud-init + copy: src=hcloud-init dest={{ chroot_path }}/usr/local/bin/hcloud-init owner=root group=root mode=0755 + when: "'hcloud' in group_names or inventory_hostname == 'packer-base-image'" + +- name: install hcloud-init.service + copy: src=hcloud-init.service dest={{ chroot_path }}/etc/systemd/system/hcloud-init.service owner=root group=root mode=0644 + when: "'hcloud' in group_names or inventory_hostname == 'packer-base-image'" + +- name: enable hcloud-init inside chroot + command: chroot {{ chroot_path }} systemctl enable hcloud-init + register: chroot_systemd_services + changed_when: "chroot_systemd_services.rc == 0" + when: chroot_path | length != 0 and ("'hcloud' in group_names or inventory_hostname == 'packer-base-image'") + +- name: start and enable hcloud-init + service: name=hcloud-init daemon_reload=yes state=started enabled=yes + when: chroot_path | length == 0 + +- name: start and enable networkd + service: name=systemd-networkd state=started enabled=yes + when: chroot_path | length == 0 + +- name: start and enable resolved + service: name=systemd-resolved state=started enabled=yes + when: chroot_path | length == 0 diff --git a/roles/common/templates/10-dhcp-ethernet.network.j2 b/roles/networking/templates/10-dhcp-ethernet.network.j2 similarity index 100% rename from roles/common/templates/10-dhcp-ethernet.network.j2 rename to roles/networking/templates/10-dhcp-ethernet.network.j2 diff --git a/roles/common/templates/10-static-ethernet.network.j2 b/roles/networking/templates/10-static-ethernet.network.j2 similarity index 100% rename from roles/common/templates/10-static-ethernet.network.j2 rename to roles/networking/templates/10-static-ethernet.network.j2 diff --git a/roles/common/templates/resolv.conf.j2 b/roles/networking/templates/resolv.conf.j2 similarity index 100% rename from roles/common/templates/resolv.conf.j2 rename to roles/networking/templates/resolv.conf.j2 -- GitLab