Configuring some virtual IPs.

In order it should:

Should configure arp_ignore and arp_announce on all interfaces.
Should define 3 new network scripts /etc/sysconfig/network-scripts/ifcfg-lo:[0-2].
Should bring up 3 new virtual interfaces.

vip.pp
------
class vip_sysctl {
exec { "reload-sysctl":
command => "/sbin/sysctl -p /etc/sysctl.conf",
refreshonly => true
}

Sysctl { notify => Exec["reload-sysctl"] }

sysctl { "net.ipv4.conf.all.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.eth0.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.eth1.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.all.arp_announce": value => 2 }
sysctl { "net.ipv4.conf.eth0.arp_announce": value => 2 }
sysctl { "net.ipv4.conf.eth1.arp_announce": value => 2 }
}

class vip {
require vip_sysctl

exec { "reload-sysctl":
command => "/sbin/sysctl -p /etc/sysctl.conf",
refreshonly => true
}

Sysctl { notify => Exec["reload-sysctl"] }

sysctl { "net.ipv4.conf.all.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.eth0.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.eth1.arp_ignore": value => 1 }
sysctl { "net.ipv4.conf.all.arp_announce": value => 2 }
sysctl { "net.ipv4.conf.eth0.arp_announce": value => 2 }
sysctl { "net.ipv4.conf.eth1.arp_announce": value => 2 }

define loopback($ip => $title, $ifnum) {
file {"/etc/sysconfig/network-scripts/ifcfg-lo:$ifnum":
ensure => file,
mode => 644,
content => template("ifcfg-vip.erb"),
notify => Exec["bring-up-lo"]
}

exec {"bring-up-lo":
command => "/sbin/ifconfig lo:$ifnum $ip netmask 255.255.255.255 up",
refreshonly => true
}
}

loopback { "192.168.246.50": ifnum => 0 }
loopback { "192.168.246.51": ifnum => 1 }
loopback { "192.168.246.52": ifnum => 2 }
}


ifcfg-vip.erb
-------------
DEVICE=lo:<%= ifnum %>
BOOTPROTO=static
IPADDR=<%= ip %>
NETMASK=255.255.255.255
ONBOOT=yes