I’m trying to use a loop to build out (Datadog agent) configuration using a role, but each item in the loop overwrites the previous, resulting in configuration for just the last item. Can I please get a second set of eyes to determine how I should restructure my code?
- name: Configure Datadog agent
include_role:
name: datadog.datadog
apply:
become: true
loop_control:
label: “{{ dd_item.item.oracle_db_name }}”
loop_var: dd_item
vars:
datadog_api_key: “yyy”
db_domain: “{{ dd_item.item.db_domain }}”
env: “{{ dd_item.item.env_type }}”
interval_for_default_metrics: 3600
interval_for_custom_metrics: 3600
oracledb_datadog_password: “yyy”
oracledb_datadog_username: “yyy”
oracle_db_name: “{{ dd_item.item.oracle_db_name }}”
oracle_server_name: “{{ dd_item.query_result.0.oracle_server_name }}”
oracle_server_fqdn: “{{ oracle_server_name }}-scan.{{ db_domain }}”
oracle_service_name: “{{ oracle_db_name }}.{{ db_domain }}”
datadog_checks:
oracle:
init_config:
instances:
Default checks
- server: “{{ oracle_server_fqdn }}:1521”
service_name: “{{ oracle_service_name }}”
protocol: TCP
username: “{{ oracledb_datadog_username }}”
password: “{{ oracledb_datadog_password }}”
use_global_custom_queries: ‘false’
tags: - “dbname:{{ oracle_db_name }}”
- ansible_env:testing
- “oracle_exaname:{{ oracle_server_name }}”
min_collection_interval: “{{ interval_for_default_metrics }}”
empty_default_hostname: true
loop: “{{ server_metadata.results }}”