第7章 ML2 networking-ansible
本項では、OpenStack Networking (neutron) の networking-ansible ML2 ドライバー、OpenStack Bare Metal (ironic) との統合、およびオーバークラウドでこのドライバーの有効化および設定を行う手順について説明します。
7.1. Modular Layer 2 (ML2) networking-ansible リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking (neutron) に含まれる networking-ansible は、Ansible Engine Networking を使用してネットワークスイッチを管理する ML2 ドライバーです。また、このドライバーは、OpenStack Bare Metal (ironic) と統合して、ベアメタルゲスト用にスイッチポート上の VLAN 設定も行います。つまり、オーバークラウドのデプロイメントプロセスがトリガーとなり、networking-ansible ドライバーが、VLAN neutron ネットワークを使用するベアメタルゲストおよびそれに対応する物理スイッチを設定します。
現在の networking-ansible ドライバーには、以下の機能が備わっています。
- OpenStack でネットワークを作成する際に、スイッチに VLAN を定義する
- OpenStack でポートを作成または更新する際に、スイッチ上のアクセスポートに VLAN を割り当てる
- OpenStack でポートを削除する際に、スイッチ上のアクセスポートから VLAN を削除する
7.2. networking-ansible のネットワーク要件 リンクのコピーリンクがクリップボードにコピーされました!
以下の一覧で、networking-ansible 機能を有効にするためのネットワーク要件の概要を説明します。
-
Ansible Network Automation 対応のネットワークスイッチ。現在、Red Hat では Juniper Networks (
Junos) スイッチの使用のみをサポートしています。 ネットワークスイッチには、Ansible Network Automation がデバイスと対話できるようにするため、SSH ユーザーも必要です。このユーザーには、スイッチでの特定の権限が必要です。
- アクセスモード
- VLAN のポートへの割り当て
- VLAN の作成
セキュリティー上の理由から、SSH ユーザーにはスイッチへの管理者アクセス権限を付与しないでください。
-
VLAN を手動で管理する場合、スイッチが使用する VLAN を準備します。そのためには、それぞれのスイッチポートの VLAN を作成します。この要件は、networking-ansible 機能を有効にする際の
manage_vlansオプションに基づいています。 - ベアメタルゲスト用に予約済みのネットワークスイッチポートは、初めに、イントロスペクション専用のネットワークに接続するよう設定する必要があります。これ以外では、これらのポートに追加設定は必要ありません。
7.3. networking-ansible 用の Openstack Bare Metal (ironic) の要件 リンクのコピーリンクがクリップボードにコピーされました!
networking-ansible ドライバーは、Openstack Bare Metal (ironic) サービスと統合します。正常に統合するためには、以下の推奨事項に従ってオーバークラウドに ironic サービスをデプロイします。
オーバークラウドには、プロビジョニングネットワークが必要です。以下のいずれかのオプションを使用します。
- Ironic サービス用のブリッジネットワーク。
- Ironic サービス用のカスタムコンポーザブルネットワーク。
プロビジョニングネットワークのその他の設定例については、「3章Bare Metal サービスを有効にしたオーバークラウドのデプロイ」を参照してください。
オーバークラウドには、プロビジョニングプロセスの後に使用するベアメタルシステム用のテナントネットワークが必要です。本ガイドの例では、
br-baremetalという名前のブリッジにマッピングされた、デフォルトのbaremetalネットワークを使用します。このネットワークには、VLAN ID の範囲も必要です。以下の Heat パラメーターセットは、本ガイドの例に合わせてこれらの値を設定します。parameter_defaults: NeutronNetworkVLANRanges: baremetal:1200:1299 NeutronFlatNetworks: datacentre,baremetal NeutronBridgeMappings: datacentre:br-ex,baremetal:br-baremetal
parameter_defaults: NeutronNetworkVLANRanges: baremetal:1200:1299 NeutronFlatNetworks: datacentre,baremetal NeutronBridgeMappings: datacentre:br-ex,baremetal:br-baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenStack Bare Metal (ironic) のデプロイについての詳しい情報は、「3章Bare Metal サービスを有効にしたオーバークラウドのデプロイ」を参照してください。
7.4. networking-ansible ML2 機能の有効化 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、オーバークラウドで networking-ansible ML2 ドライバーを有効にする方法を説明します。この設定では、デプロイメントに 2 つの環境ファイルを追加する必要があります。
/usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ansible.yaml-
このファイルは、
networking-ansibleドライバーを有効にし、ネットワーク種別をvlanに設定します。このファイルは、コア Heat テンプレートコレクションにすでに存在します。 /home/stack/templates/ml2-ansible-hosts.yaml- このファイルには、スイッチの詳細情報が含まれます。このファイルは手動で作成します。
手順
/home/stack/templates/ml2-ansible-hosts.yamlを作成し、以下の初期コンテンツを追加します。parameter_defaults: ML2HostConfigs:
parameter_defaults: ML2HostConfigs:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 環境内の各スイッチ用に、
ML2HostConfigsパラメーターにdict定義を追加します。それぞれのdictキーはスイッチの名前で、OpenStack Networking (neutron) ML2 設定の特定のansible:[switchname]セクションを定義します。各スイッチのdict値には、スイッチの詳細情報が含まれます。たとえば、スイッチを 3 つ設定するには、ML2HostConfigsパラメーターにスイッチキーを 3 つ追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow それぞれのスイッチの
dictに、以下のキー/値のペアを含めます。ansible_network_os-
(必須) スイッチのオペレーティングシステム。現在、Red Hat では
Junosのみをサポートしています。 ansible_host- (必須) スイッチの IP またはホスト名
ansible_user- (必須) Ansible がスイッチにアクセスする際に使用するユーザー
ansible_ssh_pass- (必須) Ansible がスイッチにアクセスするために使用する SSH パスワード
mac-
ネットワークデバイスのシャーシ MAC ID。これを使用して、Link Layer Discovery Protocol (LLDP) MAC アドレス値を、
ML2HostConfigs設定で定義されたスイッチ名にマッピングします。 manage_vlans-
OpenStack Networking (neutron) が物理デバイス上の VLAN の作成と削除を制御するかどうかを定義するブール型変数。この機能によって、スイッチは各 Neutron ネットワークに対応する ID を持つ VLAN を作成および削除します。スイッチにこれらの VLAN が事前定義されていて、Neutron でスイッチに VLAN を作成したり削除したりする必要がない場合は、このパラメーターを
falseに設定します。デフォルト値はtrueです。
以下の例は、全
ML2HostConfigsパラメーターで、これらの値を対応するキーにマッピングする方法を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
/home/stack/templates/ml2-ansible-hosts.yamlファイルを保存します。 オーバークラウドのデプロイメントコマンドの実行時に、
-eオプション指定して/usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ansible.yamlと/home/stack/templates/ml2-ansible-hosts.yamlファイルを追加します。openstack overcloud deploy --templates \ ...
$ openstack overcloud deploy --templates \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ansible.yaml \ -e /home/stack/templates/ml2-ansible-hosts.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
director は、neutron_api コンテナーの OpenStack Networking (neutron) API の一部としてドライバーを有効にします。
7.5. networking-ansible 用ネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning および networking-ansible ドライバーを有効にしてオーバークラウドをデプロイしたら、ベアメタルノード用に以下のネットワークを作成します。
- プロビジョニングネットワーク
- ベアメタルシステムは、このネットワークを初期作成に使用します。
- テナントネットワーク
- ベアメタルシステムは、プロビジョニング後にこのネットワークに切り替え、このネットワークを内部通信に使用します。
手順
- プロビジョニングネットワークおよびサブネットを作成します。この操作は、使用しているプロビジョニングネットワークの種別により異なります。プロビジョニングネットワークの設定については、「4章デプロイ後の Bare Metal サービスの設定」を参照してください。
テナントネットワークおよびサブネットを作成します。
openstack network create --provider-network-type vlan --provider-physical-network baremetal tenant-net openstack subnet create --network tenant-net --subnet-range 192.168.3.0/24 --allocation-pool start=192.168.3.10,end=192.168.3.20 tenant-subnet
$ openstack network create --provider-network-type vlan --provider-physical-network baremetal tenant-net $ openstack subnet create --network tenant-net --subnet-range 192.168.3.0/24 --allocation-pool start=192.168.3.10,end=192.168.3.20 tenant-subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow networking-ansibleが機能するように、必ず--provider-network-typeオプションをvlanに設定してください。
7.6. ベアメタルゲスト用のポート設定 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルゲストには、スイッチに接続するためのポート情報が必要です。そのためには、OpenStack Networking (neutron) ポート設定を定義します。お使いのオーバークラウドにベアメタルイントロスペクション機能がない場合には、この手法を使用します。
手順
ベアメタルノードのポートを作成します。以下のコマンド例を、ポート作成のベースとして使用します。
openstack baremetal port create [NODE NIC MAC] --node [NODE UUID] \ --local-link-connection port_id=[SWICH PORT ID] \ --local-link-connection switch_info=[SWITCH NAME] \ --local-link-connection switch_id=[SWITCH MAC]$ openstack baremetal port create [NODE NIC MAC] --node [NODE UUID] \ --local-link-connection port_id=[SWICH PORT ID] \ --local-link-connection switch_info=[SWITCH NAME] \ --local-link-connection switch_id=[SWITCH MAC]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の大かっこ内の値は、実際の環境の情報に置き換えてください。
[NODE NIC MAC]- スイッチに接続された NIC の MAC アドレス。
--node [NODE UUID]- 新しいポートを使用するノードの UUID
--local-link-connection port_id=[SWITCH PORT ID]- ベアメタルノードに接続するスイッチ上のポート ID。
--local-link-connection switch_info=[SWITCH NAME]-
ベアメタルノードに接続するスイッチの名前。スイッチ名は、
ML2HostConfigsパラメーターで定義した各スイッチ名と一致していなければなりません。 --local-link-connection switch_id=[SWITCH MAC]-
スイッチの MAC アドレス。この値は、
ML2HostConfigsパラメーターのスイッチ設定の各mac値と一致していなければなりません。これは、switch_infoの使用に対する代替オプションです。
7.7. networking-ansible ML2 機能のテスト リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルノードの networking-ansible 設定が完了したら、動作を確かめるために機能をテストします。これを行うには、ベアメタルに関する負荷を作成する必要があります。
前提条件
- OpenStack Baremetal (ironic) サービスが設定されたオーバークラウド
-
有効な
networking-ansibleML2 ドライバー -
スイッチのアクセス情報が含まれる
ML2HostConfigsパラメーター 登録済みのベアメタルノード
- スイッチ上のノード接続に使用する各ベアメタルポートの設定
- 初期プロビジョニング用に OpenStack Networking (neutron) で定義された VLAN ベースのプロビジョニングネットワーク
- 内部通信用に OpenStack Networking (neutron) で定義された VLAN ベースのテナントネットワーク
手順
ベアメタルシステムを作成します。
openstack server create --flavor baremetal --image overcloud-full --key default --network tenant-net test1
openstack server create --flavor baremetal --image overcloud-full --key default --network tenant-net test1Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドは、まずプロビジョニングネットワークにベアメタルシステムを作成します。作成が完了すると、
networking-ansibleドライバーによってスイッチ上のポート設定が変更され、ベアメタルシステムがテナントネットワークを使用するようになります。