返回介绍

正确使用环境

发布于 2025-02-18 00:20:49 字数 1968 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文