a ì)g?ã@s^ddlmZmZmZeZdZdZdZddl Z ddl m Z ddl m Z dd „Zed krZeƒdS) é)Úabsolute_importÚdivisionÚprint_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 Csbtttddd�tddd�tdd�tdd�tddd�d �dd �}gd ¢}|jd }|j d ¡}|j d¡}|j d¡}|j d¡}| dd¡}|dur |||g}n||g}|dur¾| d|g¡|durÒ||vrÒd}z| |¡\} } } Wn<t�y"} z"|jt | ƒt   ¡d�WYd} ~ n d} ~ 00d} d|}|ii}| dk�ri}|   ¡D]¦}|  |¡}|d|v�rÎ||ddk�rš|||dg|||d<|||d |dd…¡||dd7<n$|dd…|||d<d||d<�qN|j|d�nN| dk�rd} n>| dk�rDd} |�sRd|||<|j|| d�n| dk�rRd} |j| d �dS)!NÚstrT)ÚtypeÚrequiredF)rZno_log)rÚbool)rÚdefault)ÚdatabaseÚkeyÚserviceÚsplitÚfail_key)Z argument_specZsupports_check_mode)ÚpasswdZshadowÚgroupZgshadowr r rrrZgetentz-sú:)ÚmsgÚ exceptionzUnexpected failure!z getent_%sré)Ú ansible_factsz'Missing arguments, or database unknown.ézs7'  J