Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

5.13. SSL/TLS を介してアンダークラウドのパブリック API にアクセスするための準備

オーバークラウドは、アップグレード中にアンダークラウドの OpenStack Object Storage (swift) のパブリック API にアクセスする必要があります。アンダークラウドで自己署名証明書を使用している場合には、アンダークラウドの認証局を各オーバークラウドノードに追加する必要があります。

前提条件

  • アンダークラウドで、パブリック API に SSL/TLS を使用していること

手順

  1. director の動的な Ansible スクリプトが OpenStack Platform 12 バージョンに更新され、オーバークラウドプラン内の RoleNetHostnameMap Heat パラメーターを使用してインベントリーを定義するようになりました。ただし、オーバークラウドは現在 OpenStack Platform 11 のテンプレートバージョンを使用しており、これには RoleNetHostnameMap パラメーターがありません。これは、一時的な静的インベントリーファイルを作成する必要があることを意味します。このファイルは、以下のコマンドを実行すると生成することができます。

    $ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
  2. 以下の内容を記述した Ansible Playbook (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"

    この Playbook には複数のタスクが含まれており、各ノードで以下の操作を実行します。

    • アンダークラウドの認証局ファイルをオーバークラウドノードにコピーします。アンダークラウドによって生成された場合には、デフォルトの場所は /etc/pki/ca-trust/source/anchors/cm-local-ca.pem です。
    • オーバークラウドノードで、認証局トラストデータベースを更新するコマンドを実行します。
    • オーバークラウドノードから、アンダークラウドの Object Storage パブリック API をチェックして、成功したかどうかを報告します。
  3. 以下のコマンドで Playbook を実行します。

    $ 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"
    }

関連情報