2

I'm attempting to develop an Ansible playbook that uses the getent module to help manage various user accounts. I would like to be able to access the various values like UID, GID, password, etc. (what I think is a Python dictionary -- but am not sure that is accurate).

How do I read/access if a password is lockecd (e.g. ! or !!)?
How do I read/access the UID or GID for say this account: ntp:x:38:38::/etc/ntp:/sbin/nologin into a variable to be used for the next task?

Here is current playbook task so far. Can this be done if a playbook?

- name: "getent variables"
  getent:
    database: passwd
    key: ntp #root  #uid
    split: ':'
    #fail_key:
    # register: getent_passwd
- debug:
    var: getent_passwd
1

Getent results will normally be added as facts to the hosts facts.

Keep in mind that the information about gid/uid/etc are in a separate database from information about passwords.

# ansible localhost -m getent -a 'database=passwd key=root'
localhost | SUCCESS => {
    "ansible_facts": {
        "getent_passwd": {
            "root": [
                "x", 
                "0", 
                "0", 
                "root", 
                "/root", 
                "/bin/bash"
            ]
        }
    }, 
    "changed": false
}

# ansible localhost -m getent -a 'database=shadow key=root' 
localhost | SUCCESS => {
    "ansible_facts": {
        "getent_shadow": {
            "root": [
                "*", 
                "17939", 
                "0", 
                "99999", 
                "7", 
                "", 
                "", 
                ""
            ]
        }
    }, 
    "changed": false
}

How do I read/access the UID or GID for say this account: ntp:x:38:38::/etc/ntp:/sbin/nologin into a variable to be used for the next task?

It isn't that easy.

- name: "getent variables"
  getent:
    database: passwd
    key: ntp

- name: show the UID
  debug:
    var: getent_passwd['ntp'][1]

- name: show the GID
  debug:
    var: getent_passwd['ntp'][2]

- name: "getent variables"
  getent:
    database: passwd
    key: ntp

- name: show the password hash
  debug:
    var: getent_shadow['ntp'][0]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.