OpenStackとKolla Ansibleを使用したContrailのインストール
ほとんどの Contrail Networking 導入環境では、Contrail コマンドを使用して既存の Contrail クラスターに計算ノードを追加することをお勧めします。「Contrail コマンドを使用して既存の Contrail クラスターに新しいコンピューティング ノードを追加する」を参照してください。
このドキュメントの手順は、Contrail Command GUI を使用していない環境で、YAML ファイルの専門知識を持つネットワーク管理者のみが実行してください。
このトピックの目的は、Kolla Ansible プレイブック contrail-kolla-ansible
を使用して、OpenStack で Contrail Networking をインストールすることです。
Kolla は OpenStack プロジェクトで、OpenStack サービス用のコンテナイメージを構築するためのツールを提供しています。Kolla Ansible では、Kolla イメージをデプロイするための Ansible プレイブックを提供しています。
このプレイブックは contrail-kolla-ansible
、OpenStackコンテナとContrail Networkingコンテナのインストールと連携 contrail-ansible-deployer
して機能します。
Contrail コマンドを使用して Contrail クラスターを導入するには、『Contrail Command および instances.yml を使用した Contrail クラスターのインストール 』を参照してください。
を使用して Kolla コンテナcontrail-kolla-ansible
contrail-ansible-deployer
を導入するには、次の手順に従います。
ベース ホストの設定
CentOSとカーネルバージョンを更新します。サポートされているプラットフォームの一覧については、「 https://www.juniper.net/documentation/en_US/release-independent/contrail/topics/reference/contrail-supported-platforms.pdf」を参照してください。
vRouter は、ホスト カーネルに依存しています 。
ベース・ホストをセットアップするには:
ContrailのダウンロードページからAnsible Deployerインストーラパッケージをダウンロードします。
Ansibleをインストールします。
yum -y install epel-release
yum -y install git ansible-2.7.10
python-pipをインストールします。
yum install -y python-pip
次のコマンドを実行します。
yum -y remove PyYAML python-requests
pip install PyYAML requests
tgz ファイルを解凍します。
- tar xvf contrail-ansible-deployer-19<xx>.<NN>.tgz
instances.yaml はcontrail-ansible-deployer/config/ にあります。
以下のガイドラインを使用して、 instance.yaml ファイルで Contrail と Kolla のパラメーターを設定します。
プロバイダー構成 (
provider_config
) セクションは、Contrail クラスターがホストされるクラウドプロバイダーを参照し、プロバイダーに関連するすべてのパラメーターが含まれています。ベア・メタル・サーバの場合、プロバイダはbms
です。このセクションでは
kolla_globals
、OpenStack サービスについて説明します。可能なkolla_globals
すべての詳細については、「 https://github.com/Juniper/contrail-kolla-ansible/.../globals.yml」を参照してください。追加の Kolla 設定 (
contrail-kolla-ansible
) は として可能ですcontrail_additions
。Kollaに可能なcontrail_additions
すべての詳細については、 https://github.com/Juniper/contrail-kolla-ansible/.../all.yml を参照してください。contrail_configuration
このセクションには、Contrail サービスのパラメーターが含まれています。CONTAINER_REGISTRY
Contrail コンテナのプル元となるレジストリを指定します。独自のコンテナーを構築する場合は、ローカルの Docker レジストリに設定できます。レジストリが指定されていない場合は、Docker ハブからコンテナーをプルしようとします。カスタム レジストリを指定する場合は、 の下に
kolla_globals
contrail_docker_registry
同じレジストリを指定します。CONTRAIL_VERSION
を指定しない場合、デフォルトで「最新」タグになります。に使用できるすべてのパラメータ
contrail_configuration
の詳細については 、https://github.com/tungstenfabric/tf-container-builder/blob/master/containers/base/common.sh を参照してください。instance.yaml ファイルで を指定する必要がありますroles。そうしないと、インストール手順が失敗します。
ホストごとにホスト固有の値がある場合、たとえば、「network_interface」に使用されるインターフェイスの名前がクラスター内のサーバーによって異なる場合は、 マルチノード OpenStack HA および Contrail(マルチインターフェイス)の設定サンプルの設定例を使用してください。
パラメーターの多くは、適切なデフォルト (最初の構成のしくみ) に自動的に導出されます。必要に応じて、変数を明示的に指定して、派生値をオーバーライドできます。コードを確認して、派生ロジックを確認します。
例: instances.yaml
この例は、単一ノード、単一インターフェイス、オールインワンクラスターの最低限の設定です。
provider_config: bms: ssh_pwd: <password> ssh_user: root ntpserver: <IP NTP server> domainsuffix: local instances: bms1: provider: bms ip: <IP BMS> roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: vrouter: openstack: openstack_compute: contrail_configuration: RABBITMQ_NODE_PORT: 5673 AUTH_MODE: keystone KEYSTONE_AUTH_URL_VERSION: /v3 kolla_config: kolla_globals: enable_haproxy: no kolla_passwords: keystone_admin_password: <Keystone admin password>
例: instances.yaml
この例は、単一ノード、単一インターフェイス、オールインワンクラスター向けのより複雑な構成です。
provider_config: bms: ssh_pwd: <password> ssh_user: root ntpserver: <IP NTP server> domainsuffix: local instances: bms1: provider: bms ip: <IP BMS> roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: vrouter: openstack: openstack_compute: global_configuration: CONTAINER_REGISTRY: <Registry FQDN/IP>:<Registry Port> REGISTRY_PRIVATE_INSECURE: True contrail_configuration: CONTRAIL_VERSION: latest CLOUD_ORCHESTRATOR: openstack VROUTER_GATEWAY: <IP gateway> RABBITMQ_NODE_PORT: 5673 PHYSICAL_INTERFACE: <interface name> AUTH_MODE: keystone KEYSTONE_AUTH_URL_VERSION: /v3 kolla_config: kolla_globals: kolla_internal_vip_address: <Internal VIP> contrail_api_interface_address: <Contrail API Addr> enable_haproxy: no kolla_passwords: keystone_admin_password: <Keystone Admin Password>
フォルダーから contrail-ansible-deployer 次のコマンドを実行します。
ansible-playbook -e orchestrator=openstack -i inventory/ playbooks/configure_instances.yml
ansible-playbook -i inventory/ playbooks/install_openstack.yml
ansible-playbook -e orchestrator=openstack -i inventory/ playbooks/install_contrail.yml
Web ブラウザーを開き 、「https://contrail-server-ip:8143 」と入力して Contrail Web UI にアクセスします。
デフォルトのログイン・ユーザー名は adminです。手順 6 で入力したのと同じパスワードを使用します。
マルチノード OpenStack HA および Contrail 向けのマルチインターフェイス設定サンプル
これは、高可用性 OpenStack と Contrail Networking のマルチインターフェイス、マルチノード導入のための設定サンプルです。このサンプルを使用して、システムに固有のパラメーターを構成します。
詳細または最新の更新については、githubのトピック「マルチノードOpenStack HAおよびContrail(マルチインターフェイス)の設定サンプル」を参照してください。
設定サンプル - 複数インターフェイス
provider_config: bms: ssh_pwd: <Pwd> ssh_user: root ntpserver: <NTP Server> domainsuffix: local instances: bms1: provider: bms ip: <BMS1 IP> roles: openstack: bms2: provider: bms ip: <BMS2 IP> roles: openstack: bms3: provider: bms ip: <BMS3 IP> roles: openstack: bms4: provider: bms ip: <BMS4 IP> roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: bms5: provider: bms ip: <BMS5 IP> roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: bms6: provider: bms ip: <BMS6 IP> roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: bms7: provider: bms ip: <BMS7 IP> roles: vrouter: PHYSICAL_INTERFACE: <Interface name> VROUTER_GATEWAY: <Gateway IP> openstack_compute: bms8: provider: bms ip: <BMS8 IP> roles: vrouter: # Add following line for TSN Compute Node TSN_EVPN_MODE: True openstack_compute: contrail_configuration: CLOUD_ORCHESTRATOR: openstack KEYSTONE_AUTH_URL_VERSION: /v3 IPFABRIC_SERVICE_HOST: <Service Host IP> # Add following line for TSN Compute Node TSN_NODES: <TSN NODE IP List> # For EVPN VXLAN TSN ENCAP_PRIORITY: "VXLAN,MPLSoUDP,MPLSoGRE" PHYSICAL_INTERFACE: <Interface name> kolla_config: kolla_globals: kolla_internal_vip_address: <Internal VIP> kolla_external_vip_address: <External VIP> contrail_api_interface_address: <Contrail API IP> kolla_passwords: keystone_admin_password: <Keystone Admin Password>
マルチノード OpenStack HA および Contrail の単一インターフェイス設定サンプル
これは、高可用性、OpenStack、Contrail Networkingのマルチノード、シングルインターフェイス導入用の設定サンプルです。このサンプルを使用して、システムに固有のパラメーターを構成します。
詳細または最近の更新については、githubのトピック「マルチノードOpenStack HAおよびContrail(シングルインターフェイス)の設定例」を参照してください。
設定例 - シングル インターフェイス
provider_config: bms: ssh_pwd: <password> ssh_user: root ntpserver: xx.xx.x.xx domainsuffix: local instances: centos1: provider: bms ip: ip-address roles: openstack: centos2: provider: bms ip: ip-address roles: openstack: centos3: provider: bms ip: ip-address roles: openstack: centos4: provider: bms ip: ip-address roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: centos5: provider: bms ip: ip-address roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: centos6: provider: bms ip: ip-address roles: config_database: config: control: analytics_database: analytics: analytics_alarm: analytics_snmp: webui: centos7: provider: bms ip: ip-address roles: vrouter: openstack_compute: centos8: provider: bms ip: ip-address roles: vrouter: openstack_compute: contrail_configuration: CONTRAIL_VERSION: <contrail_version> CONTROLLER_NODES: ip-addresses separated by comma CLOUD_ORCHESTRATOR: openstack RABBITMQ_NODE_PORT: 5673 VROUTER_GATEWAY: gateway-ip-address PHYSICAL_INTERFACE: eth1 IPFABRIC_SERVICE_IP: ip-address KEYSTONE_AUTH_HOST: ip-address KEYSTONE_AUTH_URL_VERSION: /v3 kolla_config: kolla_globals: kolla_internal_vip_address: ip-address contrail_api_interface_address: ip-address network_interface: "eth1" enable_haproxy: "yes" kolla_passwords: keystone_admin_password: <password>
ご使用の Contrail リリースの正しいcontrail_container_tag
値に置き換え<contrail_version>てください。それぞれのcontrail_container_tag
値は、Contrailレジストリ19XXへのREADMEアクセスに記載されています。
よくあるご質問
このセクションでは、いくつかの一般的なエラー状況を示し、エラー状態を解決する方法に関するガイダンスを提供します。
- ホスト固有のパラメータの使用
- プライベートレジストリからのコンテナにアクセスできません
- エラー: vrouter カーネル モジュールの挿入に失敗しました
- vrouter が OpenStack を指定しない場合の致命的なエラー
- 単一のOpenStackクラスターでのHAProxyと仮想IPの必要性
- kolla_toolboxコンテナを使用した OpenStack コマンドの実行
ホスト固有のパラメータの使用
クラスタ内のサーバによってインターフェイス名が異なるなど、ホスト固有のパラメータを指定する必要がある場合があります。この場合、各ロールの下に個別の名前を指定すると、より具体的な設定が優先されます。
たとえば、ロール "openstack" の下に "network_interface" 設定 (例: "bms1") がない場合、グローバル変数からその設定を取得します。
拡張例については、「 マルチノード OpenStack HA および Contrail の設定例」を参照してください。
プライベートレジストリからのコンテナにアクセスできません
CONTAINER_REGISTRY という名前のプライベート・レジストリーからプルされたコンテナーにアクセスできない状況が発生する場合があります。
解決するには、REGISTRY_PRIVATE_INSECURE が True に設定されていることを確認します。
エラー: vrouter カーネル モジュールの挿入に失敗しました
vrouter モジュールが計算ノードにインストールされず、vrouter コンテナーがエラー状態になり、エラーが Docker ログに表示される状況が発生する場合があります。
[srvr5] ~ # docker logs vrouter_vrouter-kernel-init_1 /bin/cp: cannot create regular file '/host/bin/vif': No such file or directory INFO: Load kernel module for kver=3.10.0 INFO: Modprobing vrouter /opt/contrail/vrouter-kernel-modules/3.10.0-957.11.6.el7.x86_64/vrouter.ko total used free shared buff/cache available Mem: 62G 999M 55G 9.1M 5.9G 60G Swap: 0B 0B 0B total used free shared buff/cache available Mem: 62G 741M 61G 9.1M 923M 61G Swap: 0B 0B 0B insmod: ERROR: could not insert module /opt/contrail/vrouter-kernel-modules/3.10.0-957.11.6.el7.x86_64/vrouter.ko: Unknown symbol in module ERROR: Failed to insert vrouter kernel module
このリリースでは、vrouter モジュールを使用するには、ホストカーネルのバージョンが 3.10.0-957.11.6.el7.x86_64 である必要があります。このカーネルバージョンを取得するには、プロビジョニングを実行する前に、ターゲットノードにカーネルバージョンをインストールします。
yum -y install kernel-3.10.0-957.11.6.el7.x86_64 yum update reboot
vrouter が OpenStack を指定しない場合の致命的なエラー
nova-compute なしで vrouter をプロビジョニングする必要がある場合、致命的なエラーが発生することがあります。
2018-03-21 00:47:16,884 p=16999 u=root | TASK [iscsi : Ensuring config directories exist] ******************** 2018-03-21 00:47:16,959 p=16999 u=root | fatal: [ip-address]: FAILED! => {"msg": "The conditional check 'inventory_hostname in groups['compute'] or inventory_hostname in groups['storage']' failed. The error was: error while evaluating conditional (inventory_hostname in groups['compute'] or inventory_hostname in groups['storage']): Unable to look up a name or access an attribute in template string ({% if inventory_hostname in groups['compute'] or inventory_hostname in groups['storage'] %} True {% else %} False {% endif %}).\nMake sure your variable name does not contain invalid characters like '-': argument of type 'StrictUndefined' is not iterable\n\nThe error appears to have been in '/root/contrail-kolla- ansible/ansible/roles/iscsi/tasks/config.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: Ensuring config directories exist\n ^ here\n"} 2018-03-21 00:47:16,961 p=16999 u=root | to retry, use: --limit @/root/contrail-ansible- deployer/playbooks/install_contrail.retry
vrouter を nova-compute を伴わずにプロビジョニングする必要があるユースケースがあります。したがって、「vrouter」ロールが指定されている場合、「openstack_compute」は自動的に推論されません。この問題を解決するには、"vrouter" と共に "openstack_compute" ロールを明示的に指定する必要があります。
このユースケースの詳細については、バグ #1756133 を参照してください。
単一のOpenStackクラスターでのHAProxyと仮想IPの必要性
デフォルトでは、すべての OpenStack サービスは、config/instances.yaml のセクションの下にあるkolla_globals
変数によって提供される kolla_internal_vip_address/network_interface
IP インターフェイスでリッスンします。ほとんどの場合、これは ctrl-data ネットワークに対応しているため、Horizon でさえ ctrl-data ネットワークでのみ実行されるようになります。Kolla が管理ネットワーク上の Horizon へのアクセスを提供する唯一の方法は、HAProxy とキープアライブを使用することです。キープアライブを有効にするには、VRRP の仮想 IP が必要であり、インターフェイス IP にすることはできません。Kolla 構成パラメーターを使用する場合、キープアライブを有効にせずに HAProxy を有効にする方法はありません。このため、管理()とctrl-data-network(kolla_external_vip_address
kolla_internal_vip_address
)の2つの仮想IPアドレスを指定する必要があります。この設定により、管理ネットワークkolla_external_vip_address
上で Horizon に .
kolla_toolboxコンテナを使用した OpenStack コマンドの実行
OpenStack コンテナが実行されているベースホスト上のディレクトリ/etc/kolla/kolla-toolbox
がマウントされ、kolla_toolbox
コンテナ内から として/var/lib/kolla/config_files
アクセスできます。OpenStack コマンドの実行時に他のファイルが必要な場合 (コマンドopenstack image create
にイメージファイルが必要な場合など) は、関連するファイルをベースホストのディレクトリに/etc/kolla/kolla-toolbox
コピーして、コンテナ内で使用できます。
以下の例は、この方法で OpenStack コマンドを実行する方法を示しています。
# ON BASE HOST OF OPENSTACK CONTROL NODE cd /etc/kolla/kolla-toolbox wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img docker exec -it kolla_toolbox bash # NOW YOU ARE INSIDE THE KOLLA_TOOLBOX CONTAINER (kolla-toolbox)[ansible@server1 /]$ source /var/lib/kolla/config_files/admin-openrc.sh (kolla-toolbox)[ansible@server1 /]$ cd /var/lib/kolla/config_files (kolla-toolbox)[ansible@server1 /var/lib/kolla/config_files]$ openstack image create cirros2 --disk-format qcow2 --public --container-format bare --file cirros-0.4.0-x86_64-disk.img +------------------+------------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------------+ | checksum | 443b7623e27ecf03dc9e01ee93f67afe | | container_format | bare | | created_at | 2018-03-29T21:37:48Z | | disk_format | qcow2 | | file | /v2/images/e672b536-0796-47b3-83a6-df48a5d074be/file | | id | e672b536-0796-47b3-83a6-df48a5d074be | | min_disk | 0 | | min_ram | 0 | | name | cirros2 | | owner | 371bdb766278484bbabf868cf7325d4c | | protected | False | | schema | /v2/schemas/image | | size | 12716032 | | status | active | | tags | | | updated_at | 2018-03-29T21:37:50Z | | virtual_size | None | | visibility | public | +------------------+------------------------------------------------------+ (kolla-toolbox)[ansible@server1 /var/lib/kolla/config_files]$ openstack image list +--------------------------------------+---------+--------+ | ID | Name | Status | +--------------------------------------+---------+--------+ | e672b536-0796-47b3-83a6-df48a5d074be | cirros2 | active | | 57e6620e-796a-40ee-ae6e-ea1daa253b6c | cirros2 | active | +--------------------------------------+---------+--------+