Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Puppet管理具有多个环境的多个项目_Puppet_Puppet Enterprise - Fatal编程技术网

使用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/

我已经在CentOS Linux 7(Core)上安装了Puppet Enterprise server

我有不同的特定于客户的项目,它们都有多个环境(QA、Staging、Prod)。我将使用我的Puppet服务器来管理所有这些项目。我知道Puppet提供了隔离代码的环境,但我不确定如何实现我所想到的那种设计。这就是我想要的:

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/