从 puppet 服务器的文档中我了解到您可以在服务器上配置一个清单目录来存储 puppet 脚本。
然后每个代理联系服务器来更新其配置。服务器上如何选择要运行的脚本?
答案1
木偶清单(通常的术语,而不是脚本)通常被组织成模块每个操作系统组件或服务(例如,,apache
),有一个或多个ntp
postgresql
类包含配置它所需的一切。
Puppet 类包含所有文件、包和服务资源OS 组件的定义。最简单的定义是这样的:
class apache {
package { "httpd":
ensure => installed,
} ->
service { "httpd":
ensure => running,
}
}
代理联系船长,获取其目录(要配置的资源列表),在此过程中,主机分类并且课程列表将是包括在目录中。
最简单的方法是,主要清单(文档)包含节点及其主机名的列表,并包括您想要在其上使用的类:
node foo.example.com {
include apache
}
当代理请求其目录时,主清单会自动编译,如果节点定义与代理的名称匹配,则还会评估其内容以包含这些类。在代码中维护大量节点定义效率不高。
您还可以使用 Hiera 和hiera_include将类列表存储在外部 Hiera 数据文件中,则主清单包含hiera_include('classes')
。这会从 Hiera 中查找值classes
,然后包含所有这些类。
最后,主服务器可以配置一个外部节点分类器(ENC),通常是代理签入时调用的脚本。它被赋予代理的名称,并应输出类列表(以及可选的参数和环境)它可以使用数据库或您组织中拥有的任何类型的信息。