正确使用环境
Environment 这个概念是比较容易理解的,你可以联想到开发环境,测试环境,线上环境等等。 是的,environment 的目的就是为了将不同类型的 host 分组。 我们都知道 module 的默认路径是放在/etc/puppet/modules。 假设我现在要开发一个 puppet-apache 模块,和线上环境使用的 puppet-apache 模块代码不一样,但是/etc/puppet/modules 不是只能放一个模块吗? 因此,每个 environment 支持独立的 Puppet modules 和 main manifest(节点定义文件)。
假如没有 environemnt,而同时有生产,开发和测试环境,每套环境的 Puppet 代码都不尽相同,那么就需要搭建 3 台用于不同环境的 Puppet Master。用 Puppet Environment 可以很容易的解决这个问题,使用 Puppet Environment 可以建立 dev, production, test 三套环境,并且每套环境的代码都可以不同。这样就可以用一台 Puppet Master 管理多个集群环境。
Directory Environments vs. Config File Environments
使用过 2.x 或者更早版本的同学,应该了解或使用过 Config file environemtns。目前,Puppet 支持两种定义环境的方式:
- Directory Environments
- Config File Environments
注意,Config File Env 这种需要修改配置文件的方式已经被历史的潮流抛弃,所以我们只会介绍 directory environment。
启用 Directory Environment
在 Puppet Master 上启用 Directory Environment,需要在 puppet.conf 中定义以下参数:
environmentpath = /etc/puppet/environments
此参数定义了一个目录,此目录下的每一个子目录都是一个 environment。
Environment 目录结构
上面说过,使用 directory environment 的方式,每一个目录都是一个环境,这个目录可以包含环境自身的配置,模块和节点定义。directory environment(下面会使用 环境目录 替代)遵循下面的规律:
- 环境目录的名称即环境名称(知道为啥 config file environment 必须死了吧。)
- 环境目录必须放在 environmentpath 下,默认是在/etc/puppet/environements 下
- 应该包含一个 modules 目录,属于该环境默认的 module 路径
- 应该包含一个 manifests 目录,属于该环境默认的节点定义路径
- 可以包含一个 environment.conf 文件,用于自定义当前环境 modulepath 和 manifest 设置来指定此环境的模块查找路径和节点定义路径。,比如说 test 和 dev 两个环境可以共用一个 manifest 目录。
在我们的线上业务中,一般使用了如下几个环境:
- dev
- test
- pre_production
- production
在 Agent 端指定 Environment
在 Puppet master 上定义了多套环境之后,在 agent 段需要指定本机使用的环境,否则就会使用默认的 production 环境。在 puppet.conf 中定义 environment 参数来指定 agent 所属的环境,例如指定 agent 为 liberty 环境:
[agent]environment = liberty
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论