第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 とアンダークラウドという用語は、アンダークラウドのインストールが実行されるのと同じノードを指します。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
--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) ファイル
-
オーバークラウドのデプロイメントのコマンドは、標準のスタック操作を実行します。ただし、オーバークラウドのスタックが設定段階に達すると、スタックは
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
オーバークラウドの設定が完了するまで待ちます。
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 を使用してマッピングします。
手順
環境ファイル (例:
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-
hostname-map.yamlの内容を保存します。 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 ユーザーに適切なアクセス権を設定する必要があります。
手順
mistralグループは、/var/lib/mistral下にある全ファイルを読み取ることができます。アンダークラウド上のstackユーザーに、これらのファイルに対する対話型の読み取り専用アクセス権を付与します。$ sudo usermod -a -G mistral stack
以下のコマンドで
stackユーザーのパーミッションを更新します。[stack@director ~]$ exec su -l stack
このコマンドでは再度ログインを要求されます。
stackユーザーのパスワードを入力します。/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 です。
手順
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 です。または、
/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 とスクリプトが含まれています。以下の手順では、これらのファイルとの対話方法について説明します。
手順
選択した Ansible Playbook のディレクトリーに移動します。
$ cd /var/lib/mistral/<execution uuid>/
<execution uuid>は、ansible-playbookを実行した Mistral の execution の UUID です。Mistral の作業ディレクトリーに移動したら、
ansible-playbook-command.shを実行して、デプロイメントを再現します。$ ./ansible-playbook-command.sh
このスクリプトには、追加の Ansible 引数を渡すことができます。それらの引数は、
ansible-playbookコマンドに未変更で渡されます。これにより、チェックモード (--check)、ホストの限定 (--limit)、変数のオーバーライド (-e) などの Ansible の機能を更に活用することが可能となります。以下に例を示します。$ ./ansible-playbook-command.sh --limit Controller
作業ディレクトリーには、オーバークラウドの設定を実行する
deploy_steps_playbook.yamlという名前の Playbook が含まれています。この Playbook を表示するには、以下のコマンドを実行します。$ less deploy_steps_playbook.yaml
Playbook は、作業ディレクトリーに含まれているさまざまなタスクファイルを使用します。タスクファイルには、OpenStack Platform の全ロールに共通するものと、特定の OpenStack Platform ロールおよびサーバー固有のものがあります。
作業ディレクトリーには、 オーバークラウドの
roles_dataファイルで定義されている各ロールに対応するサブディレクトリーも含まれます。以下に例を示します。$ ls Controller/
各 OpenStack Platform ロールにディレクトリーには、そのロール種別の個々のサーバー用のサブディレクトリーも含まれます。これらのディレクトリーには、コンポーザブルロールのホスト名の形式を使用します。以下に例を示します。
$ ls Controller/overcloud-controller-0
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 を実行する際に、関連するオプションと環境ファイルを削除します。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
オーバークラウドのデプロイメントのコマンドを実行しますが、
--config-downloadオプションまたは「config-download-environment.yaml」環境ファイルは含めないでください。$ openstack overcloud deploy --templates \ [OTHER OPTIONS]このコマンドを実行する際には、オーバークラウドに関連するその他のファイルも追加するようにしてください。以下に例を示します。
-
-eで指定するカスタム設定の環境ファイル -
--roles-fileで指定するカスタムロール (roles_data) ファイル -
--networks-fileで指定するコンポーザブルネットワーク (network_data) ファイル
-
- オーバークラウドのデプロイメントのコマンドは、標準のスタック操作を実行します。これには、Heat を使用した設定が含まれます。
10.8. 次のステップ
これで、通常のオーバークラウドの操作を続行できるようになりました。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.