class iptables {
        File {  owner => "root",
                group => "root",
                mode => "0644"
        }

        case $operatingsystem {
                CentOS: { $iptables_packages = ["iptables"] }
                debian: { $iptables_packages = ["iptables"] }
        }

        package { $iptables_packages:
                ensure => installed 
        }

        case $operatingsystem {
                CentOS: {
                file { [ "/etc/sysconfig/iptables" ]:
                  source => "/etc/network/iptables"
                }          
        }

        file { [ "/etc/network/iptables" ]:
                source  => [
                "puppet:///iptables/iptables.$hostname",
                "puppet:///iptables/iptables.$operatingsystem",
                "puppet:///iptables/iptables" 
                ],
                notify => Exec["iptables-$operatingsystem restore"];    
        }

        }
        exec { "iptables-debian restore":
                command     => "/sbin/iptables-restore /etc/network/iptables",
                refreshonly => true
        }

        exec { "iptables-centos restore":
                command     => "/sbin/iptables-restore /etc/sysconfig/iptables",
                refreshonly => true
        } 

}