feat(podman_host): do not create local users and assume a user exists
For SR2's usage, these users will exist because they have been created in FreeIPA along with their subids.
This commit is contained in:
parent
b471a034a4
commit
7792cac0c7
2 changed files with 31 additions and 52 deletions
|
|
@ -1,41 +1,26 @@
|
||||||
---
|
---
|
||||||
- name: Podman Host | AUDIT | Gather rootless user facts
|
- name: Podman Host | AUDIT | Gather rootless user facts
|
||||||
ansible.builtin.user:
|
ansible.builtin.getent:
|
||||||
name: "{{ _podman_host_rootless_user }}"
|
database: passwd
|
||||||
|
key: "{{ _podman_host_rootless_user }}"
|
||||||
register: _podman_host_rootless_user_facts
|
register: _podman_host_rootless_user_facts
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Resolve name of user's primary group
|
- debug:
|
||||||
ansible.builtin.getent:
|
msg: "{{ _podman_host_rootless_user_facts }}"
|
||||||
database: group
|
|
||||||
key: "{{ _podman_host_rootless_user_facts.group }}"
|
|
||||||
register: _podman_host_rootless_user_group
|
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Check if user is in subuid file
|
- name: Podman Host | AUDIT | Ensure the rootless user exists
|
||||||
ansible.builtin.lineinfile:
|
|
||||||
path: /etc/subuid
|
|
||||||
regexp: '^{{ _podman_host_rootless_user }}:.*$'
|
|
||||||
state: absent
|
|
||||||
register: _podman_host_uid_line_found
|
|
||||||
check_mode: true
|
|
||||||
failed_when: false
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Check if group is in subgid file
|
|
||||||
ansible.builtin.lineinfile:
|
|
||||||
path: /etc/subgid
|
|
||||||
regexp: '^{{ _podman_host_rootless_user_group.ansible_facts.getent_group | first }}:.*$'
|
|
||||||
state: absent
|
|
||||||
register: _podman_host_gid_line_found
|
|
||||||
check_mode: true
|
|
||||||
failed_when: false
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Assert that user is in subuid file exactly once
|
|
||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that:
|
that:
|
||||||
- _podman_host_uid_line_found.found == 1
|
- _podman_host_rootless_user in _podman_host_rootless_user_facts.ansible_facts.getent_passwd.keys()
|
||||||
|
fail_msg: "User '{{ _podman_host_rootless_user }}' does not exist on this host."
|
||||||
|
|
||||||
|
- name: Podman Host | AUDIT | Ensure the rootless user has subuids defined
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "getsubids {{ _podman_host_rootless_user }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Podman Host | AUDIT | Ensure the rootless user has subgids defined
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "getsubids -g {{ _podman_host_rootless_user }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Assert that group is in subgid file exactly once
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- _podman_host_gid_line_found.found == 1
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,22 @@
|
||||||
---
|
---
|
||||||
- name: Podman Host | PRELIM | Ensure the rootless users are defined and are not root
|
- name: Podman Host | AUDIT | Ensure the rootless users are defined and are not root
|
||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that:
|
that:
|
||||||
- podman_host_rootless_users | length > 0
|
- podman_host_rootless_users | length > 0
|
||||||
- '"root" not in podman_host_rootless_users'
|
- '"root" not in podman_host_rootless_users'
|
||||||
|
|
||||||
- name: Podman Host | AUDIT | Ensure that subuid and subgid are defined for the users
|
- name: Podman Host | PATCH | Install Podman
|
||||||
|
ansible.builtin.dnf:
|
||||||
|
name:
|
||||||
|
- podman
|
||||||
|
- container-selinux
|
||||||
|
- shadow-utils-subid # for getsubids
|
||||||
|
state: latest
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Podman Host | AUDIT | Ensure that users exist and have subids configured
|
||||||
ansible.builtin.include_tasks:
|
ansible.builtin.include_tasks:
|
||||||
file: check_subid.yml
|
file: check_users.yml
|
||||||
vars:
|
vars:
|
||||||
_podman_host_rootless_user: "{{ item }}"
|
_podman_host_rootless_user: "{{ item }}"
|
||||||
with_items: "{{ podman_host_rootless_users }}"
|
with_items: "{{ podman_host_rootless_users }}"
|
||||||
|
|
@ -21,17 +30,10 @@
|
||||||
reload: true
|
reload: true
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Podman Host | PATCH | Create users for rootless podman
|
- name: Podman Host | PATCH | Set XDG_RUNTIME_DIR in .bash_profile for rootless users
|
||||||
ansible.builtin.user:
|
|
||||||
name: "{{ item }}"
|
|
||||||
become: true
|
|
||||||
with_items: "{{ podman_host_rootless_users }}"
|
|
||||||
|
|
||||||
- name: Podman Host | PATCH | Set XDG_RUNTIME_DIR in .profile for rootless users
|
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
path: "/home/{{ item }}/.bash_profile"
|
path: "/home/{{ item }}/.bash_profile"
|
||||||
line: "export XDG_RUNTIME_DIR=/run/user/$(id -u)"
|
line: "export XDG_RUNTIME_DIR=/run/user/$(id -u)"
|
||||||
create: false
|
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ item }}"
|
become_user: "{{ item }}"
|
||||||
with_items: "{{ podman_host_rootless_users }}"
|
with_items: "{{ podman_host_rootless_users }}"
|
||||||
|
|
@ -46,14 +48,6 @@
|
||||||
become: true
|
become: true
|
||||||
with_items: "{{ podman_host_rootless_users }}"
|
with_items: "{{ podman_host_rootless_users }}"
|
||||||
|
|
||||||
- name: Podman Host | PATCH | Install Podman
|
|
||||||
ansible.builtin.dnf:
|
|
||||||
name:
|
|
||||||
- podman
|
|
||||||
- container-selinux
|
|
||||||
state: latest
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Podman Host | PATCH | Create users quadlets directory
|
- name: Podman Host | PATCH | Create users quadlets directory
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/home/{{ item }}/.config/containers/systemd"
|
path: "/home/{{ item }}/.config/containers/systemd"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue