20.12. 단일 Ansible 작업에서 여러 IdM sudo 규칙 관리
ansible-freeipa 모듈에서 사용할 수 있는 sudorules 옵션을 사용하면 단일 Ansible 작업에 여러 IdM(Identity Management) 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 클라이언트, 서버 또는 복제본입니다.
이 예제에서는 다음을 가정합니다.
- user01 및 user02 사용자는 IdM에 있습니다.
- usergroup01 사용자 그룹이 IdM에 있습니다.
- hostgroup01 및 hostgroup02 호스트 그룹이 IdM에 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/다음 콘텐츠를 사용하여 ensure-presence-of-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- 참고
-
옵션을 사용하여 특정 sudo 규칙에만 적용되는 여러sudorulessudo규칙 변수를 지정할 수 있습니다. 이sudo규칙은sudorules옵션에 대한 유일한 필수 변수인name변수로 정의됩니다. 이 예제에서는사용자,그룹,allow_sudocmd및allow_sudocmdgroup변수가 testrule01sudo규칙에 적용됩니다.
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. 플레이북 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-presence-of-multiple-sudorules-in-a-task.yml