基本木偶:用 ENC 编写基础设施配置、风格、方法是什么?

基本木偶:用 ENC 编写基础设施配置、风格、方法是什么?

我对 Puppet 的了解还不足以让我提出这个问题。

我认为我理解特定节点的配置将由一组模块和一些特定于节点的粘合剂组成。从教程和文档来看,特定于节点的资源似乎位于 manifests/site.pp 文件中,在node /nodename/ { }资源中,其中包含相关类的“includes”,以及用于进行特定于节点的配置更改的资源。

现在输入一个外部节点分类器 (ENC),例如 theForeman。

从我对 ENC 文档的阅读来看,我可以node /nodename/ { }在 site.pp 中使用资源,但无法声明任何新资源。基本上不推荐这样做。生成的 YAML 仅包含变量设置。

那么,对于特定于给定节点或主机组的配置(集成所有包含的类的连接),该做什么呢?

您最终会创建一个特定于节点的类吗?您将该类放在哪里,在特定于节点的模块中吗?或者您是否为特定于站点的配置创建了一个包罗万象的模块,其中包含可以分配给特定节点的类?

答案1

对此的一种方法是设计 Puppet – 角色和配置文件基本原则如下:

  • 一个节点包含一个角色,且只能包含一个角色。
  • 角色包括一个或多个配置文件,用于定义服务器的类型
  • 配置文件包含并管理模块以定义逻辑技术堆栈
  • 模块管理资源
  • 模块应该只负责管理其编写组件的各个方面

答案2

我假设你告诉 Foreman 从 Puppet Master 导入,如果是这样,我建议像这样设置你的 Puppet 目录:

puppet
puppet/manifests
puppet/manifests/site.pp
puppet/manifests/nodes/default.pp
puppet/manifests/nodes/{server-type}.pp
...
puppet/modules
puppet/modules/{module1}
puppet/modules/{module1}/files
puppet/modules/{module1}/manefests
puppet/modules/{module1}/templates
...
etc

然后你需要在 site.pp 文件中包含这一行:

import 'nodes/*'

然后,在 default.pp 中创建您的基础服务器:

node default {
    #this is where you put all of the puppet directives you want on every server.
    #for example if you wanted screen on all of your servers
    package{ "screen": ensure -> installed; }
}

然后在节点下的另一个文件中,比如说 web.pp,您可以包含它,然后像这样为所有 Web 服务器设置指令:

node /^web0[1-9]\.example\.com$/ inherits default {
    #this will inherit all of the settings in the default node and then do anything else you add.
    #like installing nginx
    package { "nginx": ensure -> installed; }
}

您甚至可以像此 db.pp 文件一样链接继承:

node db inherits default {
    #install postgresql-9.3
    package { "postgresql-9.3": ensure -> installed; }
}

node /^db0[1-9]\.example\.com$/ inherits db {
    #This block can even be empty unless you need something here.
}

相关内容