aboutsummaryrefslogtreecommitdiffstats
path: root/roles/sshd_keys/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/sshd_keys/tasks/main.yml')
-rw-r--r--roles/sshd_keys/tasks/main.yml41
1 files changed, 41 insertions, 0 deletions
diff --git a/roles/sshd_keys/tasks/main.yml b/roles/sshd_keys/tasks/main.yml
new file mode 100644
index 0000000..5d45e34
--- /dev/null
+++ b/roles/sshd_keys/tasks/main.yml
@@ -0,0 +1,41 @@
+---
+
+- name: get ssh keys for all users
+ ansible.builtin.find:
+ paths: "{{ sshd_keys_paths }}"
+ file_type: link
+ recurse: true
+ delegate_to: localhost
+ run_once: true
+ register: sshd_keys_result_find
+
+- name: set sshd_keys_found_users variable
+ ansible.builtin.set_fact:
+ sshd_keys_found_users: "{{ sshd_keys_result_find.files
+ | map(attribute='path')
+ | map('dirname')
+ | map('basename')
+ | unique }}"
+
+- name: create groups for users with ssh keys
+ ansible.builtin.group:
+ name: "{{ item }}"
+ state: present
+ loop: "{{ sshd_keys_found_users }}"
+
+- name: create users with ssh keys
+ ansible.builtin.user:
+ name: "{{ item }}"
+ group: "{{ item }}"
+ state: present
+ loop: "{{ sshd_keys_found_users }}"
+
+- name: synchronize ssh keys
+ ansible.posix.authorized_key:
+ user: "{{ item.path | dirname | basename }}"
+ state: present
+ key: "{{ lookup('file', item.path) }}"
+ loop_control:
+ label: "{{ item.path }}: {{ item.path | dirname | basename }}"
+ loop: "{{ sshd_keys_result_find.files }}"
+ failed_when: false
remember that computers suck.