controller_projects.yml

In these files we configure the projects for the organization in automation controller.
We will probably do some of these on each environment separately, as the hostnames differ.

group_vars/all/controller_projects.yml

Here we configure only recovery scenarios in the base configuration, so we can restore eveything after initial configuration.

---
controller_projects_all:

  - name: ORG_NEW_inventory
    description: 
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/inventory.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0

  - name: ORG_NEW_project_1
    description: Just a project
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/project_1.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0
...

But you can already see that the variable name used here has the "_all" extension, so the variable will not be overridden as this is not quite a inventory.
Why we do this, will become clear in a moment.

group_vars/dev/controller_projects.yml

We configure some extra projects in development, but these are inventory projects with base variables for constructed inventories we use.

---
controller_projects_dev:

  - name: ORG_NEW_project_2
    description: Just a second project
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/project_2.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0

  - name: ORG_NEW_project_3
    description: Just a third project
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/project_3.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0
...

Here the variable has the "_dev" extension, so the variable will not be overridden.

group_vars/prod/controller_projects.yml

We configure some extra projects in production, but these are inventory projects with base variables for constructed inventories we use.

---
controller_projects_prod:

  - name: ORG_NEW_project_4
    description: May the fourth be with you
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/project_4.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0

  - name: ORG_NEW_project_5
    description: Number 5 is alive
    organization: ORG_NEW
    scm_type: git
    scm_url: git@gitlab.homelab:org_new_group/project_5.git
    scm_credential: ORG_NEW_gitlab_acc
    scm_branch: master
    scm_clean: false
    scm_delete_on_update: false
    scm_update_on_launch: true
    scm_update_cache_timeout: 0
    allow_override: false
    timeout: 0
...

Here the variable has the "_prod" extension, so the variable will not be overridden.

When we run a pipeline for a certain environment, the inventory structure will provide us with 2 variables: - controller_projects_all
- controller_projects_

We will merge these 2 variables into 1: controller_projects and feed this to the infra.aap_configuration.controller_projects role.

Back