12.2.12. PoC 環境で Ansible Playbook を使用して IdM クライアント上の IdM ユーザーに sudo アクセスを許可する
1 つの Ansible Playbook を使用して、特定の IdM ホスト上の IdM ユーザーアカウントに特定のコマンドの sudo アクセスを許可する方法を説明します。まず、sudo コマンドを追加し、次に 1 つ以上のコマンドの sudo ルールを作成します。
以下の手順を実行して、client.idm.example.com マシン (client) 上で /usr/sbin/reboot コマンドを実行する権限を idmuser01 のアカウントに付与する sudo ルール idmuser01_reboot を作成してください。
前提条件
- ansible_user ユーザーとして controller.idm.example.com にログインしている。
手順
~/MyPlaybooks ディレクトリーに、
sudoルールのパラメーターを含む Ansible Playbook ファイル add-sudo-rule.yml を作成します。次に例を示します。--- - name: Playbook to handle SUDO rules hosts: ipaserver tasks: - name: Add reboot to sudo commands freeipa.ansible_freeipa.ipasudocmd: ipaadmin_password: Secret123 name: /usr/sbin/reboot state: present - name: Create a sudo rule idmuser01_reboot freeipa.ansible_freeipa.ipasudorule: name: idmuser01_reboot ipaadmin_password: Secret123 - name: Modify the idmuser01_reboot sudo rule by adding reboot command and idmuser01 freeipa.ansible_freeipa.ipasudorule: ipaadmin_password: Secret123 name: idmuser01_reboot allow_sudocmd: - /usr/sbin/reboot user: - idmuser01 action: membersudoルールがすでに存在し、それを変更するだけの場合は、actionオプションをmemberに設定する必要があります。これを行わないと、Playbook が失敗します。この例のタスクModify the idmuser01_reboot sudo rule by adding reboot command and idmuser01(reboot コマンドと idmuser01 を追加して sudo ルール idmuser01_reboot を変更する) は、Create a sudo rule idmuser01_reboot(sudo ルール idmuser01_reboot を作成する) タスクによって作成されたルールを変更するものです。そのため、action: memberを指定する必要があります。利用可能なオプションの完全なリストは、
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-sudocmd.mdおよび…/README-sudorule.mdファイルで確認できます。Playbook を実行します。
$ ansible-playbook -i inventory add-sudo-rule.yml
検証
-
idmuser01としてclientにログインします。 sudoを使用してマシンを再起動します。プロンプトが表示されたら、idmuser01のパスワードを入力します。$ sudo /usr/sbin/reboot[sudo] password for idmuser01:sudoルールが正しく設定されている場合には、マシンが再起動します。