summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-09-10 17:52:58 +0200
committerAhmed Abdelhalim <[email protected]>2025-09-10 17:52:58 +0200
commite9e609e89ad879e10e58f2c4fcfa572f60d6dfad (patch)
tree6353c98fa1b6ad69c21931ac299e8522f48c645f
parenta5983fd890fc94650e9cc0b890220931ad3b3a88 (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.yml18
-rw-r--r--roles/acl/tasks/main.yml6
-rw-r--r--roles/curl/meta/main.yml18
-rw-r--r--roles/curl/tasks/main.yml6
-rw-r--r--roles/docker/meta/main.yml3
-rw-r--r--roles/network/handlers/main.yml6
-rw-r--r--roles/network/meta/main.yml3
-rw-r--r--roles/network/tasks/main.yml4
-rw-r--r--roles/pihole/handlers/main.yml6
-rw-r--r--roles/pihole/meta/main.yml4
-rw-r--r--roles/podman/meta/main.yml3
-rw-r--r--roles/ssh/handlers/main.yml4
-rw-r--r--roles/ssh/meta/main.yml3
-rw-r--r--roles/sudo/meta/main.yml18
-rw-r--r--roles/sudo/tasks/main.yml17
-rw-r--r--roles/systemd/meta/main.yml18
-rw-r--r--roles/systemd/tasks/main.yml6
-rw-r--r--roles/user/meta/main.yml3
-rw-r--r--roles/user/tasks/main.yml24
-rw-r--r--roles/wg_portal/meta/main.yml24
-rw-r--r--roles/wg_portal/tasks/main.yml8
-rw-r--r--roles/wireguard/meta/main.yml4
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"