Я пытаюсь разработать 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]