📅  最后修改于: 2020-10-31 14:00:49             🧑  作者: Mango
在Puppet中,所有环境都具有environment.conf文件。每当主服务器为分配给该特定环境的任何节点或所有节点提供服务时,此文件都可以覆盖多个默认设置。
在Puppet中,对于所有已定义的环境,environment.conf文件位于其家庭环境的顶层,紧邻清单和模块控制器。考虑一个示例,如果您的环境位于默认目录(Vipin / testing / environment)中,则测试环境的配置文件位于Vipin / testing / environments / test / environment.conf中。
# /etc/testingdir/code/environments/test/environment.conf
# Puppet Enterprise requires $basemodulepath; see note below under modulepath".
modulepath = site:dist:modules:$basemodulepath
# Use our custom script to get a git commit for the current state of the code:
config_version = get_environment_commit.sh
Puppet中的所有配置文件都以相同的方式使用类似INI的格式。 environment.conf文件遵循与INI类似的INI格式,就像其他puppet.conf文件一样。 environment.conf和puppet.conf之间的唯一区别是environment.conf文件不能包含[main]部分。 environment.conf文件中的所有设置都必须位于任何config节之外。
大多数允许的设置都将文件路径或路径列表作为值。如果任何路径都是相关路径,则它们以没有斜杠或驱动器号开头–它们将相对于该环境的主目录进行大多数解析。
Environment.conf设置文件可以将其他设置的值用作变量。有多个有用的变量可以插值到environment.conf文件中。这是一些重要变量的列表-
$ basemodulepath-有用的目录包括在模块路径设置。由于Puppet引擎在basemodulepath中使用module,因此Puppet企业用户通常应包含modulepath的此值。
$ environment-用作config_version脚本的命令行参数。您只能在config_version设置中插值此变量。
$ codedir-用于查找文件。
默认情况下,仅允许Puppet environment.conf文件覆盖所列配置中的四个设置。
这是environment.conf文件中的关键设置之一。默认情况下,Puppet加载modulepath中定义的所有控制器。这是Puppet加载其模块的路径位置。需要明确设置这一点。如果未设置上述设置,则Puppet中任何环境的默认模块路径将为-
:$basemodulepath
这用于定义主清单文件,Puppet主站将在启动该目录并将其从已定义清单中编译出来时使用,该清单将用于配置环境。在这种情况下,我们可以定义一个文件,一个文件列表,甚至是一个包含多个清单文件的目录,这些清单文件需要按定义的字母顺序进行评估和编译。
需要在environment.conf文件中明确定义此设置。否则,Puppet将使用环境默认清单目录作为其主要清单。
Config_version可以定义为用于标识目录和事件的确定版本。当Puppet默认情况下编译任何清单文件时,它会将配置版本添加到生成的目录以及当Puppet主文件在Puppet节点上应用任何定义的目录时生成的报告。 Puppet运行脚本来执行上述所有步骤,并将所有生成的输出用作Config_version。
它用于获取有关Puppet在给定环境下加载数据所用时间量的详细信息。如果在puppet.conf文件中定义了该值,则这些值将覆盖默认的超时值。
[master]
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules
在上面的代码中, $ confdir是环境配置文件所在目录的路径。 $ environment是要对其进行配置的环境的名称。
# The environment configuration file
# The main manifest directory or file where Puppet starts to evaluate code
# This is the default value. Works with just a site.pp file or any other
manifest = manifests/
# The directories added to the module path, looked in first match first used order:
# modules - Directory for external modules, populated by r10k based on Puppetfile
# $basemodulepath - As from: puppet config print basemodulepath
modulepath = site:modules:$basemodulepath
# Set the cache timeout for this environment.
# This overrides what is set directly in puppet.conf for the whole Puppet server
# environment_timeout = unlimited
# With caching you need to flush the cache whenever new Puppet code is deployed
# This can also be done manually running: bin/puppet_flush_environment_cache.sh
# To disable catalog caching:
environment_timeout = 0
# Here we pass to one in the control repo the Puppet environment (and git branch)
# to get title and essential info of the last git commit
config_version = 'bin/config_script.sh $environment'