o nnh @sVddlmZdZdZdZddlZddlmZddlm Z dd Z e d kr)e dSdS) ) annotationsas --- 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 C(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 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 V(:) or V(\\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 V(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, previously it only returned the last one returned: always type: list N) AnsibleModule) to_nativec CsXtttdddtdddtddtddtdddd dd }gd }|jd }|jd }|jd}|jd}|jd}|dd}|durP|||g}n||g}|dur_|d|g|duri||vrid}z ||\} } } Wnty} z|jt | t dWYd} ~ nd} ~ wwd} d|}|ii}| dkri}| D]P}| |}|d|vr||ddkr|||dg|||d<|||d|dd||dd7<q|dd|||d<d||d<q|j|dn'| dkrd} n| dkrd} |sd|||<|j|| dn| dkr$d} |j| d dS)!NstrT)typerequiredF)rno_log)rbool)rdefault)databasekeyservicesplitfail_key) argument_specsupports_check_mode)passwdshadowgroupgshadowr r rr rgetentz-s:)msg exceptionzUnexpected failure!z getent_%sr) ansible_factsz'Missing arguments, or database unknown.zs 6'  J