puppet-network, 管理红帽/fedora传统网络配置的Puppet 模块

分享于 

16分钟阅读

GitHub

  繁體 雙語
Puppet module to manage Red Hat/Fedora traditional network configuration.
  • 源代码名称:puppet-network
  • 源代码网址:http://www.github.com/razorsedge/puppet-network
  • puppet-network源代码文档
  • puppet-network源代码下载
  • Git URL:
    git://www.github.com/razorsedge/puppet-network.git
    Git Clone代码到本地:
    git clone http://www.github.com/razorsedge/puppet-network
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/razorsedge/puppet-network
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Puppet 网络模块

    主分支 Build Status 开发分支 Build Status

    简介

    这里模块管理红帽/fedora传统网络配置。

    它允许 static。dhcp和配置正常和绑定的接口以及网桥和 vlan。 在接口上以及别名范围内都支持别名。 它可以配置 static 路由。 它可以根据每个接口配置 MTU。DHCP_HOSTNAME。ETHTOOL_OPTS和 BONDING_OPTS。

    它可以配置以下文件:

    • /etc/sysconfig/network
    • /etc/sysconfig/networking-scripts/route-*
    • /etc/sysconfig/networking-scripts/ifcfg-*

    类和定义文档可以通过puppetdoc获得。

    示例

    请注意,下面的示例不描述每个类支持的所有参数或者定义。

    全局网络设置:

    
    class { 'network::global':
    
    
     gateway => '1.2.3.1',
    
    
    }
    
    
    
    

    全局网络设置( IPv6已经启用):

    
    class { 'network::global':
    
    
     ipv6gateway => '123:4567:89ab:cdef:123:4567:89ab:1',
    
    
     ipv6networking => true,
    
    
    }
    
    
    
    

    使用IPv6的可选默认设备启用IPv6的全局网络设置:

    
    class { 'network::global':
    
    
     ipv6gateway => '123:4567:89ab:cdef:123:4567:89ab:1',
    
    
     ipv6networking => true,
    
    
     ipv6defaultdev => 'eth1',
    
    
    }
    
    
    
    

    正常接口- 无 IP:

    
    network::if { 'eth0':
    
    
     ensure => 'up',
    
    
    }
    
    
    
    

    正常接口- static IPv4 ( 最小限度):

    
    network::if::static { 'eth0':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.248',
    
    
     netmask => '255.255.255.128',
    
    
    }
    
    
    
    

    正常接口- static IPv4 (。ifcfg文件中没有HWADDR的最小值):

    
    network::if::static { 'eth0':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.248',
    
    
     netmask => '255.255.255.128',
    
    
     manage_hwaddr => false,
    
    
    }
    
    
    
    

    正常接口- static IPv4:

    
    network::if::static { 'eth1':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.4',
    
    
     netmask => '255.255.255.0',
    
    
     gateway => '1.2.3.1',
    
    
     macaddress => 'fe:fe:fe:aa:aa:aa',
    
    
     ipv6init => true,
    
    
     ipv6address => '123:4567:89ab:cdef:123:4567:89ab:cdef/64',
    
    
     ipv6gateway => '123:4567:89ab:cdef:123:4567:89ab:1',
    
    
     mtu => '9000',
    
    
     ethtool_opts => 'autoneg off speed 1000 duplex full',
    
    
    }
    
    
    
    

    普通接口- dhcp ( 最小限度):

    
    network::if::dynamic { 'eth2':
    
    
     ensure => 'up',
    
    
    }
    
    
    
    

    普通接口- dhcp (。ifcfg文件中没有HWADDR的最小值):

    
    network::if::dynamic { 'eth2':
    
    
     ensure => 'up',
    
    
     manage_hwaddr => false,
    
    
    }
    
    
    
    

    正常接口- dhcp:

    
    network::if::dynamic { 'eth3':
    
    
     ensure => 'up',
    
    
     macaddress => 'fe:fe:fe:ae:ae:ae',
    
    
     mtu => '1500',
    
    
     dhcp_hostname => $::hostname,
    
    
     ethtool_opts => 'autoneg off speed 100 duplex full',
    
    
    }
    
    
    
    

    正常接口- BOOTP ( 最小限度):

    
    network::if::dynamic { 'eth2':
    
    
     ensure => 'up',
    
    
     macaddress => 'fe:fe:fe:fe:fe:fe',
    
    
     bootproto => 'bootp',
    
    
    }
    
    
    
    

    普通接口- 桥接(。也可能需要定义相应的网络:: bridge:: * ):

    
    network::if::bridge { 'eth0':
    
    
     ensure => 'up',
    
    
     bridge => 'br0'
    
    
    }
    
    
    
    

    正常接口- 混杂:

    
    network::if::promisc { 'eth1':
    
    
     ensure => 'up',
    
    
    }
    
    
    
    

    别名接口 IPv4:

    
    network::alias { 'eth0:1':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.5',
    
    
     netmask => '255.255.255.0',
    
    
    }
    
    
    
    

    别名接口 IPv4 ( 允许非根用户管理):

    
    network::alias { 'em2:1':
    
    
     ensure => 'up',
    
    
     ipaddress => '10.22.33.45',
    
    
     netmask => '255.255.254.0',
    
    
     userctl => true,
    
    
    }
    
    
    
    

    别名接口 IPv4 ( 范围):

    
    network::alias::range { 'eth1':
    
    
     ensure => 'up',
    
    
     ipaddress_start => '1.2.3.5',
    
    
     ipaddress_end => '1.2.3.20',
    
    
     clonenum_start => '0',
    
    
     noaliasrouting => true,
    
    
    }
    
    
    
    

    绑定主接口- 无 IP:

    
    network::bond { 'bond0':
    
    
     ensure => 'up',
    
    
     bonding_opts => 'mode=802.3ad lacp_rate=fast miimon=100',
    
    
    }
    
    
    
    

    绑定主接口- static:

    
    network::bond::static { 'bond0':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.5',
    
    
     netmask => '255.255.255.0',
    
    
     gateway => '1.2.3.1',
    
    
     ipv6init => true,
    
    
     ipv6address => '123:4567:89ab:cdef:123:4567:89ab:cdef',
    
    
     ipv6gateway => '123:4567:89ab:cdef:123:4567:89ab:1',
    
    
     mtu => '9000',
    
    
     bonding_opts => 'mode=active-backup miimon=100',
    
    
    }
    
    
    
    

    绑定主接口- dhcp:

    
    network::bond::dynamic { 'bond2':
    
    
     ensure => 'up',
    
    
     mtu => '8000',
    
    
     bonding_opts => 'mode=active-backup arp_interval=60 arp_ip_target=192.168.1.254',
    
    
    }
    
    
    
    

    绑定主接口- 桥接(。也可能需要定义相应的网络:: bridge:: * ):

    
    network::bond::bridge { 'bond2':
    
    
     ensure => 'up',
    
    
     bridge => 'br3',
    
    
     bonding_opts => 'mode=802.3ad lacp_rate=fast miimon=100',
    
    
    }
    
    
    
    

    绑定从接口:

    
    network::bond::slave { 'eth1':
    
    
     macaddress => $macaddress_eth1,
    
    
     ethtool_opts => 'autoneg off speed 1000 duplex full',
    
    
     master => 'bond0',
    
    
    }
    
    
    
    

    桥接接口- 无 IP:

    
    network::bridge { 'br0':
    
    
     ensure => 'up',
    
    
     stp => true,
    
    
     delay => '0',
    
    
     bridging_opts => 'priority=65535',
    
    
    }
    
    
    
    

    桥接接口- static:

    
    network::bridge::static { 'br2':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.8',
    
    
     netmask => '255.255.0.0',
    
    
     stp => true,
    
    
     delay => '0',
    
    
     ipv6init => true,
    
    
     ipv6address => '123:4567:89ab:cdef:123:4567:89ab:cdef',
    
    
     ipv6gateway => '123:4567:89ab:cdef:123:4567:89ab:1',
    
    
     bridging_opts => 'priority=65535',
    
    
    }
    
    
    
    

    桥接接口- dhcp ( 最小限度):

    
    network::bridge::dynamic { 'br3':
    
    
     ensure => 'up',
    
    
    }
    
    
    
    

    static 接口路由:

    
    network::route { 'eth0':
    
    
     ipaddress => [ '192.168.2.0', '10.0.0.0', ],
    
    
     netmask => [ '255.255.255.0', '255.0.0.0', ],
    
    
     gateway => [ '192.168.1.1', '10.0.0.1', ],
    
    
    }
    
    
    
    

    static 接口路由( 主机路由):

    
    network::route { 'eno2':
    
    
     ipaddress => [ '192.168.45.32', ],
    
    
     netmask => [ '255.255.255.255', ], # this is the important part
    
    
     gateway => [ '192.168.100.1', ],
    
    
    }
    
    
    
    

    正常接口- VLAN - 无 IP:

    
    class { 'network::global':
    
    
     vlan => 'yes',
    
    
    }
    
    
    
    network::if { 'eth0.330':
    
    
     ensure => 'up',
    
    
    }
    
    
    
    

    正常接口- VLAN - static IPv4:

    
    class { 'network::global':
    
    
     vlan => 'yes',
    
    
    }
    
    
    
    network::if::static { 'eth0.330':
    
    
     ensure => 'up',
    
    
     ipaddress => '10.2.3.248',
    
    
     netmask => '255.255.255.0',
    
    
    }
    
    
    
    

    混杂接口:要将 static 或者动态接口设置为混杂模式( 仅限 RedHat ),请添加: promisc => true

    刷新IP地址:

    RHEL7上的网络脚本不会刷新IP地址,因此最终会在给网络服务发送消息之前,在给定的接口上对它的进行多次处理,从而通过。

    
    network::if::static { 'eth0':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.4',
    
    
     netmask => '255.255.255.0',
    
    
     flush => true,
    
    
    }
    
    
    
    

    重新启动网络:

    默认情况下,所有更改都通知网络服务,从而触发整个网络配置的重新启动。 在某些设置中可能不需要这一点,可以通过将 restart 参数作为 false 传递来禁用它:

    
    network::if::static { 'eth0':
    
    
     ensure => 'up',
    
    
     ipaddress => '1.2.3.4',
    
    
     netmask => '255.255.255.0',
    
    
     restart => false,
    
    
    }
    
    
    
    

    层次

    通过在代码中包括Hiera类,可以为所有定义启用层次结构:

    
    include network::hiera
    
    
    
    

    如果启用这里选项,则将应用层次结构和代码中的配置。

    例如要通过分层结构配置 network::alias:

    
    network::alias:
    
    
     'eth0:1':
    
    
     ensure: up
    
    
     ipaddress: 1.2.3.4
    
    
     netmask: 255.255.255.0
    
    
    
    

    对于任何次要双冒号,层次命名替换下划线,换句话说,在层次结构中将 network::bond::static 指定为 network::bond_static:

    
    network::bond_static:
    
    
     bond0:
    
    
     ensure: up
    
    
     ipaddress: 1.2.3.4
    
    
     netmask: 255.255.255.0
    
    
     bonding_opts: 'mode=1 miimon=1000'
    
    
    
    

    注释

    • 在 Puppet 2.7和更高版本下运行。
    • 仅适用于 redhat ish系统。
    • 读取/usr/share/doc/initscripts-*/sysconfig.txt 以获取基础详细信息。
    • 读取/usr/share/doc/kernel-doc-*/Documentation/networking/bonding.txt 以获取基础详细信息。
    • 读取/etc/sysconfig/network-scripts/ifup-aliases 以获取基础详细信息。
    • 只在 CentOS 5.5和 CentOS 6.3上测试。
    • 有一种假设是,别名接口永远不会使用 DHCP。
    • 绑定接口未知的BOOTP支持。 因此这里模块中不支持BOOTP键。
    • 假设创建了一个同时创建从属 interface(s)的键。
    • 假设创建一个同时创建父接口的别名。
    • network::route 要求引用的设备也通过 network::if 或者 network::bond 来定义。
    • 要使vlan正常工作,Class['network::global'] 必须将参数 vlan 设置为 yes
    • 要启用 IPv6,必须将 ipv6networking 中的两个设置为 true,而将 ipv6init

    问题

    • 设置 ETHTOOL_OPTS。MTU或者 BONDING_OPTS,然后取消设置将不会将运行配置还原为默认值。
    • 对任何配置的更改默认会导致"服务网络重新启动"。 这可能导致主机的网络inaccessability如果网络配置不正确。 有关如何禁用这里行为的示例,请参见。
    • 在创建主接口后修改或者创建从属接口将不会更改运行的配置。
    • 目前尚不支持删除接口。

    待办事项

    • 支持/etc/sysconfig/network-scripts/rule- <接口名称>
    • 扩展对IPv6的支持。
    • 支持多个以太网链路。
    • VLAN支持( 它应该工作( TM )的测试。

    有关更多项,请参见 TODO.md。

    拒绝警告

    定义 network::global 将被该模块版本 3.0.0中的paramterized类替换。 请注意,你的清单可能需要更改以考虑新语法。

    这是:

    
    network::global { 'default':
    
    
     # blah
    
    
    }
    
    
    
    

    将会变成这样:

    
    class { 'network::global':
    
    
     # blah
    
    
    }
    
    
    
    

    定义 network::if::aliasnetwork::bond::alias 将在本模块的3.0.0版本中合并为 network::alias。 请注意,你的清单可能需要更改以考虑新语法。

    这是:

    
    network::if::alias { 'eth0:1':
    
    
     # blah
    
    
    }
    
    
    
    

    将会变成这样:

    
    network::alias { 'eth0:1':
    
    
     # blah
    
    
    }
    
    
    
    

    定义 network::route 将参数 address 重命名为该模块版本 3.0.0中的ipaddress。 这是为了与 network 类中所有其他定义的一致性。 请注意,你的清单可能需要更改以考虑新语法。

    这是:

    
    network::route { 'eth0':
    
    
     address => '192.168.17.0',
    
    
     # blah
    
    
    }
    
    
    
    

    将会变成这样:

    
    network::route { 'eth0':
    
    
     ipaddress => '192.168.17.0',
    
    
     # blah
    
    
    }
    
    
    
    

    请查看 CONTRIBUTING.md的捐赠信息。

    许可证

    请查看许可证文件。

    版权

    版权所有( C ) 2011 Mike mike@razorsedge.org

    GitHub上的 razorsedge/puppet网络

    razorsedge/网络在 Puppet Forge


    MAN  模块  network  RED  Puppet  hat  
    相关文章