ipareplica_setup_ds: Fix documentation sections and agument spec

ansible-test with ansible-2.14 is adding a lot of new tests to ensure
that the documentation section and the agument spec is complete. Needed
changes:

DOCUMENTATION section

- `type: str` needs to be set for string parameters
- `type: list` needs to be set for list parameters
- `elements: str` needs to be given for list of string parameters
- `required` tags need to be fixed according to the `argument_spec`
- `type` tag needs to match `argument_spec`
- `default` tag needs to match `argument_spec`
- `author` needs to be given with the github user also: `Name (@user)`

argument_spec

- `type='str'` needs to be set for string parameters
- `elements='str'` needs to be added to all list of string parameters

supports_check_mode is turned off as it is not supported.

A call to ansible_ipa_replica.check_imports has been added to check for import
errors.

The `copyright` date is extended with `-2022`.
This commit is contained in:
Thomas Woerner
2022-11-08 14:11:32 +01:00
parent 12ee8a9201
commit b3f85d49df

View File

@@ -5,7 +5,7 @@
# #
# Based on ipa-replica-install code # Based on ipa-replica-install code
# #
# Copyright (C) 2018 Red Hat # Copyright (C) 2018-2022 Red Hat
# see file 'COPYING' for use and warranty information # see file 'COPYING' for use and warranty information
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@@ -40,106 +40,144 @@ description:
options: options:
dm_password: dm_password:
description: Directory Manager password description: Directory Manager password
required: yes type: str
required: no
password: password:
description: Admin user kerberos password description: Admin user kerberos password
required: yes type: str
required: no
ip_addresses: ip_addresses:
description: List of Master Server IP Addresses description: List of Master Server IP Addresses
required: yes type: list
elements: str
required: no
domain: domain:
description: Primary DNS domain of the IPA deployment description: Primary DNS domain of the IPA deployment
required: yes type: str
required: no
realm: realm:
description: Kerberos realm name of the IPA deployment description: Kerberos realm name of the IPA deployment
required: yes type: str
required: no
hostname: hostname:
description: Fully qualified name of this host description: Fully qualified name of this host
required: yes type: str
required: no
ca_cert_files: ca_cert_files:
description: description:
List of files containing CA certificates for the service certificate List of files containing CA certificates for the service certificate
files files
required: yes type: list
elements: str
required: no
no_host_dns: no_host_dns:
description: Do not use DNS for hostname lookup during installation description: Do not use DNS for hostname lookup during installation
required: yes type: bool
default: no
required: no
setup_adtrust: setup_adtrust:
description: Configure AD trust capability description: Configure AD trust capability
required: yes type: bool
required: no
setup_ca: setup_ca:
description: Configure a dogtag CA description: Configure a dogtag CA
required: yes type: bool
required: no
setup_kra: setup_kra:
description: Configure a dogtag KRA description: Configure a dogtag KRA
required: yes type: bool
required: no
setup_dns: setup_dns:
description: Configure bind with our zone description: Configure bind with our zone
required: yes type: bool
required: no
no_pkinit: no_pkinit:
description: Disable pkinit setup steps description: Disable pkinit setup steps
required: yes type: bool
default: no
required: no
dirsrv_config_file: dirsrv_config_file:
description: description:
The path to LDIF file that will be used to modify configuration of The path to LDIF file that will be used to modify configuration of
dse.ldif during installation of the directory server instance dse.ldif during installation of the directory server instance
required: yes type: str
required: no
dirsrv_cert_files: dirsrv_cert_files:
description: description:
Files containing the Directory Server SSL certificate and private key Files containing the Directory Server SSL certificate and private key
required: yes type: list
elements: str
required: no
force_join: force_join:
description: Force client enrollment even if already enrolled description: Force client enrollment even if already enrolled
required: yes type: bool
required: no
subject_base: subject_base:
description: description:
The certificate subject base (default O=<realm-name>). The certificate subject base (default O=<realm-name>).
RDNs are in LDAP order (most specific RDN first). RDNs are in LDAP order (most specific RDN first).
required: no type: str
required: yes
server: server:
description: Fully qualified name of IPA server to enroll to description: Fully qualified name of IPA server to enroll to
required: no type: str
required: yes
ccache: ccache:
description: The local ccache description: The local ccache
required: no type: str
required: yes
installer_ccache: installer_ccache:
description: The installer ccache setting description: The installer ccache setting
required: no type: str
required: yes
_ca_enabled: _ca_enabled:
description: The installer _ca_enabled setting description: The installer _ca_enabled setting
required: yes type: bool
required: no
_dirsrv_pkcs12_info: _dirsrv_pkcs12_info:
description: The installer _dirsrv_pkcs12_info setting description: The installer _dirsrv_pkcs12_info setting
required: yes type: list
elements: str
required: no
_top_dir: _top_dir:
description: The installer _top_dir setting description: The installer _top_dir setting
required: no type: str
required: yes
_add_to_ipaservers: _add_to_ipaservers:
description: The installer _add_to_ipaservers setting description: The installer _add_to_ipaservers setting
required: no type: bool
required: yes
_ca_subject: _ca_subject:
description: The installer _ca_subject setting description: The installer _ca_subject setting
required: no type: str
required: yes
_subject_base: _subject_base:
description: The installer _subject_base setting description: The installer _subject_base setting
required: no type: str
required: yes
dirman_password: dirman_password:
description: Directory Manager (master) password description: Directory Manager (master) password
required: no type: str
required: yes
config_setup_ca: config_setup_ca:
description: The config setup_ca setting description: The config setup_ca setting
required: no type: bool
required: yes
config_master_host_name: config_master_host_name:
description: The config master_host_name setting description: The config master_host_name setting
required: no type: str
required: yes
config_ca_host_name: config_ca_host_name:
description: The config ca_host_name setting description: The config ca_host_name setting
required: no type: str
required: yes
config_ips: config_ips:
description: The config ips setting description: The config ips setting
required: yes type: list
elements: str
required: no
author: author:
- Thomas Woerner - Thomas Woerner (@t-woerner)
''' '''
EXAMPLES = ''' EXAMPLES = '''
@@ -152,8 +190,8 @@ import os
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.ansible_ipa_replica import ( from ansible.module_utils.ansible_ipa_replica import (
AnsibleModuleLog, setup_logging, installer, DN, paths, sysrestore, check_imports, AnsibleModuleLog, setup_logging, installer, DN, paths,
ansible_module_get_parsed_ip_addresses, sysrestore, ansible_module_get_parsed_ip_addresses,
gen_env_boostrap_finalize_core, constants, api_bootstrap_finalize, gen_env_boostrap_finalize_core, constants, api_bootstrap_finalize,
gen_ReplicaConfig, gen_remote_api, redirect_stdout, ipaldap, gen_ReplicaConfig, gen_remote_api, redirect_stdout, ipaldap,
install_replica_ds, install_dns_records, ntpinstance, ScriptError, install_replica_ds, install_dns_records, ntpinstance, ScriptError,
@@ -165,13 +203,15 @@ def main():
ansible_module = AnsibleModule( ansible_module = AnsibleModule(
argument_spec=dict( argument_spec=dict(
# basic # basic
dm_password=dict(required=False, no_log=True), dm_password=dict(required=False, type='str', no_log=True),
password=dict(required=False, no_log=True), password=dict(required=False, type='str', no_log=True),
ip_addresses=dict(required=False, type='list', default=[]), ip_addresses=dict(required=False, type='list', elements='str',
domain=dict(required=False), default=[]),
realm=dict(required=False), domain=dict(required=False, type='str'),
hostname=dict(required=False), realm=dict(required=False, type='str'),
ca_cert_files=dict(required=False, type='list', default=[]), hostname=dict(required=False, type='str'),
ca_cert_files=dict(required=False, type='list', elements='str',
default=[]),
no_host_dns=dict(required=False, type='bool', default=False), no_host_dns=dict(required=False, type='bool', default=False),
# server # server
setup_adtrust=dict(required=False, type='bool'), setup_adtrust=dict(required=False, type='bool'),
@@ -179,33 +219,37 @@ def main():
setup_kra=dict(required=False, type='bool'), setup_kra=dict(required=False, type='bool'),
setup_dns=dict(required=False, type='bool'), setup_dns=dict(required=False, type='bool'),
no_pkinit=dict(required=False, type='bool', default=False), no_pkinit=dict(required=False, type='bool', default=False),
dirsrv_config_file=dict(required=False), dirsrv_config_file=dict(required=False, type='str'),
# ssl certificate # ssl certificate
dirsrv_cert_files=dict(required=False, type='list', default=[]), dirsrv_cert_files=dict(required=False, type='list', elements='str',
default=[]),
# client # client
force_join=dict(required=False, type='bool'), force_join=dict(required=False, type='bool'),
# certificate system # certificate system
subject_base=dict(required=True), subject_base=dict(required=True, type='str'),
# additional # additional
server=dict(required=True), server=dict(required=True, type='str'),
ccache=dict(required=True), ccache=dict(required=True, type='str'),
installer_ccache=dict(required=True), installer_ccache=dict(required=True, type='str'),
_ca_enabled=dict(required=False, type='bool'), _ca_enabled=dict(required=False, type='bool'),
_dirsrv_pkcs12_info=dict(required=False, type='list'), _dirsrv_pkcs12_info=dict(required=False, type='list',
_top_dir=dict(required=True), elements='str'),
_top_dir=dict(required=True, type='str'),
_add_to_ipaservers=dict(required=True, type='bool'), _add_to_ipaservers=dict(required=True, type='bool'),
_ca_subject=dict(required=True), _ca_subject=dict(required=True, type='str'),
_subject_base=dict(required=True), _subject_base=dict(required=True, type='str'),
dirman_password=dict(required=True, no_log=True), dirman_password=dict(required=True, type='str', no_log=True),
config_setup_ca=dict(required=True, type='bool'), config_setup_ca=dict(required=True, type='bool'),
config_master_host_name=dict(required=True), config_master_host_name=dict(required=True, type='str'),
config_ca_host_name=dict(required=True), config_ca_host_name=dict(required=True, type='str'),
config_ips=dict(required=False, type='list', default=[]), config_ips=dict(required=False, type='list', elements='str',
default=[]),
), ),
supports_check_mode=True, supports_check_mode=False,
) )
ansible_module._ansible_debug = True ansible_module._ansible_debug = True
check_imports(ansible_module)
setup_logging() setup_logging()
ansible_log = AnsibleModuleLog(ansible_module) ansible_log = AnsibleModuleLog(ansible_module)