20.12. 単一の Ansible タスクで複数の IdM sudo ルールを管理する
ansible-freeipa モジュールで利用可能な sudorules オプションを使用すると、1 つの Ansible タスクに複数の Identity Management (IdM)の sudo ルールが存在するか、または存在させないようにすることができます。このオプションを使用すると、sudo ルールをより簡単に定義し、より効率的に実行できるようになります。
前提条件
コントロールノードでは、
- Ansible バージョン 2.14 以降を使用している。
- RHEL 9.6 以降を使用している。
-
ansible-freeipaパッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名(FQDN)を使用して Ansible インベントリーファイル を作成した(この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_passwordが保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
この例ではさらに以下を前提としています。
- IdM に user01 および user02 ユーザーが存在する。
- IdM に、usergroup01 ユーザーグループが存在する。
- IdM に、hostgroup01 および hostgroup02 ホストグループが存在する。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/次の内容を含む ensure-presence-of-multiple-sudorules-in-a-task.yml ファイルを作成します。
--- - name: Playbook to handle sudorules hosts: ipaserver become: true tasks: # Ensure sudo command name: /usr/sbin/dmidecode is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/dmidecode # Ensure sudo command /usr/sbin/reboot is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot # Ensure sudo command /usr/bin/yum is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/bin/yum # Ensure a sudo command group is present - ipasudocmdgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: sudogroup01 sudocmd: - /usr/sbin/dmidecode - /usr/sbin/reboot - name: Ensure multiple sudo rules are present using batch mode ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" sudorules: - name: testrule01 user: - user01 - user02 group: - usergroup01 allow_sudocmd: - /usr/bin/yum allow_sudocmdgroup: - sudogroup01 - name: testrule02 hostgroup: - hostgroup01 - hostgroup02- 注記
-
sudorulesオプションを使用すると、特定のsudoルールにのみ適用される複数のsudoルール変数を指定できます。このsudoルールはname変数によって定義されます。これは、sudorulesオプションの唯一の必須変数です。この例では、user、group、allow_sudocmd、およびallow_sudocmdgroup変数が、testrule01sudoルールに適用されます。
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-presence-of-multiple-sudorules-in-a-task.yml