18장. Ansible 플레이북을 사용하여 호스트 관리
Ansible은 시스템 구성, 소프트웨어 배포 및 롤링 업데이트를 수행하는 데 사용되는 자동화 툴입니다. Ansible에는 IdM(Identity Management) 지원이 포함되어 있으며 Ansible 모듈을 사용하여 호스트 관리를 자동화할 수 있습니다.
18.1. Ansible 플레이북을 사용하여 FQDN이 있는 IdM 호스트 항목이 있는지 확인
Ansible 플레이북을 사용하여 RHEL IdM(Identity Management)에 호스트 항목이 있는지 확인하려면 다음 절차를 따르십시오. 호스트 항목은 FQDN( 정규화된 도메인 이름
)에서만 정의됩니다.
다음 조건 중 하나 이상이 적용되는 경우 호스트의 FQDN
이름을 지정하면 충분합니다.
- IdM 서버는 DNS를 관리하도록 구성되지 않았습니다.
-
호스트에 고정 IP 주소가 없거나 호스트가 구성된 시점에 IP 주소를 알 수 없습니다.
FQDN
에서만 정의된 호스트를 추가하면 기본적으로 IdM DNS 서비스에 자리 표시자 항목이 생성됩니다. 예를 들어 랩탑은 IdM 클라이언트로 사전 구성할 수 있지만 구성할 때 IP 주소가 없습니다. DNS 서비스가 레코드를 동적으로 업데이트하면 호스트의 현재 IP 주소가 감지되고 해당 DNS 레코드가 업데이트됩니다.
Ansible이 없으면 ipa host-add
명령을 사용하여 IdM에 호스트 항목이 생성됩니다. IdM에 호스트를 추가하는 결과는 IdM에 존재하는 호스트의 상태입니다. Ansible의 멱등성으로 인해 Ansible을 사용하여 IdM에 호스트를 추가하려면 호스트의 상태를 present: present로 정의하는 플레이북을 생성해야 합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.15 이상을 사용하고 있습니다.
-
freeipa.ansible_freeipa
컬렉션을 설치했습니다. - 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible vault가
ipaadmin_password
를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
-
freeipa.ansible_freeipa
모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
프로세스
확인하려는 IdM에 있는 호스트의
FQDN
을 사용하여 Ansible 플레이북 파일을 생성합니다. 이 단계를 단순화하기 위해/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/host/add-host.yml
파일에서 예제를 복사하고 수정할 수 있습니다.--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: true
--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: true
Copy to Clipboard Copied! Playbook을 실행합니다.
ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
Copy to Clipboard Copied!
이 절차에서는 IdM LDAP 서버에 호스트 항목이 생성되지만 IdM Kerberos 영역에 호스트를 등록하지 않습니다. 이를 위해 IdM 클라이언트로 호스트를 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.
검증
IdM 서버에
admin
으로 로그인합니다.ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password:
Copy to Clipboard Copied! ipa host-show
명령을 입력하고 호스트 이름을 지정합니다.ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM Password: False Keytab: False Managed by: host01.idm.example.com
Copy to Clipboard Copied!
출력은 host01.idm.example.com 이 IdM에 있음을 확인합니다.