26장. Ansible 플레이북을 사용하여 Identity Management 복제본 설치

Ansible 을 사용하여 시스템을 IdM 복제본으로 구성하여 IdM 도메인에 등록하고, 시스템이 도메인의 IdM 서버에서 IdM 서비스를 사용할 수 있도록 합니다.

배포는 ipareplica Ansible 역할에 의해 관리됩니다. 이 역할은 자동 검색 모드를 사용하여 IdM 서버, 도메인 및 기타 설정을 식별할 수 있습니다. 그러나 다양한 복제본 그룹이 서로 다른 시간에 배포되는 경우 계층형 모델에 여러 복제본을 배포하는 경우 각 그룹의 특정 서버 또는 복제본을 정의해야 합니다.

사전 요구 사항

  • Ansible 제어 노드에 ansible-freeipa 패키지를 설치했습니다.
  • Ansible 및 IdM 개념을 이해할 수 있습니다.

    • Ansible 역할
    • Ansible 노드
    • Ansible 인벤토리
    • Ansible 작업
    • Ansible 모듈
    • Ansible 플레이 및 플레이북

26.1. IdM 복제본 설치를 위한 기본, 서버 및 클라이언트 변수 지정

IdM 복제본을 설치하기 위한 인벤토리 파일을 구성하려면 이 절차를 완료합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 정규화된 도메인 이름(FQDN)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 편집할 인벤토리 파일을 엽니다. IdM 복제본이 될 호스트의 FQDN(정규화된 도메인 이름)을 지정합니다. FQDN은 유효한 DNS 이름이어야 합니다.

    • 숫자, 영문자 및 하이픈(-)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다.
    • 호스트 이름은 모두 소문자여야 합니다.

      정의된 복제본의 FQDN만 있는 간단한 인벤토리 호스트 파일의 예

      [ipareplicas]
      replica1.idm.example.com
      replica2.idm.example.com
      replica3.idm.example.com
      [...]

      IdM 서버가 이미 배포되어 있고 IdM DNS 영역에 SRV 레코드가 올바르게 설정된 경우 스크립트에서 다른 모든 필수 값을 자동으로 검색합니다.

  2. [선택 사항] 토폴로지 설계 방법에 따라 인벤토리 파일에 추가 정보를 제공하십시오.

    시나리오 1

    자동 검색을 방지하고 [ipareplicas] 섹션에 나열된 모든 복제본이 있는 경우 인벤토리 파일의 [ipaservers] 섹션에 서버를 설정합니다.

    정의된 IdM 서버 및 복제본의 FQDN이 있는 인벤토리 호스트 파일의 예

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]

    시나리오 2

    또는 자동 검색을 방지하되 특정 서버로 특정 복제본을 배포하려는 경우 인벤토리 파일의 [ipareplicas] 섹션에서 특정 복제본의 서버를 개별적으로 설정합니다.

    특정 복제본에 대해 정의된 특정 IdM 서버가 있는 인벤토리 파일의 예

    [ipaservers]
    server.idm.example.com
    replica1.idm.example.com
    
    [ipareplicas]
    replica2.idm.example.com
    replica3.idm.example.com ipareplica_servers=replica1.idm.example.com

    위의 예에서 replica3.idm.example.com 은 이미 배포된 replica1.idm.example.com 을 해당 복제 소스로 사용합니다.

    시나리오 3

    하나의 배치에 여러 복제본을 배포하고 시간이 우려되는 경우 다중 계층 복제본 배포가 유용할 수 있습니다. 인벤토리 파일에 특정 복제본 그룹(예: [ipareplicas_tier1][ipareplicas_tier2] )을 정의하고 install-replica.yml 플레이북의 각 그룹에 대해 별도의 플레이를 설계합니다.

    복제본 계층이 정의된 인벤토리 파일 예

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas_tier1]
    replica1.idm.example.com
    
    [ipareplicas_tier2]
    replica2.idm.example.com \ ipareplica_servers=replica1.idm.example.com,server.idm.example.com

    ipareplica_servers 의 첫 번째 항목이 사용됩니다. 두 번째 항목은 대체 옵션으로 사용됩니다. IdM 복제본을 배포하기 위해 여러 계층을 사용하는 경우 플레이북에서 별도의 작업을 통해 먼저 tier1에서 복제본을 배포한 다음 tier2에서 복제본을 복제해야 합니다.

    다른 복제본 그룹에 대해 다른 플레이가 있는 플레이북 파일의 예

    ---
    - name: Playbook to configure IPA replicas (tier1)
      hosts: ipareplicas_tier1
      become: true
    
      roles:
      - role: ipareplica
        state: present
    
    - name: Playbook to configure IPA replicas (tier2)
      hosts: ipareplicas_tier2
      become: true
    
      roles:
      - role: ipareplica
        state: present

  3. [선택 사항] firewalld 및 DNS에 대한 추가 정보를 제공하십시오.

    시나리오 1

    복제본이 기본 영역 대신 지정된 firewalld 영역을 사용하도록 하려면 인벤토리 파일에 지정할 수 있습니다. 예를 들어, 기본적으로 설정된 퍼블릭 영역 대신 IdM 설치에 내부 firewalld 영역을 사용하려는 경우 유용할 수 있습니다.

    사용자 지정 영역을 설정하지 않으면 IdM에서 서비스를 기본 firewalld 영역에 추가합니다. 사전 정의된 기본 영역은 public 입니다.

    중요

    지정된 firewalld 영역이 있어야 하며 영구적으로 있어야 합니다.

    사용자 지정 firewalld 영역이 있는 간단한 인벤토리 호스트 파일의 예

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]
    
    [ipareplicas:vars]
    ipareplica_firewalld_zone=custom zone

    시나리오 2

    복제본이 IdM DNS 서비스를 호스팅하도록 하려면 ipareplica_setup_dns=yes 행을 [ipareplicas:vars] 섹션에 추가합니다. 또한 서버당 DNS 전달자를 사용할지 여부를 지정합니다.

    • 서버별 전달자를 구성하려면 ipareplica_forwarders 변수와 [ipareplicas:vars] 섹션에 문자열 목록을 추가합니다(예: ipareplica_forwarders=192.0.2.1,192.0.2.2).
    • per-server forwarders를 구성하지 않으려면 [ipareplicas:vars] 섹션에 다음 행을 추가합니다. ipareplica_no_forwarders=yes.
    • 복제본의 /etc/resolv.conf 파일에 나열된 forwarders에 따라 서버별 전달자를 구성하려면 ipareplica_auto_forwarders 변수를 [ipareplicas:vars] 섹션에 추가합니다.

    복제본에서 DNS 및 서버별 전달자를 설정하는 지침이 있는 인벤토리 파일의 예

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]
    
    [ipareplicas:vars]
    ipareplica_setup_dns=yes
    ipareplica_forwarders=192.0.2.1,192.0.2.2

    시나리오 3

    ipaclient_configure_dns_resolveipaclient_dns_servers 옵션(사용 가능한 경우)을 사용하여 클러스터 배포를 단순화하여 DNS 확인 프로그램을 지정합니다. IdM 배포가 통합된 DNS를 사용하는 경우 특히 유용합니다.

    DNS 확인자를 지정하는 인벤토리 파일 스니펫:

    [...]
    [ipaclient:vars]
    ipaclient_configure_dns_resolver=true
    ipaclient_dns_servers=192.168.100.1

    참고

    ipaclient_dns_servers 목록에는 IP 주소만 포함되어야 합니다. 호스트 이름은 허용되지 않습니다.

추가 리소스

  • ipareplica 변수에 대한 자세한 내용은 /usr/share/ansible/roles/ipareplica/README.md Markdown 파일을 참조하십시오.