reset ssh connection to allow user changes to affect 'current login user'

Why:
Without this modification, we can't use docker with docker_users in same
playbook than the one which install docker.

How:
Check that docker_users are set and not in docker group before include
docker-users.yml. In docker-users.yml we call reset_connection from
ansible.builtin.meta collection after docker-users are added to docker
group.

Manual success tests:
* Try to install docker with only one user in docker-users and not in
  docker group => docker-users.yml include
* Try to install docker with only one user in docker-users but the user
  is in docker group => docker-users.yml not include
* Try to install docker with 2 users in docker-users, one user in docker
  group and the second not => docker-users.yml include
* Try to install docker with 2 users in docker-users, both are in docker
  group => docker-users.yml not include
* Try to install docker with 2 users in docker-users, both are not in
  docker group => docker-users.yml include
This commit is contained in:
Kevin Fardel 2022-08-24 17:07:45 +02:00
parent 53c5490523
commit 0884ae21b8
2 changed files with 20 additions and 1 deletions

View File

@ -5,3 +5,7 @@
groups: docker groups: docker
append: true append: true
with_items: "{{ docker_users }}" with_items: "{{ docker_users }}"
- name: Reset ssh connection to apply users changes
meta:
reset_connection

View File

@ -79,5 +79,20 @@
- include_tasks: docker-compose.yml - include_tasks: docker-compose.yml
when: docker_install_compose | bool when: docker_install_compose | bool
- include_tasks: docker-users.yml - name: Get all docker group infos
getent:
database: group
key: docker
split: ':'
when: docker_users | length > 0 when: docker_users | length > 0
- name: Check there is at least one user to add to docker group
set_fact:
at_least_one_user_to_modify: true
when:
- docker_users | length > 0
- item not in ansible_facts.getent_group["docker"][2]
with_items: "{{ docker_users }}"
- include_tasks: docker-users.yml
when: at_least_one_user_to_modify is defined