From f5a8bc60446d00d9af2e808eebd9212679f21751 Mon Sep 17 00:00:00 2001 From: Felix Hamme Date: Fri, 20 May 2022 10:52:57 +0200 Subject: [PATCH] mysql_role: add argument "members_must_exist" (boolean, default true) The assertion that the users supplied in the "members" argument exist is only executed when the new argument "members_must_exist" is true, to allow opt-out. --- plugins/modules/mysql_role.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/modules/mysql_role.py b/plugins/modules/mysql_role.py index 8265f9a..3cb94aa 100644 --- a/plugins/modules/mysql_role.py +++ b/plugins/modules/mysql_role.py @@ -114,6 +114,13 @@ options: type: bool default: no + members_must_exist: + description: + - When C(yes), the module fails if any user in C(members) does not exist. + - When C(no), users in C(members) which don't exist are simply skipped. + type: bool + default: yes + notes: - Pay attention that the module runs C(SET DEFAULT ROLE ALL TO) all the I(members) passed by default when the state has changed. @@ -918,6 +925,7 @@ def main(): detach_members=dict(type='bool', default=False), check_implicit_admin=dict(type='bool', default=False), set_default_role_all=dict(type='bool', default=True), + members_must_exist=dict(type='bool', default=True) ) module = AnsibleModule( argument_spec=argument_spec, @@ -951,6 +959,7 @@ def main(): check_hostname = module.params['check_hostname'] db = '' set_default_role_all = module.params['set_default_role_all'] + members_must_exist = module.params['members_must_exist'] if priv and not isinstance(priv, (str, dict)): msg = ('The "priv" parameter must be str or dict ' @@ -1019,7 +1028,8 @@ def main(): if members: members = normalize_users(module, members, server.is_mariadb()) - server.check_users_in_db(members) + if members_must_exist and not detach_members: + server.check_users_in_db(members) # Main job starts here role = Role(module, cursor, name, server)