diff options
| author | Ahmed Abdelhalim <[email protected]> | 2025-09-10 17:52:58 +0200 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2025-09-10 17:52:58 +0200 |
| commit | e9e609e89ad879e10e58f2c4fcfa572f60d6dfad (patch) | |
| tree | 6353c98fa1b6ad69c21931ac299e8522f48c645f | |
| parent | a5983fd890fc94650e9cc0b890220931ad3b3a88 (diff) | |
Refactor role dependencies to be more module modular
This modularity means that each role can be installed in a playbook by
itself as long as the other roles exist around it.
This also straps the ensure dependency packages exist in any of the
roles tasks, they should be moved to their own roles and configured
properly if needed.
| -rw-r--r-- | roles/acl/meta/main.yml | 18 | ||||
| -rw-r--r-- | roles/acl/tasks/main.yml | 6 | ||||
| -rw-r--r-- | roles/curl/meta/main.yml | 18 | ||||
| -rw-r--r-- | roles/curl/tasks/main.yml | 6 | ||||
| -rw-r--r-- | roles/docker/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/network/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/network/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/network/tasks/main.yml | 4 | ||||
| -rw-r--r-- | roles/pihole/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/pihole/meta/main.yml | 4 | ||||
| -rw-r--r-- | roles/podman/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/ssh/handlers/main.yml | 4 | ||||
| -rw-r--r-- | roles/ssh/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/sudo/meta/main.yml | 18 | ||||
| -rw-r--r-- | roles/sudo/tasks/main.yml | 17 | ||||
| -rw-r--r-- | roles/systemd/meta/main.yml | 18 | ||||
| -rw-r--r-- | roles/systemd/tasks/main.yml | 6 | ||||
| -rw-r--r-- | roles/user/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/user/tasks/main.yml | 24 | ||||
| -rw-r--r-- | roles/wg_portal/meta/main.yml | 24 | ||||
| -rw-r--r-- | roles/wg_portal/tasks/main.yml | 8 | ||||
| -rw-r--r-- | roles/wireguard/meta/main.yml | 4 |
22 files changed, 157 insertions, 49 deletions
diff --git a/roles/acl/meta/main.yml b/roles/acl/meta/main.yml new file mode 100644 index 00000000..fc945b41 --- /dev/null +++ b/roles/acl/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install acl" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/acl/tasks/main.yml b/roles/acl/tasks/main.yml new file mode 100644 index 00000000..2299967a --- /dev/null +++ b/roles/acl/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: "Ensure acl is installed" + become: true + ansible.builtin.package: + name: "acl" + state: "present" diff --git a/roles/curl/meta/main.yml b/roles/curl/meta/main.yml new file mode 100644 index 00000000..11a6a1f1 --- /dev/null +++ b/roles/curl/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install curl" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/curl/tasks/main.yml b/roles/curl/tasks/main.yml new file mode 100644 index 00000000..f705e8b7 --- /dev/null +++ b/roles/curl/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: "Ensure curl is installed" + become: true + ansible.builtin.package: + name: "curl" + state: "present" diff --git a/roles/docker/meta/main.yml b/roles/docker/meta/main.yml index 3510a3b0..d759bb19 100644 --- a/roles/docker/meta/main.yml +++ b/roles/docker/meta/main.yml @@ -1,5 +1,6 @@ --- -dependencies: [] +dependencies: + - role: "systemd" galaxy_info: author: "a14m" description: "Install Docker Engine on Linux distributions" diff --git a/roles/network/handlers/main.yml b/roles/network/handlers/main.yml index 8bd5cdec..c0cc4927 100644 --- a/roles/network/handlers/main.yml +++ b/roles/network/handlers/main.yml @@ -1,13 +1,13 @@ --- - name: "Reload systemd" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: daemon_reload: true when: not ansible_is_chroot - name: "Restart NetworkManager" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "NetworkManager" enabled: true state: "restarted" @@ -15,7 +15,7 @@ - name: "Restart systemd-resolved" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "systemd-resolved" enabled: true state: "restarted" diff --git a/roles/network/meta/main.yml b/roles/network/meta/main.yml index e0eb034f..fa562130 100644 --- a/roles/network/meta/main.yml +++ b/roles/network/meta/main.yml @@ -1,5 +1,6 @@ --- -dependencies: [] +dependencies: + - role: "systemd" galaxy_info: author: "a14m" description: "Configure basic distro networking features" diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml index 3803c496..fbcc03c6 100644 --- a/roles/network/tasks/main.yml +++ b/roles/network/tasks/main.yml @@ -23,7 +23,7 @@ - name: "Ensure network enabled services are enabled" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "{{ item }}" enabled: true state: "started" @@ -40,7 +40,7 @@ - name: "Ensure network disabled services are disabled" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "{{ item }}" enabled: false state: "stopped" diff --git a/roles/pihole/handlers/main.yml b/roles/pihole/handlers/main.yml index dca1ef52..e95e4fae 100644 --- a/roles/pihole/handlers/main.yml +++ b/roles/pihole/handlers/main.yml @@ -1,15 +1,15 @@ --- - name: "Restart pihole" - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "pihole-FTL" state: "restarted" - name: "Restart systemd-resolved" - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "systemd-resolved" state: "restarted" - name: "Restart NetworkManager" - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "NetworkManager" state: "restarted" diff --git a/roles/pihole/meta/main.yml b/roles/pihole/meta/main.yml index 59be9d68..7708f945 100644 --- a/roles/pihole/meta/main.yml +++ b/roles/pihole/meta/main.yml @@ -1,5 +1,7 @@ --- -dependencies: [] +dependencies: + - role: "network" + - role: "systemd" galaxy_info: author: "a14m" description: "Configure pihole on supported devices" diff --git a/roles/podman/meta/main.yml b/roles/podman/meta/main.yml index fdecb168..143c6faf 100644 --- a/roles/podman/meta/main.yml +++ b/roles/podman/meta/main.yml @@ -1,5 +1,6 @@ --- -dependencies: [] +dependencies: + - role: "systemd" galaxy_info: author: "a14m" description: "Install Podman container engine on Linux distributions" diff --git a/roles/ssh/handlers/main.yml b/roles/ssh/handlers/main.yml index a73aca7e..5fd0d93a 100644 --- a/roles/ssh/handlers/main.yml +++ b/roles/ssh/handlers/main.yml @@ -1,13 +1,13 @@ --- - name: "Reload systemd" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: daemon_reload: true when: not ansible_is_chroot - name: "Restart ssh" become: true - ansible.builtin.systemd_service: + ansible.builtin.systemd: name: "{{ ssh_service_name }}" state: "restarted" when: not ansible_is_chroot diff --git a/roles/ssh/meta/main.yml b/roles/ssh/meta/main.yml index bc90a3ab..d04b3eb0 100644 --- a/roles/ssh/meta/main.yml +++ b/roles/ssh/meta/main.yml @@ -1,5 +1,6 @@ --- -dependencies: [] +dependencies: + - role: systemd galaxy_info: author: "a14m" description: "Configure distro ssh with hardening" diff --git a/roles/sudo/meta/main.yml b/roles/sudo/meta/main.yml new file mode 100644 index 00000000..cadb8d3f --- /dev/null +++ b/roles/sudo/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install sudo" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/sudo/tasks/main.yml b/roles/sudo/tasks/main.yml new file mode 100644 index 00000000..a64f78d3 --- /dev/null +++ b/roles/sudo/tasks/main.yml @@ -0,0 +1,17 @@ +--- +- name: "Ensure sudo is installed" + become: true + ansible.builtin.package: + name: + - "sudo" + state: "present" + +- name: "Configure permissions for group: sudo" + become: true + community.general.sudoers: + name: "sudo" + group: "sudo" + commands: "ALL" + nopassword: false + sudoers_path: "/etc/sudoers.d" + state: present diff --git a/roles/systemd/meta/main.yml b/roles/systemd/meta/main.yml new file mode 100644 index 00000000..4e7749b5 --- /dev/null +++ b/roles/systemd/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install systemd" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/systemd/tasks/main.yml b/roles/systemd/tasks/main.yml new file mode 100644 index 00000000..b173ef5f --- /dev/null +++ b/roles/systemd/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: "Ensure systemd is installed" + become: true + ansible.builtin.package: + name: "systemd" + state: "present" diff --git a/roles/user/meta/main.yml b/roles/user/meta/main.yml index 996a5fc3..50cb8081 100644 --- a/roles/user/meta/main.yml +++ b/roles/user/meta/main.yml @@ -1,6 +1,7 @@ --- dependencies: - - "bash" + - role: "bash" + - role: "sudo" galaxy_info: author: "a14m" description: "Configure user and sudo" diff --git a/roles/user/tasks/main.yml b/roles/user/tasks/main.yml index e6e2a306..8fcb101b 100644 --- a/roles/user/tasks/main.yml +++ b/roles/user/tasks/main.yml @@ -1,29 +1,7 @@ --- -- name: "Ensure sudo is installed" - become: true - ansible.builtin.package: - name: - - "sudo" - state: "present" - -- 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" - - name: "Set user groups fact" ansible.builtin.set_fact: - user_groups: "{{ ([username, sudo_group] + user_groups) | unique }}" - -- name: "Configure permissions for group: {{ sudo_group }}" - become: true - community.general.sudoers: - name: "enable-sudo-group" - group: "{{ sudo_group }}" - commands: "ALL" - nopassword: false - sudoers_path: "/etc/sudoers.d" - state: present + user_groups: "{{ ([username, 'sudo'] + user_groups) | unique }}" - name: "Ensure user groups are created" become: true diff --git a/roles/wg_portal/meta/main.yml b/roles/wg_portal/meta/main.yml new file mode 100644 index 00000000..fa382c2d --- /dev/null +++ b/roles/wg_portal/meta/main.yml @@ -0,0 +1,24 @@ +--- +dependencies: + # These dependencies are used in the install/uninstall script + - role: "bash" + - role: "systemd" + - role: "sudo" + - role: "curl" + - role: "acl" +galaxy_info: + author: "a14m" + description: "Install and configure wg-portal VPN web interface manager" + company: "kartoffeln.work GmbH." + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/wg_portal/tasks/main.yml b/roles/wg_portal/tasks/main.yml index 87c234e1..2c167f66 100644 --- a/roles/wg_portal/tasks/main.yml +++ b/roles/wg_portal/tasks/main.yml @@ -1,12 +1,4 @@ --- -- name: "Ensure wg-portal dependencies are installed" - become: true - ansible.builtin.package: - name: - - curl - - sudo - - acl - - name: "Create wg-portal user" become: true ansible.builtin.user: diff --git a/roles/wireguard/meta/main.yml b/roles/wireguard/meta/main.yml index 22da6ddd..d0012db4 100644 --- a/roles/wireguard/meta/main.yml +++ b/roles/wireguard/meta/main.yml @@ -1,6 +1,6 @@ --- -dependencies: [] - +dependencies: + - role: "systemd" galaxy_info: author: "a14m" description: "Install and configure WireGuard VPN connections" |
