Skip to content
This repository was archived by the owner on Aug 6, 2025. It is now read-only.

Commit 95f70ef

Browse files
committed
Support for Flex Shapes
1 parent ed2feb7 commit 95f70ef

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1339
-192
lines changed

cluster/multi-ad/blockvolumes.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
resource "oci_core_volume" "ESData1Vol1" {
25
availability_domain = data.oci_identity_availability_domains.ADs.availability_domains[0]["name"]
36
compartment_id = var.compartment_ocid

cluster/multi-ad/compute.tf

Lines changed: 99 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
resource "oci_core_instance" "BastionHost" {
25
availability_domain = data.oci_identity_availability_domains.ADs.availability_domains[0]["name"]
36
compartment_id = var.compartment_ocid
47
display_name = "BastionHost"
58
shape = var.BastionShape
69

10+
dynamic "shape_config" {
11+
for_each = local.is_flexible_bastion_shape ? [1] : []
12+
content {
13+
memory_in_gbs = var.Bastion_Flex_Shape_Memory
14+
ocpus = var.Bastion_Flex_Shape_OCPUS
15+
}
16+
}
17+
718
create_vnic_details {
819
subnet_id = oci_core_subnet.BastionSubnetAD1.id
920
skip_source_dest_check = true
1021
}
1122

1223
metadata = {
13-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
14-
user_data = base64encode(file(var.BastionBootStrap))
24+
ssh_authorized_keys = var.ssh_public_key
25+
user_data = data.template_cloudinit_config.cloud_init_bastion.rendered
1526
}
1627

1728
source_details {
18-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
29+
source_id = lookup(data.oci_core_images.InstanceImageOCID_Bastion.images[0], "id")
1930
source_type = "image"
2031
}
2132

@@ -31,6 +42,15 @@ resource "oci_core_instance" "ESMasterNode1" {
3142
compartment_id = var.compartment_ocid
3243
display_name = "ESMasterNode1"
3344
shape = var.MasterNodeShape
45+
46+
dynamic "shape_config" {
47+
for_each = local.is_flexible_masternode_shape ? [1] : []
48+
content {
49+
memory_in_gbs = var.MasterNode_Flex_Shape_Memory
50+
ocpus = var.MasterNode_Flex_Shape_OCPUS
51+
}
52+
}
53+
3454
depends_on = [oci_core_instance.BastionHost]
3555

3656
create_vnic_details {
@@ -39,11 +59,12 @@ resource "oci_core_instance" "ESMasterNode1" {
3959
}
4060

4161
metadata = {
42-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
62+
ssh_authorized_keys = var.ssh_public_key
63+
user_data = data.template_cloudinit_config.cloud_init.rendered
4364
}
4465

4566
source_details {
46-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
67+
source_id = lookup(data.oci_core_images.InstanceImageOCID_MasterNode.images[0], "id")
4768
source_type = "image"
4869
boot_volume_size_in_gbs = var.BootVolSize
4970
}
@@ -60,6 +81,15 @@ resource "oci_core_instance" "ESMasterNode2" {
6081
compartment_id = var.compartment_ocid
6182
display_name = "ESMasterNode2"
6283
shape = var.MasterNodeShape
84+
85+
dynamic "shape_config" {
86+
for_each = local.is_flexible_masternode_shape ? [1] : []
87+
content {
88+
memory_in_gbs = var.MasterNode_Flex_Shape_Memory
89+
ocpus = var.MasterNode_Flex_Shape_OCPUS
90+
}
91+
}
92+
6393
depends_on = [oci_core_instance.BastionHost]
6494

6595
create_vnic_details {
@@ -68,11 +98,12 @@ resource "oci_core_instance" "ESMasterNode2" {
6898
}
6999

70100
metadata = {
71-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
101+
ssh_authorized_keys = var.ssh_public_key
102+
user_data = data.template_cloudinit_config.cloud_init.rendered
72103
}
73104

74105
source_details {
75-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
106+
source_id = lookup(data.oci_core_images.InstanceImageOCID_MasterNode.images[0], "id")
76107
source_type = "image"
77108
boot_volume_size_in_gbs = var.BootVolSize
78109
}
@@ -89,6 +120,15 @@ resource "oci_core_instance" "ESMasterNode3" {
89120
compartment_id = var.compartment_ocid
90121
display_name = "ESMasterNode3"
91122
shape = var.MasterNodeShape
123+
124+
dynamic "shape_config" {
125+
for_each = local.is_flexible_masternode_shape ? [1] : []
126+
content {
127+
memory_in_gbs = var.MasterNode_Flex_Shape_Memory
128+
ocpus = var.MasterNode_Flex_Shape_OCPUS
129+
}
130+
}
131+
92132
depends_on = [oci_core_instance.BastionHost]
93133

94134
create_vnic_details {
@@ -97,11 +137,12 @@ resource "oci_core_instance" "ESMasterNode3" {
97137
}
98138

99139
metadata = {
100-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
140+
ssh_authorized_keys = var.ssh_public_key
141+
user_data = data.template_cloudinit_config.cloud_init.rendered
101142
}
102143

103144
source_details {
104-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
145+
source_id = lookup(data.oci_core_images.InstanceImageOCID_MasterNode.images[0], "id")
105146
source_type = "image"
106147
boot_volume_size_in_gbs = var.BootVolSize
107148
}
@@ -118,18 +159,29 @@ resource "oci_core_instance" "ESDataNode1" {
118159
compartment_id = var.compartment_ocid
119160
display_name = "ESDataNode1"
120161
shape = var.DataNodeShape
162+
163+
dynamic "shape_config" {
164+
for_each = local.is_flexible_datanode_shape ? [1] : []
165+
content {
166+
memory_in_gbs = var.DataNode_Flex_Shape_Memory
167+
ocpus = var.DataNode_Flex_Shape_OCPUS
168+
}
169+
}
170+
121171
depends_on = [oci_core_instance.BastionHost]
122172

123173
create_vnic_details {
124174
subnet_id = oci_core_subnet.PrivSubnetAD1.id
125175
assign_public_ip = false
126176
}
177+
127178
metadata = {
128-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
179+
ssh_authorized_keys = var.ssh_public_key
180+
user_data = data.template_cloudinit_config.cloud_init.rendered
129181
}
130182

131183
source_details {
132-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
184+
source_id = lookup(data.oci_core_images.InstanceImageOCID_DataNode.images[0], "id")
133185
source_type = "image"
134186
boot_volume_size_in_gbs = var.BootVolSize
135187
}
@@ -146,6 +198,15 @@ resource "oci_core_instance" "ESDataNode2" {
146198
compartment_id = var.compartment_ocid
147199
display_name = "ESDataNode2"
148200
shape = var.DataNodeShape
201+
202+
dynamic "shape_config" {
203+
for_each = local.is_flexible_datanode_shape ? [1] : []
204+
content {
205+
memory_in_gbs = var.DataNode_Flex_Shape_Memory
206+
ocpus = var.DataNode_Flex_Shape_OCPUS
207+
}
208+
}
209+
149210
depends_on = [oci_core_instance.BastionHost]
150211

151212
create_vnic_details {
@@ -154,11 +215,12 @@ resource "oci_core_instance" "ESDataNode2" {
154215
}
155216

156217
metadata = {
157-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
218+
ssh_authorized_keys = var.ssh_public_key
219+
user_data = data.template_cloudinit_config.cloud_init.rendered
158220
}
159221

160222
source_details {
161-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
223+
source_id = lookup(data.oci_core_images.InstanceImageOCID_DataNode.images[0], "id")
162224
source_type = "image"
163225
boot_volume_size_in_gbs = var.BootVolSize
164226
}
@@ -175,6 +237,15 @@ resource "oci_core_instance" "ESDataNode3" {
175237
compartment_id = var.compartment_ocid
176238
display_name = "ESDataNode3"
177239
shape = var.DataNodeShape
240+
241+
dynamic "shape_config" {
242+
for_each = local.is_flexible_datanode_shape ? [1] : []
243+
content {
244+
memory_in_gbs = var.DataNode_Flex_Shape_Memory
245+
ocpus = var.DataNode_Flex_Shape_OCPUS
246+
}
247+
}
248+
178249
depends_on = [oci_core_instance.BastionHost]
179250

180251
create_vnic_details {
@@ -183,11 +254,12 @@ resource "oci_core_instance" "ESDataNode3" {
183254
}
184255

185256
metadata = {
186-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
257+
ssh_authorized_keys = var.ssh_public_key
258+
user_data = data.template_cloudinit_config.cloud_init.rendered
187259
}
188260

189261
source_details {
190-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
262+
source_id = lookup(data.oci_core_images.InstanceImageOCID_DataNode.images[0], "id")
191263
source_type = "image"
192264
boot_volume_size_in_gbs = var.BootVolSize
193265
}
@@ -204,6 +276,15 @@ resource "oci_core_instance" "ESDataNode4" {
204276
compartment_id = var.compartment_ocid
205277
display_name = "ESDataNode4"
206278
shape = var.DataNodeShape
279+
280+
dynamic "shape_config" {
281+
for_each = local.is_flexible_datanode_shape ? [1] : []
282+
content {
283+
memory_in_gbs = var.DataNode_Flex_Shape_Memory
284+
ocpus = var.DataNode_Flex_Shape_OCPUS
285+
}
286+
}
287+
207288
depends_on = [oci_core_instance.BastionHost]
208289

209290
create_vnic_details {
@@ -212,11 +293,12 @@ resource "oci_core_instance" "ESDataNode4" {
212293
}
213294

214295
metadata = {
215-
ssh_authorized_keys = tls_private_key.public_private_key_pair.public_key_openssh
296+
ssh_authorized_keys = var.ssh_public_key
297+
user_data = data.template_cloudinit_config.cloud_init.rendered
216298
}
217299

218300
source_details {
219-
source_id = lookup(data.oci_core_images.InstanceImageOCID.images[0], "id")
301+
source_id = lookup(data.oci_core_images.InstanceImageOCID_DataNode.images[0], "id")
220302
source_type = "image"
221303
boot_volume_size_in_gbs = var.BootVolSize
222304
}

cluster/multi-ad/datasources.tf

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
# Gets a list of Availability Domains
25
data "oci_identity_availability_domains" "ADs" {
36
compartment_id = var.tenancy_ocid
@@ -109,10 +112,37 @@ data "oci_core_vnic" "ESDataNode4Vnic" {
109112
vnic_id = data.oci_core_vnic_attachments.ESDataNode4Vnics.vnic_attachments.0.vnic_id
110113
}
111114

112-
data "oci_core_images" "InstanceImageOCID" {
115+
data "oci_core_images" "InstanceImageOCID_Bastion" {
116+
compartment_id = var.compartment_ocid
117+
operating_system = var.instance_os
118+
operating_system_version = var.linux_os_version
119+
shape = var.BastionShape
120+
121+
filter {
122+
name = "display_name"
123+
values = ["^.*Oracle[^G]*$"]
124+
regex = true
125+
}
126+
}
127+
128+
data "oci_core_images" "InstanceImageOCID_MasterNode" {
129+
compartment_id = var.compartment_ocid
130+
operating_system = var.instance_os
131+
operating_system_version = var.linux_os_version
132+
shape = var.MasterNodeShape
133+
134+
filter {
135+
name = "display_name"
136+
values = ["^.*Oracle[^G]*$"]
137+
regex = true
138+
}
139+
}
140+
141+
data "oci_core_images" "InstanceImageOCID_DataNode" {
113142
compartment_id = var.compartment_ocid
114143
operating_system = var.instance_os
115144
operating_system_version = var.linux_os_version
145+
shape = var.DataNodeShape
116146

117147
filter {
118148
name = "display_name"
@@ -121,3 +151,50 @@ data "oci_core_images" "InstanceImageOCID" {
121151
}
122152
}
123153

154+
155+
data "oci_identity_region_subscriptions" "home_region_subscriptions" {
156+
tenancy_id = var.tenancy_ocid
157+
158+
filter {
159+
name = "is_home_region"
160+
values = [true]
161+
}
162+
}
163+
164+
# This Terraform script provisions a compute instance
165+
166+
data "template_file" "key_script" {
167+
template = file("./scripts/sshkey.tpl")
168+
vars = {
169+
ssh_public_key = tls_private_key.public_private_key_pair.public_key_openssh
170+
}
171+
}
172+
173+
data "template_cloudinit_config" "cloud_init" {
174+
gzip = true
175+
base64_encode = true
176+
177+
part {
178+
filename = "ainit.sh"
179+
content_type = "text/x-shellscript"
180+
content = data.template_file.key_script.rendered
181+
}
182+
}
183+
184+
data "template_file" "key_script_bastion" {
185+
template = file("./scripts/BastionBootStrap.sh")
186+
vars = {
187+
ssh_public_key = tls_private_key.public_private_key_pair.public_key_openssh
188+
}
189+
}
190+
191+
data "template_cloudinit_config" "cloud_init_bastion" {
192+
gzip = true
193+
base64_encode = true
194+
195+
part {
196+
filename = "ainit.sh"
197+
content_type = "text/x-shellscript"
198+
content = data.template_file.key_script_bastion.rendered
199+
}
200+
}

cluster/multi-ad/lbaas.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
resource "oci_load_balancer_load_balancer" "ES-LB" {
25
compartment_id = var.compartment_ocid
36
display_name = "ES-LB"
47
shape = var.lb_shape
8+
9+
dynamic "shape_details" {
10+
for_each = local.is_flexible_lb_shape ? [1] : []
11+
content {
12+
minimum_bandwidth_in_mbps = var.flex_lb_min_shape
13+
maximum_bandwidth_in_mbps = var.flex_lb_max_shape
14+
}
15+
}
16+
517
subnet_ids = [oci_core_subnet.LBSubnetAD1.id, oci_core_subnet.LBSubnetAD2.id]
618
is_private = "false"
719
depends_on = [

cluster/multi-ad/network.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
resource "oci_core_virtual_network" "OCI_ES_VCN" {
25
cidr_block = var.VCN-CIDR
36
compartment_id = var.compartment_ocid

cluster/multi-ad/outputs.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## Copyright (c) 2020, Oracle and/or its affiliates.
2+
## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
3+
14
# Output the private and public IPs of the instance
25

36
output "BastionPublicIP" {

0 commit comments

Comments
 (0)