1+ // Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
2+ // Licensed under the Mozilla Public License v2.0
3+
4+ variable "vm_multi_attach_instance_shape" {
5+ default = " VM.Standard2.1"
6+ }
7+
8+ resource "oci_core_volume" "test_block_volume_multi_attach" {
9+ availability_domain = data. oci_identity_availability_domain . ad . name
10+ compartment_id = var. compartment_ocid
11+ display_name = " test_attach_existing_volume_on_instance_launch_1"
12+ size_in_gbs = var. db_size
13+ }
14+
15+ resource "oci_core_instance" "test_vm_multi_attach_instance_launch" {
16+ availability_domain = data. oci_identity_availability_domain . ad . name
17+ compartment_id = var. compartment_ocid
18+ display_name = " test_vm_multi_attach_instance"
19+ shape = var. vm_multi_attach_instance_shape
20+
21+ create_vnic_details {
22+ subnet_id = oci_core_subnet. test_subnet . id
23+ display_name = " primary_vnic"
24+ assign_public_ip = true
25+ hostname_label = " tfexampleshinstance"
26+ }
27+
28+ source_details {
29+ source_type = " image"
30+ source_id = var. instance_image_ocid [var . region ]
31+ # Apply this to set the size of the boot volume that is created for this instance.
32+ # Otherwise, the default boot volume size of the image is used.
33+ # This should only be specified when source_type is set to "image".
34+ # boot_volume_size_in_gbs = "60"
35+ kms_key_id = var. kms_key_ocid
36+ }
37+
38+ // Create and attach a volume
39+ launch_volume_attachments {
40+ type = " iscsi"
41+ display_name = " test_create_and_attach_volume_on_launch_1"
42+ launch_create_volume_details {
43+ volume_creation_type = " ATTRIBUTES"
44+ compartment_id = var. compartment_ocid
45+ display_name = " test_create_and_attach_volume_on_launch_1"
46+ size_in_gbs = var. db_size
47+ }
48+ }
49+
50+ // Create and attach a volume
51+ launch_volume_attachments {
52+ type = " iscsi"
53+ display_name = " test_create_and_attach_volume_on_launch_2"
54+ launch_create_volume_details {
55+ volume_creation_type = " ATTRIBUTES"
56+ compartment_id = var. compartment_ocid
57+ display_name = " test_create_and_attach_volume_on_launch_2"
58+ size_in_gbs = var. db_size
59+ }
60+ }
61+
62+ // Attach an existing volume
63+ launch_volume_attachments {
64+ type = " iscsi"
65+ display_name = " test_attach_existing_volume_on_launch"
66+ volume_id = oci_core_volume. test_block_volume_multi_attach . id
67+ }
68+
69+ # Apply the following flag only if you wish to preserve the attached boot volume upon destroying this instance
70+ # Setting this and destroying the instance will result in a boot volume that should be managed outside of this config.
71+ # When changing this value, make sure to run 'terraform apply' so that it takes effect before the resource is destroyed.
72+ # preserve_boot_volume = true
73+
74+ // Since preserve_data_volumes_created_at_launch is a required parameter for instances launched with volumes,
75+ // defaulting it to false.
76+ preserve_data_volumes_created_at_launch = false
77+
78+ metadata = {
79+ ssh_authorized_keys = var.ssh_public_key
80+ user_data = base64encode (file (" ./userdata/bootstrap" ))
81+ }
82+ defined_tags = {
83+ " ${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag2.name}" = " awesome-app-server"
84+ }
85+
86+ freeform_tags = {
87+ " freeformkey" = " freeformvalue"
88+ }
89+ timeouts {
90+ create = " 60m"
91+ }
92+ }
0 commit comments