feat: Create role

This commit is contained in:
2022-10-10 11:20:20 +02:00
committed by pulsar89.5
parent 688c17fe0b
commit c570d2280e
11 changed files with 221 additions and 3 deletions

84
tasks/configuration.yml Normal file
View File

@@ -0,0 +1,84 @@
---
# tasks file for users
- name: Deploy sudoers configuration
ansible.builtin.template:
src: sudoers.j2
dest: /etc/sudoers.d/{{ user.name }}
owner: root
group: root
mode: u=rw,g=,o=
when: user.get('extras', {}).get('sudoers', '') | length > 0
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"
- name: Deploy bash_aliases
ansible.builtin.template:
src: bash_aliases.j2
dest: "~{{ user.name }}/.bash_aliases"
owner: "{{ user.name }}"
group: "{{ user.group | default(user.name) }}"
mode: u=rw,g=,o=
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"
- name: Create ssh directory
ansible.builtin.file:
state: directory
path: "~{{ user.name }}/.ssh"
owner: "{{ user.name }}"
group: "{{ user.group | default(user.name) }}"
mode: u=rwX,g=rX,o=rX
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"
- name: Deploy SSH configuration
ansible.builtin.template:
src: ssh_config.j2
dest: "~{{ user.name }}/.ssh/config"
owner: "{{ user.name }}"
group: "{{ user.group | default(user.name) }}"
mode: u=rw,g=r,o=r
when: user.get('extras', {}).get('ssh_config', '') | length > 0
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"
- name: Deploy SSH private keys
ansible.builtin.template:
src: id_ed25519.j2
dest: "~{{ user.name }}/.ssh/id_ed25519"
owner: "{{ user.name }}"
group: "{{ user.group | default(user.name) }}"
mode: u=rw,g=,o=
when: user.get('extras', {}).get('id_ed25519', '') | length > 0
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"
- name: Deploy authorized SSH keys
ansible.builtin.template:
src: authorized_key.j2
dest: "~{{ user.name }}/.ssh/authorized_keys"
owner: "{{ user.name }}"
group: "{{ user.group | default(user.name) }}"
mode: u=rw,g=r,o=r
when: user.get('extras', {}).get('authorized_keys', '') | length > 0
become: true
loop: "{{ users }}"
loop_control:
loop_var: user
label: "{{ user.name }}"

42
tasks/installation.yml Normal file
View File

@@ -0,0 +1,42 @@
---
# tasks file for users
- name: Build users list
ansible.builtin.set_fact:
users: "{{ users + specific }}"
when: specific | length > 0
loop: "{{ lookup('ansible.builtin.varnames', '^users.+', wantlist=True) }}"
vars:
specific: "{{ lookup('ansible.builtin.vars', item, default='') }}"
- name: Create groups with the users name
ansible.builtin.group:
name: "{{ item.name }}"
when: user.group is undefined
become: true
loop: "{{ users }}"
loop_control:
label: "{{ item.name }}"
- name: Create other groups
ansible.builtin.group:
name: "{{ item.1 }}"
become: true
loop: "{{ users | subelements('groups', skip_missing=True) }}"
loop_control:
label: "{{ item.1 }}"
- name: Create users
ansible.builtin.user:
name: "{{ item.name }}"
comment: "{{ item.comment | default(omit) }}"
password: "{{ item.password | default(omit) }}"
password_lock: "{{ item.password_lock | default(omit) }}"
home: "{{ item.home | default(omit) }}"
shell: "{{ item.shell | default(omit) }}"
group: "{{ item.group | default(item.name) }}"
groups: "{{ item.groups | default(omit) }}"
become: true
loop: "{{ users }}"
loop_control:
label: "{{ item.name }}"

10
tasks/main.yml Normal file
View File

@@ -0,0 +1,10 @@
---
# tasks file for users
- name: Import creation tasks
ansible.builtin.import_tasks:
file: installation.yml
- name: Import configuration tasks
ansible.builtin.import_tasks:
file: configuration.yml