5.13. SSL/TLS を介してアンダークラウドのパブリック API にアクセスするための準備
オーバークラウドは、アップグレード中にアンダークラウドの OpenStack Object Storage (swift) のパブリック API にアクセスする必要があります。アンダークラウドで自己署名証明書を使用している場合には、アンダークラウドの認証局を各オーバークラウドノードに追加する必要があります。
前提条件
- アンダークラウドで、パブリック API に SSL/TLS を使用していること
手順
director の動的な Ansible スクリプトが OpenStack Platform 12 バージョンに更新され、オーバークラウドプラン内の
RoleNetHostnameMap
Heat パラメーターを使用してインベントリーを定義するようになりました。ただし、オーバークラウドは現在 OpenStack Platform 11 のテンプレートバージョンを使用しており、これにはRoleNetHostnameMap
パラメーターがありません。これは、一時的な静的インベントリーファイルを作成する必要があることを意味します。このファイルは、以下のコマンドを実行すると生成することができます。$ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
以下の内容を記述した 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 をチェックして、成功したかどうかを報告します。
-
アンダークラウドの認証局ファイルをオーバークラウドノードにコピーします。アンダークラウドによって生成された場合には、デフォルトの場所は
以下のコマンドで 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
その結果、Ansible の出力には、ノードのデバッグメッセージが表示されます。以下に例を示します。
ok: [192.168.24.100] => { "msg": "overcloud-controller-0 can access the undercloud's Public API" }
関連情報
- オーバークラウドでの Ansible 自動化の実行に関する詳細は、director のインストールと使用方法の 動的インベントリースクリプトの実行 を参照してください。