第6章 例
本章では、Red Hat OpenStack Platform の一部としてベンダー統合の例を説明します。
6.1. Cisco Nexus 1000V
Cisco Nexus 1000V は、仮想マシンへのアクセス用に設計されたネットワークスイッチです。また、VXLAN、ACL、および IGMP スヌーピングを使用した高度なスイッチングおよびセキュリティーも提供します。Cisco Nexus 1000V の ml2 ドライバーは networking-cisco
リポジトリーに含まれています。これは、Neutron サービスと一緒にインストールできます。
オーバークラウドのイメージには Neutron Puppet モジュール(puppet-neutron
)が含まれています。このモジュールには、クラス(neutron::plugins::ml2::cisco::nexus1000v
)が含まれており、Neutron が Cisco Nexus 1000V を使用するように設定します。このクラスは、モジュールの manifests/plugins/ml2/cisco/nexus1000v.pp
マニフェストにあります。クラスはデフォルトパラメーターのセットを使用してオーバーライドでき、neutron_plugin_ml2
ライブラリーを使用して ml2 プラグインが Cisco Nexus 1000V を使用するように設定します。
neutron_plugin_ml2 { 'ml2/extension_drivers' : value => $extension_drivers; 'ml2_cisco_n1kv/n1kv_vsm_ips' : value => $n1kv_vsm_ip; 'ml2_cisco_n1kv/username' : value => $n1kv_vsm_username; 'ml2_cisco_n1kv/password' : value => $n1kv_vsm_password; 'ml2_cisco_n1kv/default_policy_profile' : value => $default_policy_profile; 'ml2_cisco_n1kv/default_vlan_network_profile' : value => $default_vlan_network_profile; 'ml2_cisco_n1kv/default_vxlan_network_profile' : value => $default_vxlan_network_profile; 'ml2_cisco_n1kv/poll_duration' : value => $poll_duration; 'ml2_cisco_n1kv/http_pool_size' : value => $http_pool_size; 'ml2_cisco_n1kv/http_timeout' : value => $http_timeout; 'ml2_cisco_n1kv/sync_interval' : value => $sync_interval; 'ml2_cisco_n1kv/max_vsm_retries' : value => $max_vsm_retries; 'ml2_cisco_n1kv/restrict_policy_profiles' : value => $restrict_policy_profiles; 'ml2_cisco_n1kv/enable_vif_type_n1kv' : value => $enable_vif_type_n1kv; }
director の Heat テンプレートコレクションには、Cisco Nexus 1000V の Hiera データを設定するための環境ファイルと登録済みテンプレートが含まれています。環境ファイルは environments/cisco-n1kv-config.yaml
にあり、以下のデフォルトコンテンツが含まれています。
resource_registry: OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml parameter_defaults: N1000vVSMIP: '192.0.2.50' N1000vMgmtGatewayIP: '192.0.2.1' N1000vVSMDomainID: '100' N1000vVSMHostMgmtIntf: 'br-ex'
resource_registry
は、事前設定に使用するテンプレートとして puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml
を使用するように、コントローラーノードおよび コンピュートノードの事前設定リソース(
)を設定します。OS::TripleO::Controller
ExtraConfigPre および OS::TripleO::ComputeExtraConfigPreparameter_defaults
セクションには、これらのリソースに渡すパラメーターが含まれています。
デプロイメントにこの環境ファイルを含めると、Puppet が設定中に Neutron Puppet モジュールのパラメーターに使用する Hiera データを定義します。
Puppet 設定の実際のアプリケーションの起動は自動的に行われます。Heat テンプレートコレクションには、コントローラーノードおよびコンピュートノードを設定するためのコア Puppet マニフェストのセットが含まれています。これらのファイルには、Cisco Nexus 1000V Hiera データが設定されているかどうかを検出するロジックが含まれています。その場合(デプロイメントに cisco-n1kv.yaml
を含む)、マニフェストには neutron::plugins::ml2::cisco::nexus1000v
クラスと Cisco Nexus 1000V の VEM および VSM エージェントが含まれます。
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') { include neutron::plugins::ml2::cisco::nexus1000v class { 'neutron::agents::n1kv_vem': n1kv_source => hiera('n1kv_vem_source', undef), n1kv_version => hiera('n1kv_vem_version', undef), } class { 'n1k_vsm': n1kv_source => hiera('n1kv_vsm_source', undef), n1kv_version => hiera('n1kv_vsm_version', undef), } }
これは、オーバークラウドが Cisco Nexus 1000V を使用するように設定するには、いくつかのステップのみが必要です。
environments/cisco-n1kv-config.yaml
ファイルをローカルの場所にコピーして、編集できるようにします。$ cp /usr/share/openstack-tripleo-heat-templates/environments/cisco-n1kv-config.yaml ~/templates/.
cisco-n1kv-config.yaml
ファイルを編集します。-
resource_registery
セクションを変更してcisco-n1kv.yaml
を参照の絶対パスを使用します。 parameter_defaults
セクションを変更して、Cisco Nexus 1000V パラメーターを追加します。詳細はcisco-n1kv.yaml
を参照してください。以下に例を示します。
resource_registry: OS::TripleO::ControllerExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml parameter_defaults: N1000vVSMIP: '192.0.2.50' N1000vMgmtGatewayIP: '192.0.2.1' N1000vVSMDomainID: '100' N1000vVSMHostMgmtIntf: 'br-ex' N1000vVSMUser: admin N1000vVSMPassword: p@55w0rd!
-
デプロイメントに
cisco-n1kv-config.yaml
ファイルを含めます。$ openstack overcloud deploy --templates -e ~/templates/cisco-n1kv-config.yaml
Cisco Nexus 1000V 設定をオーバークラウドの Hiera データの一部として定義します。その後、オーバークラウドはこの Hieradata を使用して、コアの設定中に Neutron の Nexus 1000V ml2 ドライバーを設定します。
以下の例で、director が認定済みベンダーのネットワークコンポーネントをオーバークラウドの Neutron サービスと統合する方法を実証します。