さまざまなユーザーアカウントの管理に役立つgetentモジュールを使用するAnsibleプレイブックを開発しようとしています。 UID、GID、パスワードなどのさまざまな値にアクセスできるようにしたいと思います(Python辞書と思いますが、正確かどうかはわかりません)。
パスワードがlockecd(例:!または!!)の場合、どのように読み取り/アクセスできますか?
たとえば、このアカウントのUIDまたはGIDを読み取り/アクセスするにはどうすればよいですか:ntp:x:38:38 ::/etc/ntp:/ sbin/nologinを次のタスクで使用する変数に入れますか?
これが現在のプレイブックタスクです。プレイブックの場合、これは可能ですか?
-name: "getent variables" getent: database:passwd key:ntp #root #uid split: ':' #fail_key: #register:getent_passwd -debug: var:getent_passwd
取得した結果は、通常、ファクトとしてホストファクトに追加されます。
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]