summaryrefslogtreecommitdiffstats
path: root/roles/user/tasks
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-08-11 00:32:01 +0200
committerAhmed Abdelhalim <[email protected]>2025-08-11 00:32:01 +0200
commitb9b0620b988870525b9972b537b8e22a0c6499af (patch)
treef150e474c8d6a2448443ade1184f9c0f01ea4f06 /roles/user/tasks
parent20ab3adb6b08944235c707490449c8906394564f (diff)
Add user role
Diffstat (limited to 'roles/user/tasks')
-rw-r--r--roles/user/tasks/install-archlinux.yml7
-rw-r--r--roles/user/tasks/install-debian.yml7
-rw-r--r--roles/user/tasks/main.yml64
3 files changed, 78 insertions, 0 deletions
diff --git a/roles/user/tasks/install-archlinux.yml b/roles/user/tasks/install-archlinux.yml
new file mode 100644
index 00000000..84a7f0c2
--- /dev/null
+++ b/roles/user/tasks/install-archlinux.yml
@@ -0,0 +1,7 @@
+---
+- name: "Ensure sudo installed"
+ become: true
+ community.general.pacman:
+ name: "sudo"
+ state: "present"
+ tags: [required_for_boot]
diff --git a/roles/user/tasks/install-debian.yml b/roles/user/tasks/install-debian.yml
new file mode 100644
index 00000000..6d59e934
--- /dev/null
+++ b/roles/user/tasks/install-debian.yml
@@ -0,0 +1,7 @@
+---
+- name: "Ensure sudo installed"
+ become: true
+ ansible.builtin.apt:
+ name: "sudo"
+ state: "present"
+ tags: [required_for_boot]
diff --git a/roles/user/tasks/main.yml b/roles/user/tasks/main.yml
new file mode 100644
index 00000000..4bc5fe4f
--- /dev/null
+++ b/roles/user/tasks/main.yml
@@ -0,0 +1,64 @@
+---
+- 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:
+ sudo_group: "sudo"
+ tags: [required_for_boot]
+
+- 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
+ tags: [required_for_boot]
+
+- name: "Ensure user groups are created"
+ become: true
+ ansible.builtin.group:
+ name: "{{ item }}"
+ state: "present"
+ with_items: "{{ user_groups }}"
+ tags: [required_for_boot]
+
+- name: "Create user: {{ username }}"
+ become: true
+ ansible.builtin.user:
+ name: "{{ username }}"
+ append: false
+ create_home: true
+ generate_ssh_key: false
+ groups: "{{ user_groups }}"
+ password: "{{ user_password }}"
+ state: "present"
+ update_password: "on_create"
+ register: user
+ notify: "Require password change"
+ tags: [required_for_boot]
+
+- name: "Create user ssh directory"
+ ansible.builtin.file:
+ path: "/home/{{ username }}/.ssh/"
+ mode: "0700"
+ owner: "{{ username }}"
+ state: "directory"
+ tags: [required_for_boot]
+
+- name: "Add user ssh authorized_keys"
+ ansible.builtin.copy:
+ dest: "/home/{{ username }}/.ssh/authorized_keys"
+ mode: "0600"
+ owner: "{{ username }}"
+ content: |
+ {{ user_public_keys | join('\n') }}
+ tags: [required_for_boot]