我想在我的环境中使用Puppet的环境function。 我们通过主机名区分环境,例如prod-web1,stg-web1。 我知道我可以使用正则expression式在一个单一的环境中匹配这些,但我宁愿使用实际的环境function来允许模块更新通过每个环境传播。
根据我的理解,有两种方法可以做到这一点,两种方式都有一些问题。
我可以在puppet代理的configuration中设置环境variables。 这需要与每个主机进行交互。 很显然,这可以用Puppet进行简单的pipe理,但是第一次运行会应用默认的生产configuration,如果没有,我真的更喜欢。
– 我可以在运行代理的时候定义环境variables,但是我需要在cron中绑定代理来指定这个variables,而且我会失去puppet内置展示的好处。
我如何根据主机名把一个盒子挂到一个环境?
两个选项。
我所做的就是让Puppetpipe理puppet.conf和puppet.conf数据,用于configuration应该使用哪个环境的节点(而在主机名上使用正则expression式来确定)。
为了避免在第一次运行时应用生产configuration的问题,我避免让它执行运行,直到我能够手动启动第一次运行(通过在我准备好之前不签署证书),然后通过执行第一次使用puppet agent --test --environment staging运行puppet agent --test --environment staging – 将为此运行显式地执行登台环境,以及使用正确的configuration修改puppet.conf以供将来运行。