Skip to content

Commit b1b6023

Browse files
Add support for CDE (#58)
* Add DE definitions * Clean up CDE roles * Add Wait statement for DE setup * Improve defaults for DE setup * Include vars in docs/configuration.yml Signed-off-by: Curtis Howard <[email protected]> Co-authored-by: Alan Silva <[email protected]>
1 parent f1d4813 commit b1b6023

File tree

11 files changed

+142
-9
lines changed

11 files changed

+142
-9
lines changed

docs/configuration.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ datahub:
1515
suffix:
1616
tags:
1717
de:
18+
definitions:
19+
suffix:
20+
tags:
21+
force_delete:
1822
df:
1923
suffix:
2024
min_k8s_nodes:
@@ -189,6 +193,7 @@ globals:
189193
admin:
190194
app:
191195
cml:
196+
cde:
192197
credential:
193198
cross_account:
194199
data:
@@ -361,4 +366,4 @@ data:
361366
suffix:
362367
teardown:
363368
delete_policies:
364-
delete_roles:
369+
delete_roles:

roles/common/defaults/main.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ common__external_data_suffix: "{{ globals.labels.external_data | def
4545
common__datalake_admin_suffix: "{{ globals.labels.datalake_admin | default('dladmin') }}"
4646
common__ranger_audit_suffix: "{{ globals.labels.ranger_audit | default('audit') }}"
4747
common__cml_suffix: "{{ globals.labels.cml | default('cml') }}"
48+
common__cde_suffix: "{{ globals.labels.cde | default('cde') }}"
4849
common__igw_suffix: "{{ globals.labels.internet_gateway | default('igw') }}"
4950
common__app_suffix: "{{ globals.labels.app | default('app') }}"
5051
common__group_suffix: "{{ globals.labels.group | default('group') }}"
@@ -141,4 +142,4 @@ common__include_datahub: "{{ datahub is defined | bool }}"
141142
common__include_opdb: "{{ opdb is defined | bool }}"
142143

143144
# Teardown
144-
common__force_teardown: "{{ globals.force_teardown | default(False) }}" # WARNING: This will purge your namespace and anything related to it, use with extreme caution
145+
common__force_teardown: "{{ globals.force_teardown | default(False) }}" # WARNING: This will purge your namespace and anything related to it, use with extreme caution

roles/info/tasks/main.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
- name: Set fact for the artifacts directory path
3535
ansible.builtin.set_fact:
3636
__artifacts_directory_path: "{{ __artifacts_directory_create.path }}"
37-
37+
3838
- name: Validate artifacts directory if it does exist
3939
when: __artifacts_directory.stat.exists
4040
block:
@@ -70,6 +70,11 @@
7070
env: "{{ info__env_name }}"
7171
register: __ml_info
7272

73+
- name: Query CDP DE Services
74+
cloudera.cloud.de_info:
75+
env: "{{ info__env_name }}"
76+
register: __de_info
77+
7378
- name: Query CDP Operational DBs
7479
cloudera.cloud.opdb_info:
7580
env: "{{ info__env_name }}"
@@ -82,11 +87,12 @@
8287
datalake: "{{ __datalake_info.datalakes | first | default({}) }}"
8388
datahubs: "{{ __datahubs_info.datahubs }}"
8489
workspaces: "{{ __ml_info.workspaces }}"
90+
services: "{{ __de_info.services }}"
8591
operational_dbs: "{{ __opdb_info.databases }}"
8692

8793
- name: Save the CDP deployment details locally
8894
when: info__create_deployment_details
8995
ansible.builtin.copy:
9096
content: "{{ { 'deployment': deployment } | to_nice_yaml(indent=2) }}"
9197
dest: "{{ __artifacts_directory_path | default('.') }}/deployment_info.yml"
92-
delegate_to: localhost
98+
delegate_to: localhost

roles/platform/tasks/initialize_teardown.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@
2828
- plat__env_info.environments[0].descendants.df | length == 0
2929
- plat__env_info.environments[0].descendants.dw | length == 0
3030
- plat__env_info.environments[0].descendants.opdb | length == 0
31+
- plat__env_info.environments[0].descendants.de | length == 0
3132
fail_msg: "Environment {{ plat__env_name }} has one or more child services registered, please check and try again"
3233
quiet: yes
3334

3435
- name: Include provider-specific initialization base
3536
ansible.builtin.include_tasks: "initialize_{{ plat__infra_type | lower }}.yml"
3637

3738
- name: Include provider-specific resources for CDP Public Environment teardown
38-
ansible.builtin.include_tasks: "initialize_teardown_{{ plat__infra_type | lower }}.yml"
39+
ansible.builtin.include_tasks: "initialize_teardown_{{ plat__infra_type | lower }}.yml"

roles/platform/vars/main.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ plat__cdp_iam_identities:
4242
df_admin: DFAdmin
4343
df_flow_admin: DFFlowAdmin
4444
df_flow_user: DFFlowUser
45+
de_admin: DEAdmin
46+
de_user: DEUser
4547

4648
plat__cdp_iam_admin_group_resource_roles_default:
4749
- "{{ plat__cdp_iam_identities.env_admin }}"
@@ -53,13 +55,16 @@ plat__cdp_iam_admin_group_resource_roles_default:
5355
- "{{ plat__cdp_iam_identities.df_admin }}"
5456
- "{{ plat__cdp_iam_identities.df_flow_admin }}"
5557
- "{{ plat__cdp_iam_identities.df_flow_user }}"
58+
- "{{ plat__cdp_iam_identities.de_admin }}"
59+
- "{{ plat__cdp_iam_identities.de_user }}"
5660

5761
plat__cdp_iam_user_group_resource_roles_default:
5862
- "{{ plat__cdp_iam_identities.env_user }}"
5963
- "{{ plat__cdp_iam_identities.dw_user }}"
6064
- "{{ plat__cdp_iam_identities.ml_user }}"
6165
- "{{ plat__cdp_iam_identities.df_flow_admin }}"
6266
- "{{ plat__cdp_iam_identities.df_flow_user }}"
67+
- "{{ plat__cdp_iam_identities.de_user }}"
6368

6469
plat__gcp_xaccount_policy_bindings_default:
6570
- "roles/compute.instanceAdmin.v1"
@@ -81,4 +86,4 @@ plat__azure_roles:
8186
storown: 'Storage Blob Data Owner'
8287
storcnt: 'Storage Blob Data Contributor'
8388
contrib: 'Contributor'
84-
owner: 'Owner'
89+
owner: 'Owner'

roles/runtime/defaults/main.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ run__ml_force_delete: "{{ ml.force_delete | default (run__force_te
6464
run__ml_remove_storage: "{{ ml.remove_storage | default (run__force_teardown) }}"
6565
run__ml_public_loadbalancer: "{{ ml.public_loadbalancer | default(run__public_endpoint_access) }}"
6666

67+
run__de_definitions: "{{ de.definitions | default([{}]) }}"
68+
run__de_suffix: "{{ de.suffix | default('de') }}"
69+
run__de_tags: "{{ de.tags | default(common__tags) }}"
70+
run__de_force_delete: "{{ de.force_delete | default (run__force_teardown) }}"
71+
6772
run__dw_definitions: "{{ dw.definitions | default([{}]) }}"
6873
run__dw_suffix: "{{ dw.suffix | default('dw') }}"
6974
run__dw_force_delete: "{{ dw.force_delete | default (run__force_teardown) }}"
@@ -85,4 +90,4 @@ run__include_dw: "{{ common__include_dw }}"
8590
run__include_de: "{{ common__include_de }}"
8691
run__include_df: "{{ common__include_df }}"
8792
run__include_datahub: "{{ common__include_datahub }}"
88-
run__include_opdb: "{{ common__include_opdb }}"
93+
run__include_opdb: "{{ common__include_opdb }}"

roles/runtime/tasks/initialize_base.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,20 @@
161161
loop_control:
162162
loop_var: __ml_config
163163
label: "{{ config.name }}"
164+
165+
- name: Prepare for CDP DE Service experiences
166+
when: run__include_de
167+
block:
168+
- name: Construct CDP DE Service configurations
169+
ansible.builtin.set_fact:
170+
run__de_configs: "{{ run__de_configs | default([]) | union([config]) }}"
171+
vars:
172+
include: "{{ lookup('template', __de_config.include | default('experiences_config_placeholder.j2')) | from_yaml }}"
173+
overlay_tags: "{{ __de_config.tags | default(include.tags) | default(run__de_tags) }}"
174+
config:
175+
name: "{{ __de_config.name | default([run__namespace_cdp, __de_config.suffix | default(include.suffix) | default(run__de_suffix)] | join('-')) }}"
176+
raw: "{{ __de_config }}"
177+
loop: "{{ run__de_definitions }}"
178+
loop_control:
179+
loop_var: __de_config
180+
label: "{{ config.name }}"

roles/runtime/tasks/initialize_teardown.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,16 @@
6868
loop: "{{ run__env_info.environments[0].descendants.ml }}"
6969
loop_control:
7070
loop_var: __ml_config
71-
label: "{{ __ml_config.instanceName }}"
71+
label: "{{ __ml_config.instanceName }}"
72+
73+
- name: Prepare teardown list of all DE Services in Environment
74+
ansible.builtin.set_fact:
75+
run__de_configs: "{{ run__de_configs | default([]) | union([config]) }}"
76+
vars:
77+
config:
78+
name: "{{ __de_config.name }}"
79+
env: "{{ __de_config.environmentName }}"
80+
loop: "{{ run__env_info.environments[0].descendants.de }}"
81+
loop_control:
82+
loop_var: __de_config
83+
label: "{{ __de_config.name }}"

roles/runtime/tasks/setup_base.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,34 @@
5959
poll: 0
6060
register: __ml_builds
6161

62+
- name: Execute CDP DE Service experiences setup
63+
when: run__include_de
64+
cloudera.cloud.de:
65+
name: "{{ __de_config_item.name }}"
66+
env: "{{ run__env_name }}"
67+
instance_type: "{{ __de_config_item.raw.instance_type | default(run__de_compute_default[run__infra_type]) }}"
68+
minimum_instances: "{{ __de_config_item.raw.minimum_instances | default(omit) }}"
69+
maximum_instances: "{{ __de_config_item.raw.maximum_instances | default(omit) }}"
70+
minimum_spot_instances: "{{ __de_config_item.raw.minimum_spot_instances | default(omit) }}"
71+
maximum_spot_instances: "{{ __de_config_item.raw.maximum_spot_instances | default(omit) }}"
72+
chart_value_overrides: "{{ __de_config_item.raw.chart_value_overrides | default(omit) }}"
73+
enable_public_endpoint: "{{ __de_config_item.raw.enable_public_endpoint | default(omit) }}"
74+
enable_workload_analytics: "{{ __de_config_item.raw.enable_workload_analytics | default(omit) }}"
75+
initial_instances: "{{ __de_config_item.raw.initial_instances | default(omit) }}"
76+
initial_spot_instances: "{{ __de_config_item.raw.initial_spot_instances | default(omit) }}"
77+
root_volume_size: "{{ __de_config_item.raw.root_volume_size | default(omit) }}"
78+
skip_validation: "{{ __de_config_item.raw.skip_validation | default(omit) }}"
79+
tags: "{{ __de_config_item.raw.tags | default(omit) }}"
80+
use_ssd: "{{ __de_config_item.raw.use_ssd | default(omit) }}"
81+
whitelist_ips: "{{ __de_config_item.raw.whitelist_ips | default(omit) }}"
82+
loop_control:
83+
loop_var: __de_config_item
84+
label: "{{ __de_config_item.name | default ('None') }}"
85+
loop: "{{ run__de_configs }}"
86+
async: 7200 # 2 hour timeout
87+
poll: 0
88+
register: __de_builds
89+
6290
- name: Execute CDP OpDB setup
6391
when: run__include_opdb
6492
cloudera.cloud.opdb:
@@ -114,6 +142,19 @@
114142
retries: 120
115143
delay: 30
116144

145+
- name: Wait for CDP DE Service experiences to complete
146+
when: run__include_de
147+
ansible.builtin.async_status:
148+
jid: "{{ __de_build.ansible_job_id }}"
149+
loop_control:
150+
loop_var: __de_build
151+
label: "{{ __de_build.__de_config_item.name | default ('None') }}"
152+
loop: "{{ __de_builds.results }}"
153+
register: __de_builds_async
154+
until: __de_builds_async.finished
155+
retries: 120
156+
delay: 60
157+
117158
- name: Wait for CDP OpDB deployments to complete
118159
when: run__include_opdb
119160
ansible.builtin.async_status:

roles/runtime/tasks/teardown_base.yml

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,24 @@
8080
poll: 0
8181
register: __ml_teardowns_info
8282

83+
- name: Execute CDP DE Service teardown
84+
when:
85+
- run__include_de or run__force_teardown | bool
86+
- run__de_configs is defined
87+
- run__de_configs | length > 0
88+
cloudera.cloud.de:
89+
name: "{{ __de_config_item.name }}"
90+
env: "{{ run__env_name }}"
91+
state: absent
92+
force_delete: "{{ run__de_force_delete }}"
93+
loop_control:
94+
loop_var: __de_config_item
95+
label: "{{ __de_config_item.name | default('de') }}"
96+
loop: "{{ run__de_configs }}"
97+
async: 7200 # 2 hour timeout
98+
poll: 0
99+
register: __de_teardowns_info
100+
83101
- name: Execute CDP Datahub teardown
84102
when:
85103
- run__include_datahub or run__force_teardown | bool
@@ -114,6 +132,22 @@
114132
retries: 120
115133
delay: 30
116134

135+
- name: Wait for CDP DE Service deployments to decommission
136+
when:
137+
- __de_teardowns_info is defined
138+
- __de_teardowns_info.results is defined
139+
- __de_teardowns_info.results | length > 0
140+
ansible.builtin.async_status:
141+
jid: "{{ __de_teardown.ansible_job_id }}"
142+
loop_control:
143+
loop_var: __de_teardown
144+
label: "{{ __de_teardown.__de_config_item.name | default('de') }}"
145+
loop: "{{ __de_teardowns_info.results }}"
146+
register: __de_teardowns_async
147+
until: __de_teardowns_async.finished
148+
retries: 120
149+
delay: 60
150+
117151
- name: Wait for CDP Datahub deployments to decommission
118152
when:
119153
- __datahub_teardowns_info is defined
@@ -168,4 +202,4 @@
168202
wait: yes
169203
loop_control:
170204
loop_var: __df_teardown_wait_item
171-
loop: "{{ run__df_service_info.services }}"
205+
loop: "{{ run__df_service_info.services }}"

0 commit comments

Comments
 (0)