使用Puppet管理具有多个环境的多个项目
我已经在CentOS Linux 7(Core)上安装了Puppet Enterprise server 我有不同的特定于客户的项目,它们都有多个环境(QA、Staging、Prod)。我将使用我的Puppet服务器来管理所有这些项目。我知道Puppet提供了隔离代码的环境,但我不确定如何实现我所想到的那种设计。这就是我想要的:使用Puppet管理具有多个环境的多个项目,puppet,puppet-enterprise,Puppet,Puppet Enterprise,我已经在CentOS Linux 7(Core)上安装了Puppet Enterprise server 我有不同的特定于客户的项目,它们都有多个环境(QA、Staging、Prod)。我将使用我的Puppet服务器来管理所有这些项目。我知道Puppet提供了隔离代码的环境,但我不确定如何实现我所想到的那种设计。这就是我想要的: puppet_root/ - code/ - environments - prod/
puppet_root/
- code/
- environments
- prod/
- project_A
- environment.conf
- hieradata/
- manifests/
- modules/
- project_B
- environment.conf
- hieradata/
- manifests/
- modules/
- staging
- project_A
- environment.conf
- hieradata/
- manifests/
- modules/
- project_B
- environment.conf
- hieradata/
- manifests/
- modules/
- dev
...
...
- modules
- custom_scripts/
如果只有一个客户机,我知道它会毫无问题地工作,但是如果一个子目录中有多个客户机(如上所示),我不确定Puppet如何知道要遍历哪条路径
更新:
我想出的新型号:
puppet_root/
- client_A/
- code/
- modules/
- environments/
- prod/
- environment.conf
- manifests/
- hieradata/
- common.yaml
...
...
- uat/
...
...
- client_B/
- code/
- modules/
- environments/
- prod/
- environment.conf
- manifests/
- hieradata/
- common.yaml
...
...
- uat/
...
...
- custom_scripts/
任何帮助都将不胜感激。在
environment.conf
、hieradata/
或manifests/
中,没有任何东西可以通过低于环境级别(或者在hieradata/
的情况下,也可以高于模块级别;请参见此:)所以只有modules
dir应该在任何给定项目的dir中?但在我的案例中,由于项目来自不同的客户,遵循您的建议是更好的方法吗?另外,我没有得到第二点(保持hieradata
在模块级别之上)。我只是说,在您的理论设计模式中,将这三个组件放置在低于环境目录的级别(或高于数据模块的级别)不会有任何附加值。在那里设置模块会有一定的组织价值。如果您重做设计模式,以便只有模块位于较低级别,那么问题将变得更容易解决。此外,一旦您以这种方式简化了问题,您就可以更容易地看到,通过在角色和配置文件设计模式中将每个项目设为配置文件,您的问题可以得到解决:。感谢提供详细信息。我浏览了角色和个人资料模型。看起来不错。我更喜欢使用这种方法,但我可能需要一些时间来适应,因为我最近已经开始学习木偶。我已经提出了新的模式,我已经在我的帖子更新。这个新模型将包含每个项目的单独回购协议。这样,我觉得在任何项目的代码上工作都会有更好的隔离。有什么想法吗?
puppet_root/
- client_A/
- code/
- modules/
- environments/
- prod/
- environment.conf
- manifests/
- hieradata/
- common.yaml
...
...
- uat/
...
...
- client_B/
- code/
- modules/
- environments/
- prod/
- environment.conf
- manifests/
- hieradata/
- common.yaml
...
...
- uat/
...
...
- custom_scripts/