a )g?@s^ddlmZmZmZeZdZdZdZddl Z ddl m Z ddl m Z dd Zed krZedS) )absolute_importdivisionprint_functiona --- module: getent short_description: A wrapper to the unix getent utility description: - Runs getent against one of its various databases and returns information into the host's facts, in a getent_ prefixed variable. version_added: "1.8" options: database: description: - The name of a getent database supported by the target system (passwd, group, hosts, etc). type: str required: True key: description: - Key from which to return values from the specified database, otherwise the full contents are returned. type: str default: '' service: description: - Override all databases with the specified service - The underlying system must support the service flag which is not always available. type: str version_added: "2.9" split: description: - Character used to split the database values into lists/arrays such as C(:) or C(\t), otherwise it will try to pick one depending on the database. type: str fail_key: description: - If a supplied key is missing this will make the task fail if C(true). type: bool default: 'yes' extends_documentation_fragment: - action_common_attributes - action_common_attributes.facts attributes: check_mode: support: full diff_mode: support: none facts: support: full platform: platforms: posix notes: - Not all databases support enumeration, check system documentation for details. author: - Brian Coca (@bcoca) aD - name: Get root user info ansible.builtin.getent: database: passwd key: root - ansible.builtin.debug: var: ansible_facts.getent_passwd - name: Get all groups ansible.builtin.getent: database: group split: ':' - ansible.builtin.debug: var: ansible_facts.getent_group - name: Get all hosts, split by tab ansible.builtin.getent: database: hosts - ansible.builtin.debug: var: ansible_facts.getent_hosts - name: Get http service info, no error if missing ansible.builtin.getent: database: services key: http fail_key: False - ansible.builtin.debug: var: ansible_facts.getent_services - name: Get user password hash (requires sudo/root) ansible.builtin.getent: database: shadow key: www-data split: ':' - ansible.builtin.debug: var: ansible_facts.getent_shadow a ansible_facts: description: Facts to add to ansible_facts. returned: always type: dict contains: getent_: description: - A list of results or a single result as a list of the fields the db provides - The list elements depend on the database queried, see getent man page for the structure - Starting at 2.11 it now returns multiple duplicate entries, previouslly it only returned the last one returned: always type: list N) AnsibleModule) to_nativec Csbtttdddtdddtddtddtdddd dd }gd }|jd }|jd }|jd}|jd}|jd}|dd}|dur|||g}n||g}|dur|d|g|dur||vrd}z||\} } } Wn<ty"} z"|jt | t dWYd} ~ n d} ~ 00d} d|}|ii}| dkri}| D]}| |}|d|vr||ddkr|||dg|||d<|||d|dd||dd7<n$|dd|||d<d||d<qN|j|dnN| dkrd} n>| dkrDd} |sRd|||<|j|| dn| dkrRd} |j| d dS)!NstrT)typerequiredF)rZno_log)rbool)rdefault)databasekeyservicesplitfail_key)Z argument_specZsupports_check_mode)passwdZshadowgroupZgshadowr r rrrZgetentz-s:)msg exceptionzUnexpected failure!z getent_%sr) ansible_factsz'Missing arguments, or database unknown.zs7'  J