第 6 章 例子
本章重点介绍了作为 Red Hat OpenStack Platform 的一部分的一些供应商集成示例。
6.1. Cisco Nexus 1000V 复制链接链接已复制到粘贴板!
Cisco Nexus 1000V 是专为虚拟机访问而设计的网络交换机。它还使用 VXLAN、ACL 和 IGMP 侦听提供高级切换和安全性。Cisco Nexus 1000V 的 ml2 驱动程序包含在 networking-cisco 存储库中,您可以与 Neutron 服务一起安装。
Overcloud 镜像包含 Neutron Puppet 模块(puppet-neutron),它包含一个类(neutron::plugins::ml2::cisco:: observe1000v),用于配置 Neutron 以使用 Cisco Nexus 1000V。此类位于模块的 manifests/plugins/ml2/cisco/ observe1000v.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 设置 Controller 和 Compute 节点的预配置资源(OS::TripleO::ControllerExtraConfigPre 和 OS::TripleO::ComputeExtraConfigPre),以使用 puppet/extraconfig/pre_deploy/controller/cisco-n1kv.yaml 作为模板。parameter_defaults 部分包含一些要传递给这些资源的参数。
在部署中包含此环境文件会定义层次结构数据,供 Puppet 在配置期间用于 Neutron Puppet 模块的参数。
启动 Puppet 配置的实际应用是自动的。Heat 模板集合包含一组核心 Puppet 清单,用于配置 Controller 和 Compute 节点。这些文件包含检测是否设置了 Cisco Nexus 1000V Hiera 数据的逻辑。如果(通过在部署中包含 cisco-n1kv.yaml ),清单包括 neutron::plugins::ml2::cisco::HEKETI1000v 类,以及 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),
}
}
这意味着将 Overcloud 配置为使用 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 配置定义为 Overcloud 的 Hiera 数据的一部分。然后 Overcloud 使用此层次结构在核心配置期间配置 Neutron 的 Nexus 1000V ml2 驱动程序。
本例演示了 director 如何将认证供应商中的网络组件与 Overcloud 的 Neutron 服务集成。