42.3. Ansible Playbook を使用してランダムなパスワードを持つ複数の IdM ホストエントリーが存在する状態にする
freeipa.ansible_freeipa.ipahost モジュールを使用すると、システム管理者は 1 つの Ansible タスクを使用して、IdM に複数のホストエントリーが存在する状態または存在しない状態にできます。fully-qualified domain names (FQDN) のみで定義されるホストエントリーが複数存在する状態にするには、次の手順を実行します。Ansible Playbook を実行すると、ホストのパスワードが無作為に生成されます。
Ansible を使用しない場合は、ipa host-add コマンドを使用してホストエントリーを IdM に作成します。ホストを IdM に追加すると、IdM でのホストの状態が present になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM にホストを追加するには、ホストの状態を Present (state: present) として定義した Playbook を作成する必要があります。
前提条件
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.15 以降を使用している。
-
ansible-freeipaパッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル が作成されている (この例の場合)。
-
secret.yml Ansible vault に
ipaadmin_passwordが保存されており、secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。
-
ターゲットノード (
freeipa.ansible_freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
IdM に存在させるホストの
fully-qualified domain name(FQDN) を使用して Ansible Playbook ファイルを作成します。ホストがすでに IdM に存在し、update_passwordがon_createに制限されている場合でも、Ansible Playbook で各ホストに対してランダムなパスワードを生成するには、random: trueおよびforce: trueオプションを追加します。このステップを簡略化するために、/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-host.mdマークダウンファイルから例をコピーして変更できます。--- - name: Ensure hosts with random password hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" hosts: - name: host01.idm.example.com random: true force: true - name: host02.idm.example.com random: true force: true register: ipahostPlaybook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml [...] TASK [Hosts host01.idm.example.com and host02.idm.example.com present with random passwords] changed: [server.idm.example.com] => {"changed": true, "host": {"host01.idm.example.com": {"randompassword": "0HoIRvjUdH0Ycbf6uYdWTxH"}, "host02.idm.example.com": {"randompassword": "5VdLgrf3wvojmACdHC3uA3s"}}}注記ランダムなワンタイムパスワード (OTP) を使用してホストを IdM クライアントとしてデプロイするには、Ansible Playbook を使用した IdM クライアント登録の認可オプション または ワンタイムパスワードを使用したクライアントのインストール: 対話型インストール を参照してください。
検証
IdM サーバーに admin としてログインします。
$ ssh admin@server.idm.example.com Password:ipa host-showコマンドを入力し、ホストのいずれかの名前を指定します。$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Password: True Keytab: False Managed by: host01.idm.example.com
この出力で、host01.idm.example.com が無作為に作成されたパスワードが指定された IdM に存在することを確認します。