第10章 Ansible を使用したオーバークラウドの設定

重要

この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト目的のみでご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビューについての詳しい情報は「対象範囲の詳細」を参照してください。

オーバークラウドの設定を適用する主要な方法として Ansible を使用することが可能です。本章では、オーバークラウドでこの機能を有効化する手順を説明します。

director は Ansible Playbook を自動生成しますが、Ansible の構文を十分に理解しておくと役立ちます。Ansible の使用方法については、https://docs.ansible.com/ を参照してください。

注記

Ansible では、roles の概念も使用します。これは、OpenStack Platform director のロールとは異なります。

10.1. Ansible ベースのオーバークラウド設定 (config-download)

config-download 機能

  • Heat の代わりに Ansible を使用して、オーバークラウドの設定の適用を有効化します。
  • オーバークラウドノード上の Heat と Heat エージェント (os-collect-config) の間の設定デプロイメントデータの通信と転送を置き換えます。

Heat は、config-download を有効化する場合またはしない場合も、標準の機能を維持します。

  • director は環境ファイルとパラメーターを Heat に渡します。
  • director は Heat を使用してスタックとすべての子リソースを作成します。
  • ベアメタルノード、ネットワークなどの OpenStack サービスリソースはいずれも Heat が引き続き作成します。

Heat は SoftwareDeployment リソースから全デプロイメントデータを作成して、オーバークラウドのインストールと設定を行いますが、設定の適用は一切行いません。その代わりに、 Heat は API からデータの提供のみを行います。スタックが作成されたら、Mistral ワークフローが Heat API に対してデプロイメントデータのクエリーを実行して、Ansible インベントリーファイルと生成された Playbook を使用して ansible-playbook を実行します。

10.2. オーバークラウドの設定メソッドを config-download に切り替える手順

以下の手順では、オーバークラウドの設定メソッドを OpenStack Orchestration (heat) から Ansible ベース config-download のメソッドに切り替えます。このような状況では、アンダークラウドは Ansible の control node (ansible-playbook を実行するノード) としての機能を果たします。control node とアンダークラウドという用語は、アンダークラウドのインストールが実行されるのと同じノードを指します。

手順

  1. stackrc ファイルを読み込みます。

    $ source ~/stackrc
  2. --config-download オプションと heat ベースの設定を無効にする環境ファイルを指定してオーバークラウドのデプロイメントのコマンドを実行します。

    $ openstack overcloud deploy --templates \
        --config-download \
        -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml \
        --overcloud-ssh-user heat-admin \
        --overcloud-ssh-key ~/.ssh/id_rsa \
        [OTHER OPTIONS]

    以下のオプションの用途に注意してください。

    • --config-download により、追加の Mistral ワークフローが有効化され、Heat の代わりに ansible-playbook で設定が適用されるようになります。
    • -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml は、Heat のソフトウェアデプロイメント設定リソースをAnsible ベースの同等のリソースにマッピングするための必須の環境ファイルです。これにより、Heat が設定を適用するのではなく、Heat API を介して設定データが提供されます。
    • --overcloud-ssh-user および --overcloud-ssh-key は、各オーバークラウドノードに SSH 接続して、初期 tripleo-admin ユーザーを作成し、SSH キーを /home/tripleo-admin/.ssh/authorized_keys に挿入するのに使用します。SSH キーを挿入するには、初回の SSH 接続で --overcloud-ssh-user (heat-admin がデフォルト) と --overcloud-ssh-key (~/.ssh/id_rsa がデフォルト) を使用して認証情報を指定します。--overcloud-ssh-key で指定した秘密鍵の公開を制限するために、director は Heat や Mistral などのどの API サービスにもこの鍵を渡さず、「openstack overcloud deploy」コマンドのみがこの鍵を使用して tripleo-admin ユーザーのアクセスを有効化します。

    このコマンドを実行する際には、オーバークラウドに関連するその他のファイルも追加するようにしてください。以下に例を示します。

    • -e で指定するカスタム設定の環境ファイル
    • --roles-file で指定するカスタムロール (roles_data) ファイル
    • --networks-file で指定するコンポーザブルネットワーク (network_data) ファイル
  3. オーバークラウドのデプロイメントのコマンドは、標準のスタック操作を実行します。ただし、オーバークラウドのスタックが設定段階に達すると、スタックは config-download メソッドに切り替わり、オーバークラウドを設定します。

    2018-05-08 02:48:38Z [overcloud-AllNodesDeploySteps-xzihzsekhwo6]: UPDATE_COMPLETE  Stack UPDATE completed successfully
    2018-05-08 02:48:39Z [AllNodesDeploySteps]: UPDATE_COMPLETE  state changed
    2018-05-08 02:48:45Z [overcloud]: UPDATE_COMPLETE  Stack UPDATE completed successfully
    
     Stack overcloud UPDATE_COMPLETE
    
    Deploying overcloud configuration

    オーバークラウドの設定が完了するまで待ちます。

  4. Ansible によるオーバークラウドの設定が完了した後には、director が成功および失敗したタスクと、オーバークラウドのアクセス URL のレポートが表示されます。

    PLAY RECAP **********************************************************
    192.0.2.101        : ok=173  changed=42   unreachable=0    failed=0
    192.0.2.102        : ok=133  changed=42   unreachable=0    failed=0
    localhost          : ok=2    changed=0    unreachable=0    failed=0
    
    
    Ansible passed.
    Overcloud configuration completed.
    Started Mistral Workflow tripleo.deployment.v1.get_horizon_url. Execution ID: 0e4ca4f6-9d14-418a-9c46-27692649b584
    Overcloud Endpoint: http://10.0.0.1:5000/
    Overcloud Horizon Dashboard URL: http://10.0.0.1:80/dashboard
    Overcloud rc file: /home/stack/overcloudrc
    Overcloud Deployed

事前にプロビジョニング済みのノードを使用する場合には、追加のステップを実行して、config-download を使用したデプロイメントが成功するようにします。

10.3. 事前にプロビジョニング済みのノードでの config-download の有効化

事前にプロビジョニング済みのノードで config-download を使用する場合には、Heat ベースのホスト名をそれらの実際のホスト名にマッピングして、ansible-playbook が解決されたホストに到達できるようにする必要があります。それらの値は、HostnameMap を使用してマッピングします。

手順

  1. 環境ファイル (例: hostname-map.yaml) を作成して、HostnameMap パラメーターとホスト名のマッピングを指定します。以下の構文を使用してください。

    parameter_defaults:
      HostnameMap:
        [HEAT HOSTNAME]: [ACTUAL HOSTNAME]
        [HEAT HOSTNAME]: [ACTUAL HOSTNAME]

    [HEAT HOSTNAME] は通常 [STACK NAME]-[ROLE]-[INDEX] の表記法に従います。以下に例を示します。

    parameter_defaults:
      HostnameMap:
        overcloud-controller-0: controller-00-rack01
        overcloud-controller-1: controller-01-rack02
        overcloud-controller-2: controller-02-rack03
        overcloud-compute-0: compute-00-rack01
        overcloud-compute-1: compute-01-rack01
        overcloud-compute-2: compute-02-rack01
  2. hostname-map.yaml の内容を保存します。
  3. config-download のデプロイメントを実行する際には、-e オプションで環境ファイルを指定します。以下に例を示します。

    $ openstack overcloud deploy --templates \
        --config-download \
        -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml \
        -e /home/stack/templates/hostname-map.yaml \
        --overcloud-ssh-user heat-admin \
        --overcloud-ssh-key ~/.ssh/id_rsa \
        [OTHER OPTIONS]

10.4. config-download の作業ディレクトリーへのアクセスの有効化

Mistral は、config-download 機能の Ansible Playbook の execution を実行します。Mistral は Playbook、設定ファイル、ログを作業ディレクトリーに保存します。この作業ディレクトリーは、/var/lib/mistral/ にあり、Mistral ワークフローの execution の UUID を使用して名前が付けられています。

これらの作業ディレクトリーにアクセスする前に、stack ユーザーに適切なアクセス権を設定する必要があります。

手順

  1. mistral グループは、/var/lib/mistral 下にある全ファイルを読み取ることができます。アンダークラウド上の stack ユーザーに、これらのファイルに対する対話型の読み取り専用アクセス権を付与します。

    $ sudo usermod -a -G mistral stack
  2. 以下のコマンドで stack ユーザーのパーミッションを更新します。

    [stack@director ~]$ exec su -l stack

    このコマンドでは再度ログインを要求されます。stack ユーザーのパスワードを入力します。

  3. /var/lib/mistral ディレクトリーへの読み取りアクセスをテストします。

    $ ls /var/lib/mistral/

10.5. config-download のログと作業ディレクトリーの確認

config-download の過程には、Ansible によってアンダークラウドの /var/lib/mistral/<execution uuid>/ansible.log にログファイルが作成されます。<execution uuid> は、ansible-playbook を実行する Mistral の execution に対応する UUID です。

手順

  1. openstack workflow execution list コマンドで全 execution を一覧表示して、config-download を実行した、選択された Mistral の execution のワークフロー ID を特定します。

    $ openstack workflow execution list
    $ less /var/lib/mistral/<execution uuid>/ansible.log

    <execution uuid> は、ansible-playbook を実行した Mistral の execution の UUID です。

  2. または、/var/lib/mistral 下で直近に変更されたディレクトリーを探して、最新のデプロイメントのログを迅速に特定します。

    $ less /var/lib/mistral/$(ls -t /var/lib/mistral | head -1)/ansible.log

10.6. config-download の手動による実行

/var/lib/mistral/ 内の各作業ディレクトリーには、ansible-playbook と直接対話するために必要な Playbook とスクリプトが含まれています。以下の手順では、これらのファイルとの対話方法について説明します。

手順

  1. 選択した Ansible Playbook のディレクトリーに移動します。

    $ cd /var/lib/mistral/<execution uuid>/

    <execution uuid> は、ansible-playbook を実行した Mistral の execution の UUID です。

  2. Mistral の作業ディレクトリーに移動したら、ansible-playbook-command.sh を実行して、デプロイメントを再現します。

    $ ./ansible-playbook-command.sh
  3. このスクリプトには、追加の Ansible 引数を渡すことができます。それらの引数は、ansible-playbook コマンドに未変更で渡されます。これにより、チェックモード (--check)、ホストの限定 (--limit)、変数のオーバーライド (-e) などの Ansible の機能を更に活用することが可能となります。以下に例を示します。

    $ ./ansible-playbook-command.sh --limit Controller
  4. 作業ディレクトリーには、オーバークラウドの設定を実行する deploy_steps_playbook.yaml という名前の Playbook が含まれています。この Playbook を表示するには、以下のコマンドを実行します。

    $ less deploy_steps_playbook.yaml

    Playbook は、作業ディレクトリーに含まれているさまざまなタスクファイルを使用します。タスクファイルには、OpenStack Platform の全ロールに共通するものと、特定の OpenStack Platform ロールおよびサーバー固有のものがあります。

  5. 作業ディレクトリーには、 オーバークラウドの roles_data ファイルで定義されている各ロールに対応するサブディレクトリーも含まれます。以下に例を示します。

    $ ls Controller/

    各 OpenStack Platform ロールにディレクトリーには、そのロール種別の個々のサーバー用のサブディレクトリーも含まれます。これらのディレクトリーには、コンポーザブルロールのホスト名の形式を使用します。以下に例を示します。

    $ ls Controller/overcloud-controller-0
  6. Ansible のタスクはタグ付けられます。タグの全一覧を確認するには、ansible-playbook で CLI の引数 --list-tags を使用します。

    $ ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yaml

    次に、ansible-playbook-command.sh スクリプトで --tags--skip-tags--start-at-task のいずれかを使用して、タグ付けた設定を適用します。以下に例を示します。

    $ ./ansible-playbook-command.sh --tags overcloud
警告

--tags--skip-tags--start-at-task などの ansible-playbook CLI 引数を使用する場合には、デプロイメントの設定は、間違った順序で実行したり適用したりしないでください。これらの CLI 引数は、以前に失敗したタスクを再度実行する場合や、初回のデプロイメントを繰り返す場合に便利な方法です。ただし、デプロイメントの一貫性を保証するには、deploy_steps_playbook.yaml の全タスクを順番通りに実行する必要があります。

10.7. config-download の無効化

標準の Heat ベースの設定メソッドに戻るには、次回に openstack overcloud deploy を実行する際に、関連するオプションと環境ファイルを削除します。

手順

  1. stackrc ファイルを読み込みます。

    $ source ~/stackrc
  2. オーバークラウドのデプロイメントのコマンドを実行しますが、--config-download オプションまたは「config-download-environment.yaml」環境ファイルは含めないでください。

    $ openstack overcloud deploy --templates \
        [OTHER OPTIONS]

    このコマンドを実行する際には、オーバークラウドに関連するその他のファイルも追加するようにしてください。以下に例を示します。

    • -e で指定するカスタム設定の環境ファイル
    • --roles-file で指定するカスタムロール (roles_data) ファイル
    • --networks-file で指定するコンポーザブルネットワーク (network_data) ファイル
  3. オーバークラウドのデプロイメントのコマンドは、標準のスタック操作を実行します。これには、Heat を使用した設定が含まれます。

10.8. 次のステップ

これで、通常のオーバークラウドの操作を続行できるようになりました。