Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
5.13. SSL/TLS를 통한 Undercloud의 공용 API에 대한 액세스 준비
오버클라우드는 업그레이드 중에 언더클라우드의 OpenStack Object Storage(swift) 공용 API에 액세스해야 합니다. 언더클라우드에서 자체 서명된 인증서를 사용하는 경우 각 오버클라우드 노드에 언더클라우드의 인증 기관을 추가해야 합니다.
사전 요구 사항
- 언더클라우드는 공용 API에 SSL/TLS 사용
절차
director의 동적 Ansible 스크립트가 OpenStack Platform 12 버전으로 업데이트되었으며, 이 버전에서는 Overcloud 계획에서
RoleNetHostnameMap
Heat 매개 변수를 사용하여 인벤토리를 정의합니다. 그러나 현재 오버클라우드에서는RoleNetHostnameMap
매개변수가 없는 OpenStack Platform 11 템플릿 버전을 사용합니다. 즉, 다음 명령을 사용하여 생성할 수 있는 임시 정적 인벤토리 파일을 생성해야 합니다.$ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
다음이 포함된 Ansible 플레이북(
undercloud-ca.yml
)을 생성합니다.--- - name: Add undercloud CA to overcloud nodes hosts: all user: heat-admin become: true vars: ca_certificate: /etc/pki/ca-trust/source/anchors/cm-local-ca.pem tasks: - name: Copy undercloud CA copy: src: "{{ ca_certificate }}" dest: /etc/pki/ca-trust/source/anchors/ - name: Update trust command: "update-ca-trust extract" - name: Get the swift endpoint shell: | sudo hiera swift::keystone::auth::public_url | awk -F/ '{print $3}' register: swift_endpoint delegate_to: 127.0.0.1 become: yes become_user: stack - name: Verify URL uri: url: https://{{ swift_endpoint.stdout }}/healthcheck return_content: yes register: verify - name: Report output debug: msg: "{{ ansible_hostname }} can access the undercloud's Public API" when: verify.content == "OK"
이 플레이북에는 각 노드에서 다음을 수행하는 여러 작업이 포함되어 있습니다.
-
Undercloud의 인증 기관 파일을 Overcloud 노드에 복사합니다. 언더클라우드에서 생성한 경우 기본 위치는
/etc/pki/ca-trust/source/anchors/cm-local-ca.pem
입니다. - 명령을 실행하여 Overcloud 노드에서 인증 기관 신뢰 데이터베이스를 업데이트합니다.
- Overcloud 노드에서 언더클라우드의 Object Storage Public API를 확인하고 성공했는지 보고합니다.
-
Undercloud의 인증 기관 파일을 Overcloud 노드에 복사합니다. 언더클라우드에서 생성한 경우 기본 위치는
다음 명령을 사용하여 플레이북을 실행합니다.
$ ansible-playbook -i overcloud_hosts undercloud-ca.yml
이는 임시 인벤토리를 사용하여 Ansible에 오버클라우드 노드를 제공합니다.
사용자 지정 인증 기관 파일을 사용하는 경우
ca_certificate
변수를 위치로 변경할 수 있습니다. 예를 들면 다음과 같습니다.$ ansible-playbook -i overcloud_hosts undercloud-ca.yml -e ca_certificate=/home/stack/ssl/ca.crt.pem
결과 Ansible 출력에 노드에 대한 디버그 메시지가 표시되어야 합니다. 예를 들면 다음과 같습니다.
ok: [192.168.24.100] => { "msg": "overcloud-controller-0 can access the undercloud's Public API" }
관련 정보
- 오버클라우드에서 Ansible 자동화를 실행하는 방법에 대한 자세한 내용은 Director 설치 및 사용 가이드 의 "동적 인벤토리 스크립트 실행" 을 참조하십시오.