第3章 デプロイメント
以下の手順では、Ansible を使用してインスタンス HA を有効にします。Ansible に関する詳しい情報は、Ansible のドキュメントを参照してください。
3.1. 必要な Ansible 設定ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
Ansible を使用してインスタンス HA を有効にするには、インベントリーファイル と SSH 引数ファイル が必要です。両ファイルは、オーバークラウドにインスタンス HA を実装するのに必要な Ansible の変数を渡します。
インベントリーファイル
インベントリーファイルには、Ansible Playbook 用の異なるターゲットホストが記載されます。このファイルは 2 つのセクションに分かれ、最初のセクションには各ノード (名前) と共に、Ansible が各 Playbook で使用する必要のあるホスト名、ユーザー名、秘密鍵ファイルのパスがリストされます。以下に例を示します。
overcloud-controller-0 ansible_host=overcloud-controller-0 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa
overcloud-controller-0 ansible_host=overcloud-controller-0 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa
2 番目のセクションには、次の見出し (または ノードの種別) の下に各ノードがリストされます: compute、 undercloud、overcloud、controller
/home/stack/hosts という名前のインベントリーファイルを作成します。以下の例には、このファイルに必要な構文を示しています。
アンダークラウドとオーバークラウドの両方で全ホストの完全なインベントリーを生成するには、以下のコマンドを実行します。
stack@director $ tripleo-ansible-inventory --list
stack@director $ tripleo-ansible-inventory --list
このコマンドにより、詳細な最新のインベントリーが JSON 形式で生成されます。詳しい情報は、「Running Ansible Automation」を参照してください。
SSH 引数ファイル
SSH 引数ファイルは、Ansible が各ターゲットホストで Playbook を実行するのに必要な認証情報と認証設定を渡します。
以下のコマンドを (/home/stack から) 実行して、SSH 引数ファイルを生成します。
stack@director $ cat /home/stack/.ssh/id_rsa.pub >> /home/stack/.ssh/authorized_keys
stack@director $ echo -e "Host undercloud\n Hostname 127.0.0.1\n IdentityFile /home/stack/.ssh/id_rsa\n User stack\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n" > ssh.config.ansible
/home/stack/stackrc
stack@director $ openstack server list -c Name -c Networks | awk '/ctlplane/ {print $2, $4}' | sed s/ctlplane=//g | while read node; do node_name=$(echo $node | cut -f 1 -d " "); node_ip=$(echo $node | cut -f 2 -d " "); echo -e "Host $node_name\n Hostname $node_ip\n IdentityFile /home/stack/.ssh/id_rsa\n User heat-admin\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n"; done >> ssh.config.ansible
stack@director $ cat /home/stack/.ssh/id_rsa.pub >> /home/stack/.ssh/authorized_keys
stack@director $ echo -e "Host undercloud\n Hostname 127.0.0.1\n IdentityFile /home/stack/.ssh/id_rsa\n User stack\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n" > ssh.config.ansible
/home/stack/stackrc
stack@director $ openstack server list -c Name -c Networks | awk '/ctlplane/ {print $2, $4}' | sed s/ctlplane=//g | while read node; do node_name=$(echo $node | cut -f 1 -d " "); node_ip=$(echo $node | cut -f 2 -d " "); echo -e "Host $node_name\n Hostname $node_ip\n IdentityFile /home/stack/.ssh/id_rsa\n User heat-admin\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n"; done >> ssh.config.ansible
上記のコマンドを実行すると、/home/stack/ssh.config.ansible という名前の SSH 引数ファイルが生成されます。このファイルには、各オーバークラウドノードのホスト固有の接続オプションが含まれます。以下に例を示します。
3.2. アンダークラウドの準備 リンクのコピーリンクがクリップボードにコピーされました!
「必要な Ansible 設定ファイルの作成」の手順に従って インベントリーファイル と SSH 引数ファイル を作成した後には、インスタンス HA 用のオーバークラウドを準備することができます。
-
アンダークラウドに
stackユーザーとしてログインします。 この TAR アーカイブ を
/home/stack/にダウンロードします。これには、Playbook、ロール、および Ansible を使用してインスタンス HA を有効化するのに必要なその他のユーティリティーが格納されています。注記ここで提供される TAR アーカイブ は、アップストリームの GIT リポジトリーをテストおよび修正したバージョンです。このリポジトリーをクローンするには、以下のコマンドを実行します。
stack@director $ git clone git://github.com/redhat-openstack/tripleo-quickstart-utils
stack@director $ git clone git://github.com/redhat-openstack/tripleo-quickstart-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow このリポジトリーは、通知なしに更新される可能性があるので、この手順で利用可能なアーカイブとは異なる場合があります。
TAR アーカイブを展開します。
stack@director $ tar -xvf ansible-instanceha.tar
stack@director $ tar -xvf ansible-instanceha.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow /home/stack/ansible.cfgを作成して、以下の内容を記述します。[defaults] roles_path = /home/stack/ansible-instanceha/roles
[defaults] roles_path = /home/stack/ansible-instanceha/rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible.cfg、ホスト (インベントリーファイル) とssh.config.ansible(SSH 引数ファイル) を以下の環境変数にエクスポートします。stack@director $ export ANSIBLE_CONFIG="/home/stack/ansible.cfg" stack@director $ export ANSIBLE_INVENTORY="/home/stack/hosts" stack@director $ export ANSIBLE_SSH_ARGS="-F /home/stack/ssh.config.ansible"
stack@director $ export ANSIBLE_CONFIG="/home/stack/ansible.cfg" stack@director $ export ANSIBLE_INVENTORY="/home/stack/hosts" stack@director $ export ANSIBLE_SSH_ARGS="-F /home/stack/ssh.config.ansible"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オーバークラウドのノード定義テンプレート (デフォルトでは
instackenv.json) が/home/stack/にあることを確認します。ノード定義テンプレートに関する詳しい情報は、「オーバークラウドへのノードの登録」を参照してください。
3.3. インスタンス HA の有効化 リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドが完全に準備できたら、「アンダークラウドの準備」のステップでダウンロードおよび展開した、事前に記述済みの Playbook を実行することができます。これらの Playbook により、STONITH 設定ありまたはなしで、コントローラーおよびコンピュートノードにインスタンス HA を有効化することができます。「コントローラーノードのフェンシング」を参照してください。
コントローラーノードとコンピュートノードの両方でインスタンス HA を有効化して STONITH を設定するには、以下のコマンドを実行します。
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \ -e release="RELEASE"
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \
-e release="RELEASE"
デフォルトでは、Playbook により、instance-ha ソリューションは共有ストレージが有効化された状態でインストールされます。お使いのオーバークラウドで共有ストレージを使用しない場合は、instance_ha_shared_storage=false オプションを使用してください
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \ -e release="RELEASE" -e instance_ha_shared_storage=false
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \
-e release="RELEASE" -e instance_ha_shared_storage=false
インスタンス HA における共有ストレージについての詳しい情報は、「共有ストレージの例外」を参照してください。
コントローラーノードとコンピュートノードの両方で STONITH を設定せずに インスタンス HA を有効化するには、以下のコマンドを実行します。
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \ -e release="RELEASE" -e stonith_devices=”none”
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \
-e release="RELEASE" -e stonith_devices=”none”
インスタンス HA を有効化して STONITH をコンピュートノードのみで設定するには (例: STONITH がコントローラーノードではすでに設定済みの場合など)、以下のコマンドを実行します。
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \ -e release="RELEASE" -e stonith_devices=”computes”
stack@director $ ansible-playbook /home/stack/ansible-instanceha/playbooks/overcloud-instance-ha.yml \
-e release="RELEASE" -e stonith_devices=”computes”