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.