人偶 class 与 class dsdfsfd {} 和 class { 'dsdfsfd' }

puppet class with class dsdfsfd {} and class { 'dsdfsfd' }

我希望这是一个非常简单的问题,我正在使用 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': } 之间有什么不同,或者是否需要一个接一个地来?

提前致谢

符号顺序无关紧要。

class { 'iptables': }

只是另一种方式或写作

include iptables

后者通常是首选。

请查看有关 include 函数的说明。

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

例如 1:

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

例如2:

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

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

例如single_node.pp 清单:

include node1
include node2

如果 some_class 是由 class{ 'some_class': } 声明的,则会产生冲突,清单将无法编译。另一方面,使用 include some_class,清单将编译,没有任何 "already defined" 错误。

在我看来,使用 include 超出了推荐范围。

补充阅读require vs include vs class