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 사용

절차

  1. director의 동적 Ansible 스크립트가 OpenStack Platform 12 버전으로 업데이트되었으며, 이 버전에서는 Overcloud 계획에서 RoleNetHostnameMap Heat 매개 변수를 사용하여 인벤토리를 정의합니다. 그러나 현재 오버클라우드에서는 RoleNetHostnameMap 매개변수가 없는 OpenStack Platform 11 템플릿 버전을 사용합니다. 즉, 다음 명령을 사용하여 생성할 수 있는 임시 정적 인벤토리 파일을 생성해야 합니다.

    $ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
  2. 다음이 포함된 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를 확인하고 성공했는지 보고합니다.
  3. 다음 명령을 사용하여 플레이북을 실행합니다.

    $ 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
  4. 결과 Ansible 출력에 노드에 대한 디버그 메시지가 표시되어야 합니다. 예를 들면 다음과 같습니다.

    ok: [192.168.24.100] => {
        "msg": "overcloud-controller-0 can access the undercloud's Public API"
    }

관련 정보