2.4. novajoin을 사용하여 Red Hat IdM(Identity Manager)에 노드 등록
novajoin은 배포 프로세스의 일부로 Red Hat IdM(Identity Manager)에 노드를 등록하는 데 사용하는 기본 도구입니다. Red Hat은 TLS-e를 사용하여 언더클라우드 및 오버클라우드를 설정하기 위해 기본 novajoin 솔루션을 통해 새로운 ansible 기반 tripleo-ipa 솔루션을 권장합니다. 자세한 내용은 Ansible을 사용하여 TLS-e 구현에서 참조하십시오.
나머지 IdM 통합을 진행하기 전에 등록 프로세스를 수행해야 합니다. 등록 과정에는 다음 단계가 포함됩니다.
- 언더클라우드 노드를 CA(인증 기관)에 추가
- IdM에 언더클라우드 노드 추가
- 선택 사항: IdM 서버를 오버클라우드의 DNS 서버로 설정
- 환경 파일 준비 및 오버클라우드 배포
- IdM 및 RHOSP에서 오버클라우드 등록 테스트
- 선택 사항: IdM에서 novajoin의 DNS 항목 추가
novajoin에 IdM 등록은 현재 언더클라우드 및 오버클라우드 노드에서만 사용할 수 있습니다. 오버클라우드 인스턴스에 대한 novajoin 통합은 이후 릴리스에서 지원될 것으로 예상됩니다.
2.4.1. 인증 기관에 언더클라우드 노드 추가 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드를 배포하기 전에 언더클라우드 노드에 python3-novajoin 패키지를 설치하고 스크립트를 실행하여 언더클라우드를 CA(인증 기관)에 추가합니다.
novajoin -ipa-setup
절차
언더클라우드 노드에서
python3-novajoin패키지를 설치합니다.$ sudo dnf install python3-novajoin언더클라우드 노드에서
novajoin-ipa-setup스크립트를 실행하고 배포에 맞게 값을 조정합니다.$ sudo /usr/libexec/novajoin-ipa-setup \ --principal admin \ --password <IdM admin password> \ --server <IdM server hostname> \ --realm <realm> \ --domain <overcloud cloud domain> \ --hostname <undercloud hostname> \ --precreate결과 OTP(One-Time Password)를 사용하여 Undercloud를 등록합니다.
2.4.2. Red Hat IdM(Identity Manager)에 언더클라우드 노드 추가 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 노드를 CA(인증 기관)에 추가한 후 IdM을 사용하여 언더클라우드를 등록하고 novajoin을 구성합니다. undercloud.conf 파일의 [DEFAULT] 섹션에 다음 설정을 구성합니다.
절차
novajoin서비스를 활성화합니다.[DEFAULT] enable_novajoin = trueIdM을 사용하여 언더클라우드 노드를 등록할 수 있도록 1회성 암호(OTP)를 설정합니다.
ipa_otp = <otp>neutron의 DHCP 서버에서 제공할 오버클라우드의 도메인 이름을 설정합니다.
overcloud_domain_name = <domain>언더클라우드의 호스트 이름을 설정합니다.
undercloud_hostname = <undercloud FQDN>IdM을 언더클라우드의 이름 서버로 설정합니다.
undercloud_nameservers = <IdM IP>더 큰 환경의 경우 novajoin 연결 시간 제한 값을 검토하십시오.
undercloud.conf파일에서undercloud-timeout.yaml이라는 새 파일에 참조를 추가합니다.hieradata_override = /home/stack/undercloud-timeout.yamlundercloud-timeout.yaml에 다음 옵션을 추가합니다. 시간 제한 값을 초 단위로 지정할 수 있습니다(예:5):nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>선택 사항: 로컬 openSSL 인증 기관에서 director의 공용 끝점에 대한 SSL 인증서를 생성
하려면 generate_service_certificate매개변수를true로 설정합니다.generate_service_certificate = true-
undercloud.conf파일을 저장합니다. 언더클라우드 배포 명령을 실행하여 기존 언더클라우드에 변경 사항을 적용합니다.
$ openstack undercloud install
검증
다음 단계를 완료하여 언더클라우드가 올바르게 등록되었는지 확인합니다.
IdM에 호스트를 나열합니다.
$ kinit admin $ ipa host-find언더클라우드에
/etc/novajoin/krb5.keytab이 있는지 확인합니다.ls /etc/novajoin/krb5.keytab
2.4.3. 오버클라우드의 DNS 서버로 Red Hat IdM(Identity Manager) 설정 링크 복사링크가 클립보드에 복사되었습니다!
IdM 환경에 대한 자동 감지 및 등록이 용이하려면 DNS 서버로 IdM을 설정합니다. 이 절차는 선택 사항이지만 권장되는 절차입니다.
절차
언더클라우드에 연결합니다.
$ source ~/stackrcIdM을 DNS 이름 서버로 사용하도록 컨트롤 플레인 서브넷을 구성합니다.
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>IdM 서버를 사용하도록 환경 파일에서
DnsServers매개변수를 설정합니다.parameter_defaults: DnsServers: ["<idm_server_address>"]일반적으로 이 매개변수는 사용자 지정
network-environment.yaml파일에 정의됩니다.
2.4.4. novajoin 등록을 사용하여 환경 파일 준비 및 오버클라우드 배포 링크 복사링크가 클립보드에 복사되었습니다!
IdM 통합을 사용하여 오버클라우드를 배포하려면 환경 파일을 생성하고 편집하여 오버클라우드에서 정의한 도메인을 기반으로 사용자 지정 도메인 매개변수 을 사용하도록 오버클라우드를 구성합니다. 그런 다음 모든 환경 파일과 배포에 필요한 추가 환경 파일을 사용하여 오버클라우드를 배포합니다.
CloudDomain 및 CloudName
절차
/usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml환경 파일의 사본을 생성합니다.$ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yaml/home/stack/templates/custom-domain.yaml환경 파일을 편집하고 배포에 맞게CloudDomain및CloudName*값을 설정합니다.parameter_defaults: CloudDomain: lab.local CloudName: overcloud.lab.local CloudNameInternal: overcloud.internalapi.lab.local CloudNameStorage: overcloud.storage.lab.local CloudNameStorageManagement: overcloud.storagemgmt.lab.local CloudNameCtlplane: overcloud.ctlplane.lab.local사용자 환경에 적합한 TLS 구현을 선택합니다.
enable-tls.yaml환경 파일을 사용하여 사용자 정의 인증서로 외부 끝점을 보호합니다.-
/usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml을/home/stack/templates로 복사합니다. -
사용자 정의 인증서 및 키를 포함하도록
/home/stack/enable-tls.yaml환경 파일을 수정합니다. 배포에 다음 환경 파일을 포함하여 내부 및 외부 끝점을 보호합니다.
- enable-internal-tls.yaml
- tls-every-endpoints-dns.yaml
- custom-domain.yaml
enable-tls.yaml
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e /home/stack/templates/enable-tls.yaml
-
haproxy-public-tls-certmonger.yaml환경 파일을 사용하여 IdM에서 발급한 인증서로 외부 엔드포인트를 보호합니다. 이 구현을 위해 novajoin에서 사용하는 VIP 끝점의 DNS 항목을 생성해야 합니다.novajoin에서 사용하는 VIP 끝점의 DNS 항목을 생성해야 합니다.
'/home/stack/templates의 사용자 지정 network-environment.yaml 파일에 있는오버클라우드 네트워크를 식별합니다.parameter_defaults: ControlPlaneDefaultRoute: 192.168.24.1 ExternalAllocationPools: - end: 10.0.0.149 start: 10.0.0.101 InternalApiAllocationPools: - end: 172.17.1.149 start: 172.17.1.10 StorageAllocationPools: - end: 172.17.3.149 start: 172.17.3.10 StorageMgmtAllocationPools: - end: 172.17.4.149 start: 172.17.4.10heat 템플릿에 각 오버클라우드 네트워크의 가상 IP 주소 목록을 생성합니다(예:
/home/stack/public_vib.yaml).parameter_defaults: ControlFixedIPs: [{'ip_address':'192.168.24.101'}] PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}] InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}] StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}] StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}] RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]필요에 따라 각 VIP 및 영역에 대한 DNS 항목을 IdM에 추가합니다.
ipa dnsrecord-add lab.local overcloud --a-rec 10.0.0.101 ipa dnszone-add ctlplane.lab.local ipa dnsrecord-add ctlplane.lab.local overcloud --a-rec 192.168.24.101 ipa dnszone-add internalapi.lab.local ipa dnsrecord-add internalapi.lab.local overcloud --a-rec 172.17.1.101 ipa dnszone-add storage.lab.local ipa dnsrecord-add storage.lab.local overcloud --a-rec 172.17.3.101 ipa dnszone-add storagemgmt.lab.local ipa dnsrecord-add storagemgmt.lab.local overcloud --a-rec 172.17.4.101배포에 다음 환경 파일을 포함하여 내부 및 외부 끝점을 보호합니다.
- enable-internal-tls.yaml
- tls-everywhere-endpoints-dns.yaml
- haproxy-public-tls-certmonger.yaml
- custom-domain.yaml
public_vib.yaml
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e /home/stack/templates/public-vip.yaml
novajoin을 사용하여 기존 배포에서 TLS-e(TLS-e)를 구현할 수 없습니다.
2.4.5. Red Hat IdM(Identity Manager)에서 오버클라우드 등록 테스트 링크 복사링크가 클립보드에 복사되었습니다!
novajoin을 사용하여 IdM에 언더클라우드 및 오버클라우드 등록을 완료한 후 IdM에서 오버클라우드 노드를 검색하고 호스트 항목에 Keytab:True 가 포함되어 있는지 확인하여 등록에 성공했는지 테스트할 수 있습니다. 또한 오버클라우드 노드에 로그인하여 sssd 명령에서 IdM 사용자를 쿼리할 수 있는지 확인할 수 있습니다.
IdM에서 오버클라우드 노드를 찾고 host 항목에
Keytab:True:$ ipa host-show overcloud-node-01 Host name: overcloud-node-01.lab.local Principal name: host/overcloud-node-01.lab.local@LAB.LOCAL Principal alias: host/overcloud-node-01.lab.local@LAB.LOCAL SSH public key fingerprint: <snip> Password: False Keytab: True Managed by: overcloud-node-01.lab.localOvercloud 노드에 로그인하고
sssd가 IdM 사용자를 쿼리할 수 있는지 확인합니다. 예를 들어 이름이susan인 IdM 사용자를 쿼리하려면 다음을 수행합니다.$ getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)