Skip to content

Commit 5f85548

Browse files
afedorchdshelbyo
authored andcommitted
Compute: Instance Pools & Instance Configurations Implementation
1 parent 19ff30f commit 5f85548

27 files changed

+5090
-16
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
## 3.8.1 (Unreleased)
1+
## 3.9.0 (Unreleased)
2+
3+
### Added
4+
- Support for the Instance Pools & Instance Configurations
5+
26
## 3.8.0 (November 28, 2018)
37

48
### Added
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
resource "oci_core_instance" "TFInstance" {
2+
availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[var.availability_domain - 1],"name")}"
3+
compartment_id = "${var.compartment_ocid}"
4+
display_name = "TFInstanceForInstancePool"
5+
shape = "${var.instance_shape}"
6+
7+
create_vnic_details {
8+
subnet_id = "${oci_core_subnet.ExampleSubnet.id}"
9+
display_name = "primaryvnic"
10+
assign_public_ip = true
11+
hostname_label = "tfexampleinstance${count.index}"
12+
}
13+
14+
source_details {
15+
source_type = "image"
16+
source_id = "${var.instance_image_ocid[var.region]}"
17+
}
18+
19+
timeouts {
20+
create = "60m"
21+
}
22+
}
23+
24+
resource "oci_core_image" "TFCustomImage" {
25+
compartment_id = "${var.compartment_ocid}"
26+
instance_id = "${oci_core_instance.TFInstance.id}"
27+
launch_mode = "NATIVE"
28+
29+
timeouts {
30+
create = "30m"
31+
}
32+
}
33+
34+
resource "oci_core_instance_configuration" "TFInstanceConfiguration" {
35+
compartment_id = "${var.compartment_ocid}"
36+
display_name = "TFExampleInstanceConfiguration"
37+
38+
instance_details {
39+
instance_type = "compute"
40+
41+
launch_details {
42+
compartment_id = "${var.compartment_ocid}"
43+
ipxe_script = "ipxeScript"
44+
shape = "${var.instance_shape}"
45+
display_name = "TFExampleInstanceConfigurationLaunchDetails"
46+
47+
create_vnic_details {
48+
assign_public_ip = true
49+
display_name = "TFExampleInstanceConfigurationVNIC"
50+
skip_source_dest_check = false
51+
}
52+
53+
extended_metadata {
54+
some_string = "stringA"
55+
nested_object = "{\"some_string\": \"stringB\", \"object\": {\"some_string\": \"stringC\"}}"
56+
}
57+
58+
source_details {
59+
source_type = "image"
60+
image_id = "${oci_core_image.TFCustomImage.id}"
61+
}
62+
}
63+
}
64+
}
65+
66+
resource "oci_core_instance_pool" "TFInstancePool" {
67+
compartment_id = "${var.compartment_ocid}"
68+
instance_configuration_id = "${oci_core_instance_configuration.TFInstanceConfiguration.id}"
69+
size = 2
70+
state = "RUNNING"
71+
display_name = "TFInstancePool"
72+
73+
placement_configurations = [{
74+
availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[var.availability_domain - 1],"name")}"
75+
primary_subnet_id = "${oci_core_subnet.ExampleSubnet.id}"
76+
}]
77+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Gets a list of Availability Domains
2+
data "oci_identity_availability_domains" "ADs" {
3+
compartment_id = "${var.tenancy_ocid}"
4+
}
5+
6+
data "oci_core_instance_configuration" TFInstanceConfigurationDatasource {
7+
instance_configuration_id = "${oci_core_instance_configuration.TFInstanceConfiguration.id}"
8+
}
9+
10+
data "oci_core_instance_configurations" TFInstanceConfigurationDatasources {
11+
compartment_id = "${var.compartment_ocid}"
12+
13+
filter {
14+
name = "id"
15+
values = ["${oci_core_instance_configuration.TFInstanceConfiguration.id}"]
16+
}
17+
}
18+
19+
data "oci_core_instance_pool" "TFInstancePoolDatasource" {
20+
instance_pool_id = "${oci_core_instance_pool.TFInstancePool.id}"
21+
}
22+
23+
data "oci_core_instance_pools" "TFInstancePoolDatasources" {
24+
compartment_id = "${var.compartment_ocid}"
25+
display_name = "TFInstancePool"
26+
state = "RUNNING"
27+
28+
filter {
29+
name = "id"
30+
values = ["${oci_core_instance_pool.TFInstancePool.id}"]
31+
}
32+
}
33+
34+
data "oci_core_instance_pool_instances" "TFInstancePoolInstanceDatasources" {
35+
compartment_id = "${var.compartment_ocid}"
36+
instance_pool_id = "${oci_core_instance_pool.TFInstancePool.id}"
37+
display_name = "TFInstancePool"
38+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
### Authentication details
2+
export TF_VAR_tenancy_ocid="<tenancy OCID>"
3+
export TF_VAR_user_ocid="<user OCID>"
4+
export TF_VAR_fingerprint="<PEM key fingerprint>"
5+
export TF_VAR_private_key_path="<path to the private key that matches the fingerprint above>"
6+
7+
### Region
8+
export TF_VAR_region="<region in which to operate, example: us-ashburn-1, us-phoenix-1>"
9+
10+
### Compartment
11+
export TF_VAR_compartment_ocid="<compartment OCID>"
12+
13+
### Public/private keys used on the instance
14+
export TF_VAR_ssh_public_key=$(cat <path to public key>)
15+
export TF_VAR_ssh_private_key=$(cat <path to private key>)
16+
## NOTE: These are not your api keys. More info on the right keys see
17+
## https://docs.us-phoenix-1.oraclecloud.com/Content/Compute/Tasks/managingkeypairs.htm
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
resource "oci_core_virtual_network" "ExampleVCN" {
2+
cidr_block = "10.1.0.0/16"
3+
compartment_id = "${var.compartment_ocid}"
4+
display_name = "TFExampleVCN"
5+
dns_label = "tfexamplevcn"
6+
}
7+
8+
resource "oci_core_subnet" "ExampleSubnet" {
9+
availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[var.availability_domain - 1],"name")}"
10+
cidr_block = "10.1.20.0/24"
11+
display_name = "TFExampleSubnet"
12+
dns_label = "tfexamplesubnet"
13+
security_list_ids = ["${oci_core_virtual_network.ExampleVCN.default_security_list_id}"]
14+
compartment_id = "${var.compartment_ocid}"
15+
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
16+
route_table_id = "${oci_core_route_table.ExampleRT.id}"
17+
dhcp_options_id = "${oci_core_virtual_network.ExampleVCN.default_dhcp_options_id}"
18+
}
19+
20+
resource "oci_core_internet_gateway" "ExampleIG" {
21+
compartment_id = "${var.compartment_ocid}"
22+
display_name = "TFExampleIG"
23+
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
24+
}
25+
26+
resource "oci_core_route_table" "ExampleRT" {
27+
compartment_id = "${var.compartment_ocid}"
28+
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
29+
display_name = "TFExampleRouteTable"
30+
31+
route_rules {
32+
destination = "0.0.0.0/0"
33+
destination_type = "CIDR_BLOCK"
34+
network_entity_id = "${oci_core_internet_gateway.ExampleIG.id}"
35+
}
36+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
provider "oci" {
2+
tenancy_ocid = "${var.tenancy_ocid}"
3+
user_ocid = "${var.user_ocid}"
4+
fingerprint = "${var.fingerprint}"
5+
private_key_path = "${var.private_key_path}"
6+
region = "${var.region}"
7+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
variable "tenancy_ocid" {}
2+
variable "user_ocid" {}
3+
variable "fingerprint" {}
4+
variable "private_key_path" {}
5+
variable "region" {}
6+
7+
variable "compartment_ocid" {}
8+
9+
variable "instance_shape" {
10+
default = "VM.Standard1.1"
11+
}
12+
13+
variable "instance_image_ocid" {
14+
type = "map"
15+
16+
default = {
17+
// See https://docs.us-phoenix-1.oraclecloud.com/images/
18+
// Oracle-provided image "Oracle-Linux-7.4-2018.02.21-1"
19+
us-phoenix-1 = "ocid1.image.oc1.phx.aaaaaaaaupbfz5f5hdvejulmalhyb6goieolullgkpumorbvxlwkaowglslq"
20+
21+
us-ashburn-1 = "ocid1.image.oc1.iad.aaaaaaaajlw3xfie2t5t52uegyhiq2npx7bqyu4uvi2zyu3w3mqayc2bxmaa"
22+
eu-frankfurt-1 = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaa7d3fsb6272srnftyi4dphdgfjf6gurxqhmv6ileds7ba3m2gltxq"
23+
uk-london-1 = "ocid1.image.oc1.uk-london-1.aaaaaaaaa6h6gj6v4n56mqrbgnosskq63blyv2752g36zerymy63cfkojiiq"
24+
}
25+
}
26+
27+
# Choose an Availability Domain
28+
variable "availability_domain" {
29+
default = "3"
30+
}

0 commit comments

Comments
 (0)