--- - name: Get list of users community.docker.docker_container_exec: container: gitea-gitea-1 command: /bin/bash -c "gitea admin user list" register: user_list failed_when: false changed_when: false when: gitea_users | length > 0 - name: Extract existing usernames ansible.builtin.set_fact: gitea_existing_users: "{{ user_list.stdout_lines[1:] | map('regex_replace', '^\\d+\\s+(\\S+)\\s+.*$', '\\1') | list | default([]) }}" when: - gitea_users | length > 0 - user_list.stdout_lines | default([]) | length > 1 - name: Create Gitea users community.docker.docker_container_exec: container: gitea-gitea-1 command: > /bin/bash -c "gitea admin user create --username {{ user.username }} --email {{ user.email }} --password {{ user.password }} --must-change-password={{ user.must_change_password | default(false) }} --admin={{ user.admin | default(false) }}" register: _gitea_user_result failed_when: - '"successfully created" not in _gitea_user_result.stdout' changed_when: - '"successfully created!" in _gitea_user_result.stdout' when: - user.username not in gitea_existing_users | default([]) and user.state | default('present') == 'present' loop: "{{ gitea_users }}" loop_control: label: "user={{ user.username }}" loop_var: user # no_log: true # Avoid logging passwords - name: Remove gitea users community.docker.docker_container_exec: container: gitea-gitea-1 command: > /bin/bash -c "gitea admin user delete --username {{ user.username }} --email {{ user.email }}" register: _gitea_user_del_result failed_when: - '"error" in _gitea_user_del_result.stdout' changed_when: "user.username in gitea_existing_users" when: "user.username in gitea_existing_users | default([]) and user.state | default('present') == 'absent'" loop: "{{ gitea_users }}" loop_control: label: "user={{ user.username }}" loop_var: user