Hi - I've searched around and haven't found anyone who's implemented a type+provider for configuring network interfaces in puppet. Does anyone have such a thing already running that's just not on forge / github? I found some prior art (aside from the old 'interface' type which was deleted in 0.24) but most people seem to use definitions + templates which isn't a good "first class citizen" solution.
I and other puppet hackers around my organization worked up a strawman proposal that we thought would be a reasonable interface and I figured I would float it by the list. Obviously it's a complicated beast but this would be great functionality to have in puppet. I'll update https://projects.puppetlabs.com/issues/3153 with the results of the discussion here and maybe we can get some traction on it. - Eric Sorenson - N37 17.255 W121 55.738 - http://twitter.com/ahpook - ### basic examples networkinterface { "eth0": ensure => enabled, bootproto => dhcp, # required for DHCP/BOOTP, optional for static hwaddr => "00:aa:bb:cc:dd:ee" } networkinterface { "eth0": ensure => "enabled", # sets ONBOOT=true, causes ifup refresh hwaddr => "00:aa:bb:cc:dd:ee" ipaddress => "10.0.0.2", netmask => "255.255.255.0", gateway => "10.0.0.1", } ### vlan example networkinterface { "vlan201": ensure => "enabled", ipaddress => "10.0.0.3", netmask => "255.255.255.0", gateway => "10.0.0.1", vlantag => "201", # 1 through 4096 physicaldev => "eth0", # parent device, need this or hwaddr # not too happy about this, but IMO the yum 'enablerepo' example # shows there is a need to pass arbitrary provider-specific args # i.e. the RH sysvinit provider would turn " " to \n and # drop these into the network-scripts file. # This particular option enables '/dev/vlan201' instead of '/dev/eth0.201' extra_opts => "VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD PEERDNS=NO PEERNTP=NO" } ### bonding example - master interface with two slaves networkinterface { "bond0": ensure => "enabled", ipaddress => "10.0.0.4", netmask => "255.255.255.0", gateway => "10.0.0.1", # rather than support a crapload of attributes like "bond_mode => active_backup", # use the new-style BONDING_OPTS variable extra_opts => "BONDING_OPTS='mode=active-backup arp_interval=60 arp_ip_target=192.168.1.254'" } # slave interfaces for the bond networkinterface { "eth0": ensure => enabled, bond_master => bond0, } networkinterface { "eth1": ensure => enabled, bond_master => bond0, } ### ip aliases # this requires a unique namevar so you couldn't model solaris # or iproute2-style secondary addresses without composite keys networkinterface { "bge0:1": ensure => enabled, ipaddress => "10.0.0.5", netmask => "255.255.255.0", gateway => "10.0.0.1", } -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.