Puppet - 环境会议


在 Puppet 中,所有环境都有environment.conf文件。每当主服务器为任何节点或分配给该特定环境的所有节点提供服务时,此文件都可以覆盖多个默认设置。

地点

在 Puppet 中,对于定义的所有环境,environment.conf 文件位于其主环境的顶层,紧邻清单和模块目录。考虑一个示例,如果您的环境位于默认目录(Vipin/testing/environment)中,则测试环境的配置文件位于Vipin/testing/environments/test/environment.conf

例子

# /etc/testingdir/code/environments/test/environment.conf  
# Puppet Enterprise 需要 $basemodulepath;请参阅下面的模块路径下的注释”。
模块路径 = 站点:距离:模块:$basemodulepath  
# 使用我们的自定义脚本获取代码当前状态的 git 提交:
config_version = get_environment_commit.sh

格式

Puppet 中的所有配置文件都以相同的方式使用相同的 INI 格式。environment.conf文件遵循与其他文件(如 puppet.conf 文件)相同的类似 INI 的格式。environment.conf 和puppet.conf之间的唯一区别是environment.conf 文件不能包含 [main] 部分。environment.conf 文件中的所有设置必须位于任何配置部分之外。

值中的相对路径

大多数允许的设置接受文件路径或路径列表作为值。如果任何路径是相关路径,则它们以没有前导斜杠或驱动器号的方式开始 - 它们将主要相对于该环境的主目录进行解析。

值插值

Environment.conf 设置文件能够使用其他设置的值作为变量。有多个有用的变量可以插入到environment.conf 文件中。这是一些重要变量的列表 -

  • $basemodulepath - 用于在模块路径设置中包含目录。Puppet 企业用户通常应包含modulepath的此值,因为 Puppet 引擎在basemodulepath中使用 module 。

  • $environment - 作为 config_version 脚本的命令行参数很有用。您只能在 config_version 设置中插入此变量。

  • $codedir - 用于定位文件。

允许的设置

默认情况下,Puppetenvironment.conf 文件仅允许覆盖所列配置中的四个设置。

  • 模块路径
  • 显现
  • 配置版本
  • 环境超时

模块路径

这是environment.conf 文件中的关键设置之一。modulepath 中定义的所有控制器默认由 Puppet 加载。这是 Puppet 加载其模块的路径位置。需要明确地设置这一点。如果未设置上述设置,Puppet 中任何环境的默认模块路径将为 -

<环境中的模块目录>:$basemodulepath 

显现

这用于定义主清单文件,Puppet master 在启动和编译定义清单中的目录时将使用该文件,该清单将用于配置环境。在此,我们可以定义单个文件、文件列表,甚至是由多个清单文件组成的目录,这些清单文件需要按定义的字母顺序进行评估和编译。

需要在environment.conf 文件中显式定义此设置。如果没有,Puppet 将使用环境默认清单目录作为其主清单。

配置版本

Config_version 可以定义为用于标识目录和事件的明确版本。当 Puppet 默认编译任何清单文件时,它会将配置版本添加到生成的目录以及 Puppet Master 在 Puppet 节点上应用任何定义的目录时生成的报告中。Puppet 运行一个脚本来执行上述所有步骤,并使用所有生成的输出作为 Config_version。

环境超时

它用于获取有关 Puppet 为给定环境加载数据应使用的时间量的详细信息。如果该值在 puppet.conf 文件中定义,则这些值将覆盖默认超时值。

示例environment.conf 文件

[掌握]
   清单 = $confdir/environments/$environment/manifests/site.pp
   模块路径 = $confdir/environments/$environment/modules

上面代码中$confdir是环境配置文件所在目录的路径。$environment是正在完成配置的环境的名称。

生产就绪环境配置文件

# 环境配置文件  
# Puppet 开始评估代码的主清单目录或文件  
# 这是默认值。仅适用于 site.pp 文件或任何其他文件  
清单=清单/  
# 添加到模块路径的目录,按第一个匹配的第一个使用的顺序查找:  
#modules - 外部模块的目录,由基于 Puppetfile 的 r10k 填充  
# $basemodulepath - 来自:puppet config print basemodulepath  
模块路径 = 站点:模块:$basemodulepath  
# 设置该环境的缓存超时。  
# 这会覆盖整个 Puppet 服务器的 puppet.conf 中直接设置的内容  
# 环境超时=无限制  
# 使用缓存,每当部署新的 Puppet 代码时,您都需要刷新缓存  
# 这也可以手动运行:bin/puppet_flush_environment_cache.sh  
# 禁用目录缓存:  
环境超时= 0  
# 这里我们将 Puppet 环境(和 git 分支)传递给控制仓库中的一个  
# 获取最后一次 git 提交的标题和基本信息
config_version = 'bin/config_script.sh $环境'