Hi Team, 

I'm trying the below code to attach region-specific waf to region-specific 
alb's. But the below code doesn't seem to be working for associating the 
waf to alb's. The last shell module is having issues, "$alb_arn" value is 
not getting interpreted and getting the error mentioned below.

tasks:

  - block:
      - name: Get service alb info
        community.aws.elb_application_lb_info:
          profile: "{{ aws_profile_name }}"
          region: "{{ region }}"
          names:
          - "Service-{{ ec2_tag_environment }}"
          - "ServiceInt-{{ ec2_tag_environment }}"
          - "Web-{{ ec2_tag_environment }}"
        register: alb_info
        loop: "{{ aws_cloud_regions }}"
        loop_control:
          loop_var: region

      - debug:
            var=alb_info

      - name: Extract ALB ARNs
        set_fact:
            alb_arns: "{{ alb_arns | default([]) + item.load_balancers | 
map(attribute='load_balancer_arn') | list }}"
        loop: "{{ alb_info.results }}"

      - name: Extract ALB map ARNs
        set_fact:
            alb_map_arns: "{{ alb_map_arns | default({}) | 
combine({item.region: item.load_balancers | 
map(attribute='load_balancer_arn') | list}) }}"
        loop: "{{ alb_info.results }}"


      - name: Display ALB ARNs
        debug:
          var: alb_map_arns

      - name: Get WAF WebACL ARN
        shell: |
          aws wafv2 list-web-acls --scope REGIONAL --profile "{{ 
aws_profile_name }}" --region "{{ region }}" --query 'WebACLs[?Name==`{{ 
ec2_tag_environment }}-ALB`].ARN' --output text
        register: waf_acl
        changed_when: false
        loop: "{{ aws_cloud_regions }}"
        loop_control:
          loop_var: region

      - debug:
             var=waf_acl

      - name: Print WebACL ARN
        set_fact:
           waf_arn: "{{ waf_arn | default({}) | combine({item.region: 
item.stdout}) }}"
        loop: "{{ waf_acl.results }}"

      - debug:
            var=waf_arn

      - name: Attach WAF to ALBs
        shell: |
          for alb_arn in {{ alb_map_arns[item] }}; do
            aws wafv2 associate-web-acl \
              --web-acl-arn "{{ waf_arn[item] }}" \
              --resource-arn "$alb_arn" \
              --profile "{{ aws_profile_name }}" \
              --region "{{ item }}"
          done
        loop: "{{ waf_arn.keys() | list }}"
        when: item in alb_map_arns


below $alb_arn is not getting interpreted

 do\n  aws wafv2 associate-web-acl    --web-acl-arn 
\"arn:aws:wafv2:eu-central-1:<profile>:regional/webacl/QAtest-ALB/a6dda4d3-9973-4b88-bc49-a7cbad91a302\"
 
   --resource-arn \"$alb_arn\"

error reason: The ARN isn't valid. A valid ARN begins with arn: and 
includes other information separated by colons or slashes., field: 
RESOURCE_ARN
An error occurred (WAFNonexistentItemException) when calling the 
AssociateWebACL operation: AWS WAF couldn’t perform the operation because 
your resource doesn’t exist

-- 
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/72172b94-528b-4828-b586-836160a318a3n%40googlegroups.com.

Reply via email to