|  | 
| 37 | 37 |     loop_var: __aws_policy_document_item | 
| 38 | 38 |     label: "{{ __aws_policy_document_item.__policy_url_item.key }}" | 
| 39 | 39 | 
 | 
|  | 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 | + | 
| 40 | 58 | # TODO - Handle if XAccount External and Account ID are provided - where is Account Policy defined? | 
| 41 | 59 | - name: Create AWS Cross Account Policy | 
| 42 | 60 |   community.aws.iam_managed_policy: | 
|  | 
| 45 | 63 |     policy_description: "CDP Cross Account policy for {{ plat__namespace }}" | 
| 46 | 64 |     policy: "{{ plat__aws_xaccount_account_policy }}" | 
| 47 | 65 |     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 | 
| 48 | 76 | 
 | 
| 49 | 77 | - name: Create AWS Cross Account Role | 
| 50 | 78 |   community.aws.iam_role: | 
|  | 
| 69 | 97 |   retries: 5 | 
| 70 | 98 |   delay: "{{ 10 | random(start=3, step=1) }}" | 
| 71 | 99 | 
 | 
|  | 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 | + | 
| 72 | 109 | - name: Create CDP Cross Account Credential for AWS | 
| 73 | 110 |   when: plat__xacccount_credential_name not in plat__cdp_credentials_list | 
| 74 | 111 |   cloudera.cloud.env_cred: | 
|  | 
| 92 | 129 |           Resource: | 
| 93 | 130 |             - "*" | 
| 94 | 131 |     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 | 
| 95 | 142 | 
 | 
| 96 | 143 | - name: Create CDP Data Access Policies | 
| 97 | 144 |   community.aws.iam_managed_policy: | 
|  | 
| 119 | 166 |     - key: bucket_access | 
| 120 | 167 |       name: "{{ plat__aws_bucket_access_policy_name }}" | 
| 121 | 168 |       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 | 
| 122 | 183 | 
 | 
| 123 | 184 | - name: Create AWS Service Roles | 
| 124 | 185 |   community.aws.iam_role: | 
|  | 
| 157 | 218 |         - "{{ plat__aws_log_location_policy_name }}" | 
| 158 | 219 |         - "{{ plat__aws_bucket_access_policy_name }}" | 
| 159 | 220 | 
 | 
|  | 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 | + | 
| 160 | 234 | - name: Create AWS Data Access Roles | 
| 161 | 235 |   community.aws.iam_role: | 
| 162 | 236 |     region: "{{ plat__region }}" | 
|  | 
| 192 | 266 |         - "{{ plat__aws_ranger_audit_s3_policy_name }}" | 
| 193 | 267 |         - "{{ plat__aws_bucket_access_policy_name }}" | 
| 194 | 268 | 
 | 
|  | 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 | + | 
| 195 | 282 | - name: Ensure AWS Instance Profiles are attached to CDP Roles | 
| 196 | 283 |   command: > | 
| 197 | 284 |     aws iam add-role-to-instance-profile | 
|  | 
0 commit comments