类dsdfsfd {}和类{'dsdfsfd'}的puppet类

时间:2015-01-08 17:23:58

标签: vagrant puppet

非常简单的问题我希望,我正在使用流浪汉,在我的木偶文件中我有以下

class iptables {
    package { "iptables":
        ensure => present
    }

    service { "iptables":
        require => Package["iptables"],
        hasstatus => true,
        status => "true",
        hasrestart => false,
    }

    file { "/etc/sysconfig/iptables":
        owner   => "root",
        group   => "root",
        mode    => 600,
        replace => true,
        ensure  => present,
        source  => "/vagrant/files/iptables.txt",
        require => Package["iptables"],
        notify  => Service["iptables"],
    }
}
class { 'iptables': }

现在我的问题是class iptables {}class { 'iptables': }之间有什么不同,还是需要接下来呢?

提前致谢

2 个答案:

答案 0 :(得分:1)

请查看有关include功能的说明。

使用includeclass创建实例之间存在一个重要区别。 请考虑以下示例:

例如1:

include some_class
include some_class # no additional effect; the class is only declared once

e.g。 2:

class { "some_class": }
class { "some_class": } # this will not compile !

当您尝试重用您的木偶配置时,通过include制作实例变得尤为重要。例如,您已定义node1node2,它们都是类some_class的实例。接下来,您要创建包含两个节点的single_node

E.g。 single_node.pp清单:

include node1
include node2

如果some_class声明了class{ 'some_class': },它将产生冲突并且清单将无法编译。另一方面,使用include some_class,manifest将编译,没有任何“已定义”的错误。

在我看来,使用include比推荐更多。

补充阅读require vs include vs class

答案 1 :(得分:0)

符号的顺序无关紧要。

class { 'iptables': }

只是另一种方式或写作

include iptables

后者通常应该优先考虑。