我想在我的环境中使用 Puppet 的环境功能。我们通过主机名区分环境,例如 prod-web1、stg-web1。我知道我可以使用正则表达式在单个环境中匹配这些,但我宁愿使用实际的环境功能来允许模块更新在每个环境中传播。
据我所知,有两种方法可以做到这一点,但两种方法都存在一些问题;
-我可以在 Puppet 代理的配置中设置环境变量。这需要与每个主机进行交互。显然,这可以通过 Puppet 轻松管理,但第一次运行将应用默认的生产配置,我真的希望它不这样做。
-我可以在运行代理时定义环境变量,但我需要将代理放在 cron 中来指定它,并且我将失去 puppet 内置 splay 的好处。
我怎样才能根据主机名将一个盒子固定到一个环境中?
答案1
两种选择。
为此,我让 Puppet 管理puppet.conf
、 和 Hiera 数据,并为节点配置它应该处于哪个环境中(而您将使用主机名上的正则表达式来确定这一点)。
为了避免在第一次运行时应用生产配置的问题,我避免让它运行,直到我能够手动启动第一次运行(在我准备好之前不签署证书),然后通过第一次运行puppet agent --test --environment staging
- 这将明确为这次运行执行暂存环境,以及puppet.conf
使用正确的配置修改将来的运行。