Managing multiple projects having multiple environments using Puppet

604 views Asked by At

I have setup Puppet Enterprise server on CentOS Linux 7 (Core).

# /opt/puppetlabs/bin/puppetserver --version
puppetserver version: 2016.5.0.11

I have different client-specific projects and they all have multiple environments (QA, Staging, Prod). I will be using my Puppet server for managing all these projects. I know Puppet provides environments for isolating code but i'm not sure how to implement the kind of design i am thinking of. This is what i would like to have:

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/

Had there been a single client, i know it would have worked without any issue but with multiple clients inside a sub-dir (as shown above), i'm not sure how Puppet will come to know which path to traverse.

UPDATE:

New model i came up with:

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/

Any help will be appreciated.

0

There are 0 answers