summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-08-11 00:32:04 +0200
committerAhmed Abdelhalim <[email protected]>2025-08-11 00:32:04 +0200
commite02325cde6624243f3498226301018dca037c9cd (patch)
treee3f1656e50060064da5b3b062fef33263fd90072
parent6bca3c0f2a68b4c4a2a877de2fb8c343e8fda4f9 (diff)
Simplify playbook by requiring the required_for_boot tag on roles
Instead of optimizing for task execution for boot, it's simpler and almost as equally safe (if not even more) to require the role for boot instead of requiring each of it's needed tasks. This will also prevent having internal bugs because a set fact wasn't required for boot and didn't add the info (similar to the fix in commit: 9f72c58)
-rw-r--r--roles/network/tasks/install-archlinux.yml1
-rw-r--r--roles/network/tasks/install-debian.yml4
-rw-r--r--roles/network/tasks/main.yml6
-rw-r--r--roles/ssh/tasks/install-archlinux.yml1
-rw-r--r--roles/ssh/tasks/install-debian.yml1
-rw-r--r--roles/ssh/tasks/main.yml10
-rw-r--r--roles/user/tasks/install-archlinux.yml1
-rw-r--r--roles/user/tasks/install-debian.yml1
-rw-r--r--roles/user/tasks/main.yml8
-rw-r--r--site.yml3
10 files changed, 3 insertions, 33 deletions
diff --git a/roles/network/tasks/install-archlinux.yml b/roles/network/tasks/install-archlinux.yml
index 788febea..b238d0cb 100644
--- a/roles/network/tasks/install-archlinux.yml
+++ b/roles/network/tasks/install-archlinux.yml
@@ -5,4 +5,3 @@
name: "{{ network_packages }}"
state: "present"
update_cache: true
- tags: [required_for_boot]
diff --git a/roles/network/tasks/install-debian.yml b/roles/network/tasks/install-debian.yml
index 74c527d5..6b5455a8 100644
--- a/roles/network/tasks/install-debian.yml
+++ b/roles/network/tasks/install-debian.yml
@@ -5,7 +5,6 @@
pkg: "{{ network_packages }}"
state: "present"
update_cache: true
- tags: [required_for_boot]
- name: "Set network_default_services facts"
ansible.builtin.set_fact:
@@ -14,7 +13,6 @@
- "avahi-daemon"
- "networking"
- "wpa_supplicant"
- tags: [required_for_boot]
- name: "Stop/Disable conflicting services"
become: true
@@ -34,7 +32,6 @@
changed_when: true
when: ansible_is_chroot
# noqa: command-instead-of-module module doesn't work inside chroot
- tags: [required_for_boot]
- name: "Ensure avahi packages are removed"
become: true
@@ -45,4 +42,3 @@
state: "absent"
autoremove: true
purge: true
- tags: [required_for_boot]
diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml
index cb8f1fd9..54b0a9ed 100644
--- a/roles/network/tasks/main.yml
+++ b/roles/network/tasks/main.yml
@@ -7,7 +7,6 @@
content: |
{{ hostname }}
when: hostname is defined
- tags: [required_for_boot]
- name: "Configure /etc/hosts"
become: true
@@ -22,15 +21,12 @@
ff02::2 ip6-allrouters
when: hostname is defined
# Not required for boot
- tags: []
- name: "Include OS-specific variables"
ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml"
- tags: [required_for_boot]
- name: "Install OS-specific packages"
ansible.builtin.include_tasks: "install-{{ ansible_os_family | lower }}.yml"
- tags: [required_for_boot]
- name: "(chroot): Ensure network_services are enabled"
ansible.builtin.command:
@@ -39,11 +35,9 @@
with_items: "{{ network_services }}"
when: ansible_is_chroot
# noqa: command-instead-of-module module doesn't work inside chroot
- tags: [required_for_boot]
- name: "Configure NetworkManager"
become: true
- tags: [required_for_boot]
notify:
- "Reload systemd"
- "Restart NetworkManager"
diff --git a/roles/ssh/tasks/install-archlinux.yml b/roles/ssh/tasks/install-archlinux.yml
index 58b6fa9d..2086c6d1 100644
--- a/roles/ssh/tasks/install-archlinux.yml
+++ b/roles/ssh/tasks/install-archlinux.yml
@@ -5,4 +5,3 @@
name: "{{ ssh_package_name }}"
state: present
update_cache: true
- tags: [required_for_boot]
diff --git a/roles/ssh/tasks/install-debian.yml b/roles/ssh/tasks/install-debian.yml
index 452bf003..316a0096 100644
--- a/roles/ssh/tasks/install-debian.yml
+++ b/roles/ssh/tasks/install-debian.yml
@@ -5,4 +5,3 @@
name: "{{ ssh_package_name }}"
state: "present"
update_cache: true
- tags: [required_for_boot]
diff --git a/roles/ssh/tasks/main.yml b/roles/ssh/tasks/main.yml
index f88b9be4..c09d00e1 100644
--- a/roles/ssh/tasks/main.yml
+++ b/roles/ssh/tasks/main.yml
@@ -1,11 +1,9 @@
---
- name: "Include OS-specific variables"
ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml"
- tags: [required_for_boot]
- name: "Install OS-specific packages"
ansible.builtin.include_tasks: "install-{{ ansible_os_family | lower }}.yml"
- tags: [required_for_boot]
- name: "Ensure ssh_service is enabled"
become: true
@@ -14,7 +12,6 @@
state: "started"
enabled: true
when: not ansible_is_chroot
- tags: [required_for_boot]
- name: "(chroot): Ensure ssh_service enabled"
# noqa: command-instead-of-module intentional isnide chroot
@@ -22,28 +19,24 @@
cmd: "systemctl enable {{ ssh_service_name }}"
when: ansible_is_chroot
changed_when: true
- tags: [required_for_boot]
- name: "Generate /etc/ssh/ RSA host key"
become: true
ansible.builtin.command:
cmd: "ssh-keygen -q -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -C '' -N ''"
creates: "/etc/ssh/ssh_host_rsa_key"
- tags: [required_for_boot]
- name: "Generate /etc/ssh/ ECDSA host key"
become: true
ansible.builtin.command:
cmd: "ssh-keygen -q -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key -C '' -N ''"
creates: "/etc/ssh/ssh_host_ecdsa_key"
- tags: [required_for_boot]
- name: "Generate /etc/ssh/ Ed25519 host key"
become: true
ansible.builtin.command:
cmd: "ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -C '' -N ''"
creates: "/etc/ssh/ssh_host_ed25519_key"
- tags: [required_for_boot]
- name: "Configure sshd_config"
become: true
@@ -68,7 +61,6 @@
notify:
- "Reload systemd"
- "Restart ssh"
- tags: [required_for_boot]
- name: "Configure ssh authentication policy"
become: true
@@ -87,7 +79,6 @@
X11Forwarding no
notify:
- "Restart ssh"
- tags: [required_for_boot]
- name: "Add arg.username to allowed users"
become: true
@@ -99,4 +90,3 @@
AllowUsers {{ username }}
notify:
- "Restart ssh"
- tags: [required_for_boot]
diff --git a/roles/user/tasks/install-archlinux.yml b/roles/user/tasks/install-archlinux.yml
index 0813c342..15abe034 100644
--- a/roles/user/tasks/install-archlinux.yml
+++ b/roles/user/tasks/install-archlinux.yml
@@ -5,4 +5,3 @@
name: "sudo"
state: "present"
update_cache: true
- tags: [required_for_boot]
diff --git a/roles/user/tasks/install-debian.yml b/roles/user/tasks/install-debian.yml
index d70fd3ce..d602e471 100644
--- a/roles/user/tasks/install-debian.yml
+++ b/roles/user/tasks/install-debian.yml
@@ -5,4 +5,3 @@
name: "sudo"
state: "present"
update_cache: true
- tags: [required_for_boot]
diff --git a/roles/user/tasks/main.yml b/roles/user/tasks/main.yml
index eb38f95e..71deaeed 100644
--- a/roles/user/tasks/main.yml
+++ b/roles/user/tasks/main.yml
@@ -1,18 +1,15 @@
---
- name: "Install OS-specific packages"
ansible.builtin.include_tasks: "install-{{ ansible_os_family | lower }}.yml"
- tags: [required_for_boot]
- name: "Set sudo group fact"
ansible.builtin.set_fact:
# noqa var-naming[no-role-prefix] the sudo group is global and better named this way than user_sudo_group
sudo_group: "sudo"
- tags: [required_for_boot]
- name: "Set user groups fact"
ansible.builtin.set_fact:
user_groups: "{{ ([username, sudo_group] + user_groups) | unique }}"
- tags: [required_for_boot]
- name: "Configure permissions for group: {{ sudo_group }}"
become: true
@@ -23,7 +20,6 @@
nopassword: false
sudoers_path: "/etc/sudoers.d"
state: present
- tags: [required_for_boot]
- name: "Ensure user groups are created"
become: true
@@ -31,7 +27,6 @@
name: "{{ item }}"
state: "present"
with_items: "{{ user_groups }}"
- tags: [required_for_boot]
# noqa var-naming[no-role-prefix] username is more understandable than user_name
- name: "Create user: {{ username }}"
@@ -47,7 +42,6 @@
update_password: "on_create"
register: user
notify: "Require password change"
- tags: [required_for_boot]
- name: "Create user ssh directory"
ansible.builtin.file:
@@ -55,7 +49,6 @@
mode: "0700"
owner: "{{ username }}"
state: "directory"
- tags: [required_for_boot]
- name: "Add user ssh authorized_keys"
ansible.builtin.copy:
@@ -64,4 +57,3 @@
owner: "{{ username }}"
content: |
{{ user_public_keys | join('\n') }}
- tags: [required_for_boot]
diff --git a/site.yml b/site.yml
index b27e77c8..88fb32d4 100644
--- a/site.yml
+++ b/site.yml
@@ -6,5 +6,8 @@
- chroot
roles:
- role: "network"
+ tags: ["required_for_boot"]
- role: "user"
+ tags: ["required_for_boot"]
- role: "ssh"
+ tags: ["required_for_boot"]