第5章 Ansible Playbook を使用して IdM を管理する環境の準備
Identity Management (IdM) を管理するシステム管理者は、Red Hat Ansible Engine を使用する際に以下を行うことが推奨されます。
- ホームディレクトリーに Ansible Playbook 専用のサブディレクトリー (例: ~/MyPlaybooks) を作成します。
-
/usr/share/doc/ansible-freeipa/*
と/usr/share/doc/rhel-system-roles/*
ディレクトリーおよびサブディレクトリーから ~/MyPlaybooks ディレクトリーにサンプル Ansible Playbook をコピーして調整します。 - ~/MyPlaybooks ディレクトリーにインベントリーファイルを追加します。
このプラクティスを使用すると、すべての Playbook を 1 か所で見つけることができます。
マネージドノードで root
権限を呼び出さずに ansible-freeipa
Playbook を実行できます。例外には、ipaserver
、ipareplica
、ipaclient
、ipasmartcard_server
、ipasmartcard_client
、および ipabackup
ansible-freeipa
ロールを使用する Playbook が含まれます。これらのロールには、ディレクトリーおよび dnf
ソフトウェアパッケージマネージャーへの特権アクセスが必要です。
Red Hat Enterprise Linux IdM ドキュメントの Playbook は、次の セキュリティー設定 を前提としています。
-
IdM
admin
は、管理ノードのリモート Ansible ユーザーです。 -
Ansible vault に暗号化された IdM
admin
パスワードを保存します。 - Ansible vault を保護するパスワードをパスワードファイルに配置しました。
- ローカルの ansible ユーザーを除く全員に対して、vault パスワードファイルへのアクセスをブロックします。
- vault パスワードファイルを定期的に削除して再作成します。
別のセキュリティー設定 も検討してください。
5.1. Ansible Playbook を使用して IdM を管理するためのコントロールノードと管理ノードの準備
~/MyPlaybooks ディレクトリーを作成し、それを使用して Ansible Playbook を保存および実行できるように設定するには、次の手順に従います。
前提条件
- マネージドノードに IdM サーバー (server.idm.example.com および replica.idm.example.com) をインストールした。
- DNS およびネットワークを設定し、コントロールノードから直接マネージドノード (server.idm.example.com および replica.idm.example.com) にログインすることができる。
-
IdM
admin
のパスワードを把握している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks
~/MyPlaybooks/ansible.cfg ファイルを以下の内容で作成します。
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
~/MyPlaybooks/inventory ファイルを以下の内容で作成します。
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
この設定は、これらの場所にあるホストの 2 つのホストグループ (eu と us) を定義します。さらに、この設定は、eu および us グループのすべてのホストを含む ipaserver ホストグループを定義します。
オプション: SSH 公開鍵および秘密鍵を作成します。テスト環境でのアクセスを簡素化するには、秘密鍵にパスワードを設定しないでください。
$ ssh-keygen
各マネージドノードの IdM
admin
アカウントに SSH 公開鍵をコピーします。$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
これらのコマンドでは、IdM
管理者
パスワードを入力します。Vault パスワードを含む password_file ファイルを作成します。
redhat
ファイルを変更する権限を変更します。
$ chmod 0600 password_file
IdM の
admin
パスワードを保存する secret.yml Ansible Vault を作成します。Vault パスワードを保存するように password_file を設定します。
$ ansible-vault create --vault-password-file=password_file secret.yml
プロンプトが表示されたら、secret.yml ファイルの内容を入力します。
ipaadmin_password: Secret123
Playbook で暗号化された ipaadmin_password
を使用するには、vars_file
ディレクティブを使用する必要があります。たとえば、IdM ユーザーを削除する単純な Playbook は次のようになります。
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent
Playbook を実行するときに、--vault-password-file=password_file
オプションを追加して、Ansible に Vault パスワードを使用して ipaadmin_password
を復号するように指示します。以下に例を示します。
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
セキュリティー上の理由から、各セッションの終了時に Vault パスワードファイルを削除し、新しいセッションの開始時に手順 6 - 8 を繰り返してください。