返回介绍

puppet-vswitch 模块

发布于 2025-02-18 00:20:48 字数 2623 浏览 0 评论 0 收藏 0

Open vSwitch(OVS) 是一个高质量的、多层虚拟交换机,使用开源 Apache2.0 许可协议。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议,Open vSwitch 支持多种 linux 虚拟化技术,包括 Xen/XenServer, KVM 和 irtualBox。

puppet-vswitch 项目是由 OpenStack 社区维护的模块,用于配置和管理 Openvswitch。

puppet-vswitch 项目地址: https://github.com/openstack/puppet-vswitch

在 OVS 中,有三个非常重要的基本概念:

  • Bridge: 表示一个以太网交换机,其功能是根据流规则,把从端口收到的数据包转发到一个或多个端口
  • Port: 收发数据包的单元,每个 Port 都属于一个特定的 bridge
  • Interface: 连接到 Port 的网络接口设备,可以是物理网卡,也可以是虚拟网卡

1.先睹为快

不想看下面大段的代码说明,已经跃跃欲试了?

OK,我们开始吧!

打开虚拟机终端并输入以下命令:

$ puppet apply -e 'class {'vswitch': provider => 'ovs'}'

等待命令执行完成,Puppet 完成了 Openvswitch 安装并启动了 ovs 服务。

2.代码讲解

2.1 class vswitch

class vswitch 的逻辑比较简单,使用 include 函数声明了"::vswitch::${provider}"。

class vswitch (
  $provider = $vswitch::params::provider
) {
  $cls = "::vswitch::${provider}"
  include $cls
}

2.2 class vswitch::ovs

class vswitch::ovs 用于管理 Openvswitch 的软件包和服务,管理服务的代码如下:

    'Redhat': {
      service { 'openvswitch':
        ensure => true,
        enable => true,
        name   => $::vswitch::params::ovs_service_name,
      }
    }

管理 openvswitch 软件包的代码如下,指定安装软件的顺序在启动服务之前:

  package { $::vswitch::params::ovs_package_name:
    ensure => $package_ensure,
    before => Service['openvswitch'],
  }

自定义资源类型 vs_port/vs_bridge/vs_config

puppet-vswitch 模块提供了 vs_port 和 vs_bridge 两个自定义资源类型,分别用于管理 port 和 bridge。

例 1, 使用 vs_bridge 创建一个名为 br-ex 的 ovs bridge:

vs_bridge { 'br-ex':
  ensure => present,
}

例 2,使用 vs_port 将端口 eth1 绑定到 br-ex 上:

vs_port { 'eth1':
  ensure => present,
  bridge => 'br-ex',
}

例 3,使用 vs_config 添加新配置项到 Openvswitch 配置文件中:

vs_config { 'parameter_name':
  ensure => present,
  value => "some_value"
}

vswitch::ovs 指定了资源的执行顺序,vs_bridge 和 vs_port 在 openvswitch 服务之后。

  Service['openvswitch'] -> Vs_port<||>
  Service['openvswitch'] -> Vs_bridge<||>

3.动手练习

  1. 创建一个 vs bridge br-tun, 并且把 eth1 加入到 br-tun

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文