Skip to content

Commit 3ef9424

Browse files
committed
Add tags to Platform storage, roles, and policies
Signed-off-by: Webster Mudge <[email protected]>
1 parent dae93ab commit 3ef9424

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

roles/platform/tasks/initialize_setup_aws.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,9 @@
138138
when: infra__aws_security_group_default_id is defined
139139
ansible.builtin.set_fact:
140140
plat__aws_security_group_default_id: "{{ infra__aws_security_group_default_id }}"
141+
142+
- name: Collect tags for AWS IAM roles, policies, and storage
143+
ansible.builtin.set_fact:
144+
__plat_aws_role_tags: "{{ plat__tags | combine(plat__aws_role_tags) }}"
145+
__plat_aws_policy_tags: "{{ plat__tags | combine(plat__aws_policy_tags) }}"
146+
__plat_aws_storage_tags: "{{ plat__tags | combine(plat__aws_storage_tags) }}"

roles/platform/tasks/setup_aws_authz.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,24 @@
3737
loop_var: __aws_policy_document_item
3838
label: "{{ __aws_policy_document_item.__policy_url_item.key }}"
3939

40+
- name: Construct tags for AWS Policies
41+
ansible.builtin.set_fact:
42+
__plat_aws_policy_tags_list: "{{ __plat_aws_policy_tags_list | default([]) | union([policy_tag_pair]) }}"
43+
vars:
44+
policy_tag_pair: "Key={{ __policy_tag.key }},Value={{ __policy_tag.value | quote }}"
45+
loop: "{{ __plat_aws_policy_tags | dict2items }}"
46+
loop_control:
47+
loop_var: __policy_tag
48+
49+
- name: Construct tags for AWS Roles
50+
ansible.builtin.set_fact:
51+
__plat_aws_role_tags_list: "{{ __plat_aws_role_tags_list | default([]) | union([role_tag_pair]) }}"
52+
vars:
53+
role_tag_pair: "Key={{ __role_tag.key }},Value={{ __role_tag.value | quote }}"
54+
loop: "{{ __plat_aws_role_tags | dict2items }}"
55+
loop_control:
56+
loop_var: __role_tag
57+
4058
# TODO - Handle if XAccount External and Account ID are provided - where is Account Policy defined?
4159
- name: Create AWS Cross Account Policy
4260
community.aws.iam_managed_policy:
@@ -45,6 +63,16 @@
4563
policy_description: "CDP Cross Account policy for {{ plat__namespace }}"
4664
policy: "{{ plat__aws_xaccount_account_policy }}"
4765
state: present
66+
register: __aws_xaccount_policy
67+
68+
- name: Update AWS Cross Account Policy tags
69+
when: __plat_aws_policy_tags_list
70+
ansible.builtin.command: >
71+
aws iam tag-policy
72+
--policy-arn {{ __aws_xaccount_policy.policy.arn }}
73+
--tags {{ __plat_aws_policy_tags_list | join(' ') }}
74+
register: __aws_xaccount_policy_tags
75+
failed_when: __aws_xaccount_policy_tags.rc != 0
4876

4977
- name: Create AWS Cross Account Role
5078
community.aws.iam_role:
@@ -69,6 +97,15 @@
6997
retries: 5
7098
delay: "{{ 10 | random(start=3, step=1) }}"
7199

100+
- name: Update AWS Cross Account Role tags
101+
when: __plat_aws_role_tags_list
102+
ansible.builtin.command: >
103+
aws iam tag-role
104+
--role-name {{ plat__aws_xaccount_role_name }}
105+
--tags {{ __plat_aws_role_tags_list | join(' ') }}
106+
register: __aws_xaccount_role_tags
107+
failed_when: __aws_xaccount_role_tags.rc != 0
108+
72109
- name: Create CDP Cross Account Credential for AWS
73110
when: plat__xacccount_credential_name not in plat__cdp_credentials_list
74111
cloudera.cloud.env_cred:
@@ -92,6 +129,16 @@
92129
Resource:
93130
- "*"
94131
state: present
132+
register: __aws_idbroker_assume_role_policy
133+
134+
- name: Update AWS Cross Account Policy tags
135+
when: __plat_aws_policy_tags_list
136+
ansible.builtin.command: >
137+
aws iam tag-policy
138+
--policy-arn {{ __aws_idbroker_assume_role_policy.policy.arn }}
139+
--tags {{ __plat_aws_policy_tags_list | join(' ') }}
140+
register: __aws_idbroker_assume_role_policy_tags
141+
failed_when: __aws_idbroker_assume_role_policy_tags.rc != 0
95142

96143
- name: Create CDP Data Access Policies
97144
community.aws.iam_managed_policy:
@@ -119,6 +166,20 @@
119166
- key: bucket_access
120167
name: "{{ plat__aws_bucket_access_policy_name }}"
121168
description: CDP Bucket S3 Access
169+
register: __aws_cdp_data_access_policy_info
170+
171+
- name: Update CDP Data Access Policies tags
172+
when: __plat_aws_policy_tags_list
173+
ansible.builtin.command: >
174+
aws iam tag-policy
175+
--policy-arn {{ __aws_cdp_data_policy_tags_item.policy.arn }}
176+
--tags {{ ___plat_aws_policy_tags_list | join(' ') }}
177+
loop_control:
178+
loop_var: __aws_cdp_data_policy_tags_item
179+
label: "{{ __aws_cdp_data_policy_tags_item.policy.name }}"
180+
loop: "{{ __aws_cdp_data_access_policy_info.results }}"
181+
register: __aws_idbroker_assume_role_policy_tags
182+
failed_when: __aws_cdp_data_policy_tags_item.failed
122183

123184
- name: Create AWS Service Roles
124185
community.aws.iam_role:
@@ -157,6 +218,19 @@
157218
- "{{ plat__aws_log_location_policy_name }}"
158219
- "{{ plat__aws_bucket_access_policy_name }}"
159220

221+
- name: Update AWS Service Role tags
222+
when: __plat_aws_role_tags_list
223+
ansible.builtin.command: >
224+
aws iam tag-role
225+
--role-name {{ __aws_service_role_tags_item.iam_role.role_name }}
226+
--tags {{ __plat_aws_role_tags_list | join(' ') }}
227+
loop: "{{ __aws_service_role_info.results }}"
228+
register: __aws_service_role_tags_info
229+
loop_control:
230+
loop_var: __aws_service_role_tags_item
231+
label: "{{ __aws_service_role_tags_item.iam_role.role_name }}"
232+
failed_when: __aws_service_role_tags_item.failed
233+
160234
- name: Create AWS Data Access Roles
161235
community.aws.iam_role:
162236
region: "{{ plat__region }}"
@@ -192,6 +266,19 @@
192266
- "{{ plat__aws_ranger_audit_s3_policy_name }}"
193267
- "{{ plat__aws_bucket_access_policy_name }}"
194268

269+
- name: Update AWS Data Access Role tags
270+
when: __plat_aws_role_tags_list
271+
ansible.builtin.command: >
272+
aws iam tag-role
273+
--role-name {{ __aws_data_access_role_tags_item.iam_role.role_name }}
274+
--tags {{ __plat_aws_role_tags_list | join(' ') }}
275+
loop: "{{ __aws_data_access_role_info.results }}"
276+
register: __aws_data_access_role_tags_info
277+
loop_control:
278+
loop_var: __aws_data_access_role_tags_item
279+
label: "{{ __aws_data_access_role_tags_item.iam_role.role_name }}"
280+
failed_when: __aws_data_access_role_tags_item.failed
281+
195282
- name: Ensure AWS Instance Profiles are attached to CDP Roles
196283
command: >
197284
aws iam add-role-to-instance-profile

0 commit comments

Comments
 (0)