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

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

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

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

- name: "getent variables"
  getent:
    database: passwd
    key: ntp #root  #uid
    split: ':'
    #fail_key:
    # register: getent_passwd
- debug:
    var: getent_passwd
2
задан 4 June 2019 в 21:45
1 ответ

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

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

# 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]
1
ответ дан 3 December 2019 в 12:29

Теги

Похожие вопросы