first commit
This commit is contained in:
90
serv-04-adduser/tasks/main.yml
Normal file
90
serv-04-adduser/tasks/main.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
---
|
||||
- name: Ensure user exists
|
||||
ansible.builtin.user:
|
||||
name: "{{ username }}"
|
||||
password: "{{ userpass | password_hash('sha512') }}"
|
||||
shell: /bin/bash
|
||||
state: present
|
||||
create_home: yes
|
||||
when: useraction == "add"
|
||||
|
||||
- name: Create .ssh directory
|
||||
ansible.builtin.file:
|
||||
path: "/home/{{ username }}/.ssh"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ username }}"
|
||||
mode: '0700'
|
||||
when: useraction == "add"
|
||||
|
||||
- name: Upload authorized SSH key
|
||||
ansible.builtin.copy:
|
||||
src: "files/sshkeys/{{ userkey }}"
|
||||
dest: "/home/{{ username }}/.ssh/authorized_keys"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ username }}"
|
||||
mode: '0600'
|
||||
when: useraction == "add"
|
||||
|
||||
# REMOVE USER
|
||||
#- name: Remove user and home directory
|
||||
# ansible.builtin.user:
|
||||
# name: "{{ username }}"
|
||||
# state: absent
|
||||
# remove: yes
|
||||
# when: useraction == "remove"
|
||||
|
||||
- name: Allow {{ username }} to switch to 'docker' user without password
|
||||
ansible.builtin.copy:
|
||||
dest: "/etc/sudoers.d/{{ username }}-su-docker"
|
||||
content: "{{ username }} ALL=(ALL) NOPASSWD: /bin/su - docker"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0440'
|
||||
when: useraction == "add"
|
||||
|
||||
- name: Find processes owned by the user (initial)
|
||||
ansible.builtin.shell: "ps -u {{ username }} -o pid,comm,args --no-headers || true"
|
||||
register: user_process_list
|
||||
changed_when: false
|
||||
when: useraction == "remove"
|
||||
|
||||
- name: Display processes owned by user before killing
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ item }}"
|
||||
loop: "{{ user_process_list.stdout_lines }}"
|
||||
when: useraction == "remove"
|
||||
|
||||
|
||||
- name: Extract PIDs of user processes
|
||||
ansible.builtin.shell: "pgrep -u {{ username }} || true"
|
||||
register: user_pids
|
||||
changed_when: false
|
||||
when: useraction == "remove"
|
||||
|
||||
- name: Kill user processes (if any)
|
||||
ansible.builtin.shell: "kill -9 {{ user_pids.stdout_lines | join(' ') }}"
|
||||
when:
|
||||
- useraction == "remove"
|
||||
- user_pids.stdout != ""
|
||||
|
||||
- name: Remove user and home directory
|
||||
ansible.builtin.user:
|
||||
name: "{{ username }}"
|
||||
state: absent
|
||||
remove: yes
|
||||
when: useraction == "remove"
|
||||
|
||||
- name: List remaining processes for the user (after kill)
|
||||
ansible.builtin.shell: "ps -u {{ username }} -o pid,comm,args --no-headers || true"
|
||||
register: remaining_procs
|
||||
changed_when: false
|
||||
when: useraction == "remove"
|
||||
|
||||
- name: Display remaining processes (manual check)
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
Remaining processes for '{{ username }}' after kill:
|
||||
{{ remaining_procs.stdout | default('None') }}
|
||||
when: useraction == "remove"
|
||||
|
||||
Reference in New Issue
Block a user