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 ホストグループが存在する。

手順

  1. ~/MyPlaybooks/ ディレクトリーに移動します。

    $ cd ~/MyPlaybooks/
    Copy to Clipboard
  2. 次の内容を含む 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
    Copy to Clipboard
    注記
    sudorules オプションを使用すると、特定の sudo ルールにのみ適用される複数の sudo ルール変数を指定できます。この sudo ルールは name 変数によって定義されます。これは、sudorules オプションの唯一の必須変数です。この例では、usergroupallow_sudocmd、および allow_sudocmdgroup 変数が、testrule01 sudo ルールに適用されます。
  3. ファイルを保存します。
  4. Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。

    $ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-presence-of-multiple-sudorules-in-a-task.yml
    Copy to Clipboard
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat