controller_templates.yml

In these files we configure the templates for automation controller.

group_vars/all/controller_templates.yml

Here we configure a job template in all environments, so we can run this in any environment.

---
controller_templates_all:

  - name: ORG_NEW_job_template_1
    description: Our first job template
    organization: ORG_NEW
    project: ORG_NEW_project_1
    inventory: ORG_NEW_inventory
    playbook: main.yml
    job_type: run
    fact_caching_enabled: false
    credentials:
      - ORG_NEW_ansible
    ask_scm_branch_on_launch: false
    ask_tags_on_launch: false
    ask_verbosity_on_launch: false
    ask_variables_on_launch: false
    extra_vars:
    execution_environment: Default Execution Environment
    survey_enabled: true
    survey_spec:
      name: ''
      description: ''
      spec:
        - question_name: Enter var_1
          question_description: ''
          required: true
          type: multiplechoice
          variable: var_1
          min: 0
          max: 20
          default: ''
          choices:
            - dev
            - test
            - accp
            - prod
          new_question: false
...

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_templates.yml

We configure extra templates in development, this an empty set at this moment (and probably will stay empty as thisis the base configuration).

---
controller_templates_dev: []
...

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

group_vars/prod/controller_templates.yml

As we do not configure extra templates in prod, this file is an empty set.

---
controller_templates_prod: []
  # No extra config exists
...

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_templates_all
- controller_templates_

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

Back