Назад | Перейти на главную страницу

Как получить доступ к значениям модуля Ansible getent и поместить их в переменную?

Я пытаюсь разработать Ansible playbook, который использует модуль getent для управления различными учетными записями пользователей. Я хотел бы иметь доступ к различным значениям, таким как UID, GID, пароль и т. Д. (Я считаю, что это словарь Python, но я не уверен, что это точно).

Как мне прочитать / получить доступ, если пароль заблокирован (например,! Или !!)?
Как мне прочитать / получить доступ к UID или GID, скажем, этой учетной записи: ntp: x: 38: 38 :: / etc / ntp: / sbin / nologin в переменную, которая будет использоваться для следующей задачи?

Вот текущая задача playbook. Можно ли это сделать, если по плейбуку?

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

Результаты Getent обычно добавляются как факты к фактам хоста.

Имейте в виду, что информация о gid / uid / etc находится в отдельной базе данных от информации о паролях.

# 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
}

Как мне прочитать / получить доступ к UID или GID, скажем, этой учетной записи: ntp: x: 38: 38 :: / etc / ntp: / sbin / nologin в переменную, которая будет использоваться для следующей задачи?

Это не так просто.

- 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]