Refactor user creation tasks to allow multiple hosts with a list

This commit is contained in:
camille.prugnard
2025-12-19 10:14:09 +01:00
parent c2693caf0e
commit 45334ef3c3

View File

@@ -3,19 +3,30 @@
mysql_user: mysql_user:
name: "{{ item.name }}" name: "{{ item.name }}"
password: "{{ item.password }}" password: "{{ item.password }}"
host: "{{ item.host | default('%') }}" host: "{{ item.host }}"
priv: "{{ (item.priv | join('/')) if item.priv is iterable and item.priv is not string else (item.priv | default('*.*:USAGE')) }}" priv: "{{ (item.priv | join('/')) if item.priv is iterable and item.priv is not string else (item.priv | default('*.*:USAGE')) }}"
plugin: "mysql_native_password" plugin: "mysql_native_password"
state: present state: present
login_user: root login_user: root
login_password: "{{ percona_root_password }}" login_password: "{{ percona_root_password }}"
loop: "{{ percona_users }}" vars:
when: item.auth_plugin is defined and item.auth_plugin == 'mysql_native_password' user_host_pairs: |
{%- set pairs = [] -%}
{%- for user in percona_users -%}
{%- if user.auth_plugin is defined and user.auth_plugin == 'mysql_native_password' -%}
{%- set hosts = [user.host | default('%')] if user.host is undefined or user.host is string else user.host -%}
{%- for host in hosts -%}
{%- set _ = pairs.append(user | combine({'host': host})) -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{{ pairs }}
loop: "{{ user_host_pairs }}"
- name: percona | create users - name: percona | create users
mysql_user: mysql_user:
name: "{{ item.name }}" name: "{{ item.name }}"
host: "{{ item.host | default('%') }}" host: "{{ item.host }}"
priv: "{{ (item.priv | join('/')) if item.priv is iterable and item.priv is not string else (item.priv | default('*.*:USAGE')) }}" priv: "{{ (item.priv | join('/')) if item.priv is iterable and item.priv is not string else (item.priv | default('*.*:USAGE')) }}"
plugin: caching_sha2_password plugin: caching_sha2_password
plugin_auth_string: "{{ item.password }}" plugin_auth_string: "{{ item.password }}"
@@ -23,5 +34,16 @@
state: present state: present
login_user: root login_user: root
login_password: "{{ percona_root_password }}" login_password: "{{ percona_root_password }}"
loop: "{{ percona_users }}" vars:
when: item.auth_plugin is not defined or item.auth_plugin == 'caching_sha2_password' user_host_pairs: |
{%- set pairs = [] -%}
{%- for user in percona_users -%}
{%- if user.auth_plugin is not defined or user.auth_plugin == 'caching_sha2_password' -%}
{%- set hosts = [user.host | default('%')] if user.host is undefined or user.host is string else user.host -%}
{%- for host in hosts -%}
{%- set _ = pairs.append(user | combine({'host': host})) -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{{ pairs }}
loop: "{{ user_host_pairs }}"