Thanks, Todd. I'm majorly facing issues with looping. I want to create
regional_account_rules
for us-east-1 and eu-central-1 and want to make sure correct "acc_statements"
get created for each region with respective blocked accounts. Could you
provide some suggestions how to achieve this?
On Saturday, September 2, 2023 at 2:38:48 AM UTC+5:30 Todd Lewis wrote:
> Your first task is replacing blocked_account_list each time through the
> loop, so you end up with only those blocked accounts listed for the last
> region.
>
> However, you are also registering the results, so you can create a loop
> that retains all the blocked accounts along with their associated region.
>
> - name: Tie region to the blocked accounts
> ansible.builtin.debug:
> msg: "{{ item }}"
> vars:
> ba_query: '[].{region: region, blocked_accounts:
> ansible_facts.blocked_account_list}'
> loop:
> - "{{ blocked_accounts.results | json_query(ba_query) }}"
>
> This result in the following output. (Note, I'm running with
> ANSIBLE_STDOUT_CALLBACK=yaml ansible-playbook …
> and I've inserted the region into the account numbers so I can tell which
> accounts came from which region.):
>
> TASK [Tie region to the blocked accounts]
> ************************************************************************************************************************************
> ok: [localhost] => (item=[{'region': 'us-east-1', 'blocked_accounts':
> ['20ea8d-us-east-1-bfbafa5', 'c7a19f-us-east-1-33e64c5']}, {'region':
> 'eu-central-1', 'blocked_accounts': ['5afabf-eu-central-1-ae02',
> '5c46e3-eu-central-1-1a7c']}]) =>
> msg:
> - blocked_accounts:
> - 20ea8d-us-east-1-bfbafa5
> - c7a19f-us-east-1-33e64c5
> region: us-east-1
> - blocked_accounts:
> - 5afabf-eu-central-1-ae02
> - 5c46e3-eu-central-1-1a7c
> region: eu-central-1
>
> After that, it isn't particularly clear to me how the region is supposed
> to play into the following tasks. But perhaps this will help get past the
> first problem.
> --
> Todd
>
>
> On 9/1/23 2:54 PM, Shivani Arora wrote:
>
> 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
>
> <https://groups.google.com/d/msgid/ansible-project/cd18c106-b3c0-4f3b-8e6c-60c52ee3e5e6n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
> --
> Todd
>
>
--
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/0a4b1d00-7637-4b12-a226-8a4703e475d4n%40googlegroups.com.