Hi Team,

I'm having issues with looping in Ansible. The background of what I'm 
trying to do is - 
I have 2 regions in aws_cloud_regions and their respective 
waf_blocked_accounts list, which looks like the one below. 

I want to create regional_account_rules in waf for both the regions (as in 
us-east-1 blocked_account_list gets attached to regional_account_rules for 
US East and the same for another region) but facing issues while looping 
over regions and blocked_account_list together. 


Also note, that search_string in "Create statements" accepts a string list, 
so we have to create one outer loop and one inner loop, an outer loop for 
regions, and an inner for adding blocked account lists one by one.

 

-bash-4.2$ cat environment/QAtest/us-east-1/waf_blocked_accounts.yml

blocked_account_list:

  - 5afabfb36d6c356772d8ae02

  - 5c46e33273766a3634f91a7c

    

"aws_cloud_regions": [
        "us-east-1",
        "eu-central-1"
    ]


The playbook which needs modification, it is not region-specific as of now:

  - name: Loop over AWS regions

    include_vars:

        file: "environment/QAtest/{{ region }}/waf_blocked_accounts.yml"

    loop: "{{ aws_cloud_regions }}"

    loop_control:

        loop_var: region

    register: blocked_accounts


  - name: Create statements

    set_fact:

      acc_statements: "{{ acc_statements + [loop_statement] }}"

    vars:

      loop_statement:

        byte_match_statement:

          search_string: "{{ acc_id }}"

          positional_constraint: EXACTLY

          field_to_match:

            single_header:

              name: "accountmoid"

          text_transformations:

          - type: NONE

            priority: 0

    loop: "{{ blocked_account_list }}"

    loop_control:

      loop_var: acc_id

 

  - set_fact:

      regional_account_rules:

      - name: "BlockedAccounts"

        priority: 3

        action:

          block: {}

        visibility_config:

          sampled_requests_enabled: yes

          cloud_watch_metrics_enabled: yes

          metric_name: "BlockedAccounts"

        statement:

          or_statement:

            statements: "{{ acc_statements }}"

  - set_fact:

      regional_account_rules: "{{ regional_account_rules | default([]) }}"



Any help is appreciated. Thanks in advance.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/cd18c106-b3c0-4f3b-8e6c-60c52ee3e5e6n%40googlegroups.com.

Reply via email to