web-dev-qa-db-ja.com

Ansible getentモジュールの値にアクセスして変数に入れる方法は?

さまざまなユーザーアカウントの管理に役立つ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 
2
Bryan

取得した結果は、通常、ファクトとしてホストファクトに追加されます。

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