第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-baremetal
Copy 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-subnet
Copy 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-ansible
ML2 ドライバー -
スイッチのアクセス情報が含まれる
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 test1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドは、まずプロビジョニングネットワークにベアメタルシステムを作成します。作成が完了すると、
networking-ansible
ドライバーによってスイッチ上のポート設定が変更され、ベアメタルシステムがテナントネットワークを使用するようになります。