SlideShare a Scribd company logo
Copyright, 2020 RheoData and affiliates
Terraform & Oracle Cloud Infrastructure
in 30 minutes
Bobby Curtis, MBA
RheoData
2020
@rheodatallc / @dbasolved
#OracleCode
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
Speaker
@dbasolved | @rheodatallc
Bobby.Curtis@rheodata.com
Copyright, 2020 RheoData and affiliates
Copyright, 2020 RheoData and affiliates
Multi-Cloud Opportunities
+
• Move interdependent enterprise
applications to the cloud
• Deploy custom and packaged application
• Develop cloud native, enterprise
applications
• Cross-Cloud Interconnect
• Unified IAM
• Jointly tested, validated deployment
architectures, best practices
• Collaborative support model
https://www.oracle.com/cloud/azure-interconnect.html
• Innovate across clouds
• Choice
• Maximize ROI
Advantages Possible Now New Capabilities
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
Basics
init
validate
plan apply
terraform init
– used to initialize a
working directory with
Terraform files.
– Some validation done
as well
terraform validate
– validates the config
files in a directory
terraform plan
– creates execution plan
– performs a refresh,
unless explicitly disabled
– determines what
needs to be done
terraform apply
– scans the current
directory for the
configuration and
applies changes
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
OCI Provider
provider "oci" {
version = ">= 3.76.0"
region = var.region
tenancy_ocid = var.tenancy_ocid
user_ocid = var.user_ocid
fingerprint = var.fingerprint
private_key_path = var.private_key_path
}
Use of variables file is highly
recommended!
Regions
- locations/data centers
where the workload is
built
Tenancy OCID
- account name when
initially setting up a
cloud account
User OCID
- Identifier that
identifies the user login
into the cloud
Fingerprint
- alpha/numeric string
that will be specific to
public SSH key.
- needed for API access
Key Path
- Location of SSH
private key on localhost
Copyright, 2020 RheoData and affiliates
OCI Modules
• Modules for most item in
OCI
• IAM -> Identity
• VCN – Virtual Network
• Compute – Compute Nodes
• Most OCI Modules written in
0.11
• Use latest version available
• Downloaded Modules
• .terraform/modules
Copyright, 2020 RheoData and affiliates
Upgrading Code/Modules
$ cd <directory>
$ terraform 0.12upgrade <module_path>
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
Layout
Oracle/OCI
|
/.terraform/modules
/compute-instance/terraform-oci-compute-instance-2.01
-- main.tf
-- variables.tf
-- output.tf
/vcn/terraform-oci-vcn-1.0.1
-- main.tf
-- variables.tf
-- locals.tf
-- nat.tf
-- servicegateway.tf
-- vcn.tf
|
-- main.tf
-- variables.tf
-- output.tf
Copyright, 2020 RheoData and affiliates
Backend
########################
# Backend
########################
terraform {
backend "http" {
address = "https://objectstorage.us-ashburn-
1.oraclecloud.com/p/Zi1rw_y.........EA4HjMwEU2zaaBmx71sas_oU/n/idtlingilfcy/b/bucket-
terraform/o/terraform.tfstate"
update_method = "PUT"
}
}
HTTP support: uses a cURL-based HTTP command to push/pull state from object store
S3-Compatible support: more complex to setup, requires AWS keys
Pre-Authenticated Requests: enables accessing a bucket or object in OCI without providing credentials/time-based.
Copyright, 2020 RheoData and affiliates
Compartments
##########################
# Compartments - Custom
##########################
resource "oci_identity_compartment" "test_compartment" {
#Required
# ocid1.tenancy.oc1..aaaaaaaaojorxdfprzt2sx75lweivou6xeomto4gvjxuuyraxcdakff4dujq
compartment_id = var.root_compartment_ocid #Compartment to build in
# This is a testing compartment
description = var.compartment_description #Description for the compartment
# testing2
name = var.compartment_name #Name of the compartment
}
data "oci_identity_compartments" "test_compartments" {
compartment_id = var.tenancy_ocid
compartment_id_in_subtree = true
}
output "compartment_info" {
value = data.oci_identity_compartments.test_compartments.compartments
}
Copyright, 2020 RheoData and affiliates
#########################
# Compute Instance - OCI Provided
#########################
module "compute-instance" {
source = "oracle-terraform-modules/compute-instance/oci"
version = "2.0.1"
#Required Info
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaade5bxtniugmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq"
source_ocid = "ocid1.image.oc1.iad.aaaaaaaawtb4qxiwri5z2qjeey4zpzqpv2rtxhddzpbvojw2e2c2jevmthva"
ssh_authorized_keys = "~/.ssh/id_rsa.pub"
subnet_ocids = ["ocid1.subnet.oc1.iad.aaaaaaaamlgotv3goqjfihx53abpatmajjh45h32vljzfq3nsvwoqhqmouda"]
#Optional Info
instance_count = "1"
shape = "VM.Standard2.1"
instance_display_name = "Test-Linux"
}
output "compute_info" {
value = [
"ID", module.compute-instance.instance_id,
"Private", module.compute-instance.private_ip,
"Public", module.compute-instance.public_ip
]
}
Compute Instances
Autonomous Database(s)
• No OCI certified modules available
• Deprecated Resources by version
• Write custom
oci_database_autonomous_database
Autonomous Database(s)
##############################
# OCI - Autonomous Database(s)
##############################
resource "oci_database_autonomous_database" "demo_adb" {
#Required
admin_password = "WElcome12345##"
compartment_id =
"ocid1.compartment.oc1..aaaaaaaade5bxtniugmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq"
cpu_core_count = "1"
data_storage_size_in_tbs = "1"
db_name = "RDADB1"
#Optional
db_version = "19c"
db_workload = "OLTP"
display_name = "RDADB1"
is_free_tier = "false"
license_model = "BRING_YOUR_OWN_LICENSE"
source = "NONE"
}
output "demo_adb_ocid" {
value = oci_database_autonomous_database.demo_adb.id
}
Copyright, 2020 RheoData and affiliates
Kubernetes (OKE)
• Oracle Container Engine (OKE) is Oracle’s managed Kubernetes service
• Lots of components within OCI – OCI module is best option
module "oke" {
source = "oracle-terraform-modules/oke/oci"
version = "2.2.2"
#Required
api_fingerprint = var.fingerprint
api_private_key_path = "~/.ssh/id_rsa"
compartment_id = "ocid1.compartment.oc1……gmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq"
existing_key_id = "ocid1.key.oc1.iad.bbppj6k3aacuu.a……tsnq3ldofns5czn7vyzvxnvvnliq"
region = var.region
secret_id = "ocid1.vault.oc1.iad.bbppj6k3aacuu………w5e5mc6rhxcm7mzytdbsqt6g6ozaftjtj4uegbmwcuya"
service_account_cluster_role_binding = "clustertestbinding"
tenancy_id = var.tenancy_ocid
user_id = var.user_ocid
#Optional
ssh_public_key_path = "~/.ssh/id_rsa.pub"
}
Copyright, 2020 RheoData and affiliates
Stacks & Jobs
Code Zip Upload & Run
Copyright, 2020 RheoData and affiliates
Roadmap
Introduction
Terraform Basics
OCI Provider & Modules
Coding Examples
Q & A
Copyright, 2020 RheoData and affiliates
Questions
Copyright, 2020 RheoData and affiliates
Contact RheoData
solutions@rheodata.com
@rheodatallc
http://rheodata.com
#OracleCode

More Related Content

What's hot (20)

PDF
Rancher Simple User Guide
SANG WON PARK
 
PDF
GitOps with Amazon EKS Anywhere by Dan Budris
Weaveworks
 
PDF
Monitoring Kubernetes with Prometheus
Grafana Labs
 
PPTX
Terraform 101
Pradeep Loganathan
 
PPTX
Terraform
Phil Wilkins
 
PDF
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
 
PDF
Kubernetes 101
Crevise Technologies
 
PDF
Terraform 101
Haggai Philip Zagury
 
PPTX
Monitoring_with_Prometheus_Grafana_Tutorial
Tim Vaillancourt
 
PDF
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Guido Schmutz
 
PPTX
Comprehensive Terraform Training
Yevgeniy Brikman
 
PPTX
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
PDF
Terraform GitOps on Codefresh
Codefresh
 
PPTX
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Adrian Todorov
 
PPTX
Amazon EKS Deep Dive
Andrzej Komarnicki
 
PPTX
Intro to Azure DevOps
Lorenzo Barbieri
 
PDF
Apache Kafka® and API Management
confluent
 
PPTX
Terraform
An Nguyen
 
PDF
eBPF - Observability In Deep
Mydbops
 
PDF
Terraform: An Overview & Introduction
Lee Trout
 
Rancher Simple User Guide
SANG WON PARK
 
GitOps with Amazon EKS Anywhere by Dan Budris
Weaveworks
 
Monitoring Kubernetes with Prometheus
Grafana Labs
 
Terraform 101
Pradeep Loganathan
 
Terraform
Phil Wilkins
 
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
 
Kubernetes 101
Crevise Technologies
 
Terraform 101
Haggai Philip Zagury
 
Monitoring_with_Prometheus_Grafana_Tutorial
Tim Vaillancourt
 
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Guido Schmutz
 
Comprehensive Terraform Training
Yevgeniy Brikman
 
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Terraform GitOps on Codefresh
Codefresh
 
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Adrian Todorov
 
Amazon EKS Deep Dive
Andrzej Komarnicki
 
Intro to Azure DevOps
Lorenzo Barbieri
 
Apache Kafka® and API Management
confluent
 
Terraform
An Nguyen
 
eBPF - Observability In Deep
Mydbops
 
Terraform: An Overview & Introduction
Lee Trout
 

Similar to Terraform & Oracle Cloud Infrastructure (20)

PPTX
ECO 2022 - OCI and HashiCorp Terraform
Bobby Curtis
 
PDF
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Revelation Technologies
 
PDF
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
Sanae BEKKAR
 
PDF
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Frederic Descamps
 
PDF
Oracle Integration Cloud 概要(20200507版)
オラクルエンジニア通信
 
PDF
Salesforce meetup | Lightning Web Component
Accenture Hungary
 
PPTX
IoT cloud system implemented based on Azure services
Szymon Włodarczyk
 
PDF
Oracle Cloud Infrastructure:2020年6月度サービス・アップデート
オラクルエンジニア通信
 
PPTX
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Lucas Jellema
 
PPT
Architectural solutions for the cloud
threesixty
 
PDF
#dbhouseparty - Spatial Technologies - @Home and Everywhere Else on the Map
Tammy Bednar
 
PPTX
Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Lucas Jellema
 
PDF
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware
 
PDF
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Marc Dutoo
 
PPTX
Use Eclipse technologies to build a modern embedded IDE
Benjamin Cabé
 
PDF
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年6月版]
オラクルエンジニア通信
 
PDF
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
オラクルエンジニア通信
 
PDF
Oracle Cloud Infrastructure:2020年8月度サービス・アップデート
オラクルエンジニア通信
 
PPTX
Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Lucas Jellema
 
PPTX
20180605 sso with apex and adfs the weblogic way
makker_nl
 
ECO 2022 - OCI and HashiCorp Terraform
Bobby Curtis
 
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Revelation Technologies
 
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
Sanae BEKKAR
 
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Frederic Descamps
 
Oracle Integration Cloud 概要(20200507版)
オラクルエンジニア通信
 
Salesforce meetup | Lightning Web Component
Accenture Hungary
 
IoT cloud system implemented based on Azure services
Szymon Włodarczyk
 
Oracle Cloud Infrastructure:2020年6月度サービス・アップデート
オラクルエンジニア通信
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Lucas Jellema
 
Architectural solutions for the cloud
threesixty
 
#dbhouseparty - Spatial Technologies - @Home and Everywhere Else on the Map
Tammy Bednar
 
Cloud Native Application Development-build fast, low TCO, scalable & agile so...
Lucas Jellema
 
OCCIware presentation at EclipseDay in Lyon, November 2017, by Marc Dutoo, Smile
OCCIware
 
Model and pilot all cloud layers with OCCIware - Eclipse Day Lyon 2017
Marc Dutoo
 
Use Eclipse technologies to build a modern embedded IDE
Benjamin Cabé
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年6月版]
オラクルエンジニア通信
 
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
オラクルエンジニア通信
 
Oracle Cloud Infrastructure:2020年8月度サービス・アップデート
オラクルエンジニア通信
 
Make your Cloud Applications Function for real – A Complete Overview of Oracl...
Lucas Jellema
 
20180605 sso with apex and adfs the weblogic way
makker_nl
 
Ad

More from Bobby Curtis (20)

PPTX
Leverage Restful APIs in Oracle GoldenGate
Bobby Curtis
 
PPTX
RheoData_OGG-Classic2Microservices_2024-UKOUG24.pptx
Bobby Curtis
 
PPTX
RheoData_23ai_Vector-Datatype-Webinar-2024.pptx
Bobby Curtis
 
PPTX
MySQLHeatwave-TheBasics.pptx
Bobby Curtis
 
PPTX
Oracle GoldenGate 21c New Features and Best Practices
Bobby Curtis
 
PPTX
Improve PostgreSQL replication with Oracle GoldenGate
Bobby Curtis
 
PPTX
Oracle GoldenGate on Docker
Bobby Curtis
 
PPTX
OOW19 - HOL5221
Bobby Curtis
 
PPTX
Oracle GoldenGate 18c - REST API Examples
Bobby Curtis
 
PPTX
Oracle GoldenGate Performance Tuning
Bobby Curtis
 
PPTX
Hit Refresh with Oracle GoldenGate Microservices
Bobby Curtis
 
PPTX
GoldenGate CDR from UKOUG 2017
Bobby Curtis
 
PPTX
Oracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Bobby Curtis
 
PDF
Oracle GoldenGate Studio Intro
Bobby Curtis
 
PDF
5 Keys to Oracle GoldenGate Implemenations
Bobby Curtis
 
PPTX
Database As A Service: OEM + ODA (OOW 15 Presentation)
Bobby Curtis
 
PPTX
Extreme Replication - Performance Tuning Oracle GoldenGate
Bobby Curtis
 
PPTX
Enable GoldenGate Monitoring with OEM 12c/JAgent
Bobby Curtis
 
PPTX
Extreme replication at IOUG Collaborate 15
Bobby Curtis
 
PPTX
Examining Oracle GoldenGate Trail Files
Bobby Curtis
 
Leverage Restful APIs in Oracle GoldenGate
Bobby Curtis
 
RheoData_OGG-Classic2Microservices_2024-UKOUG24.pptx
Bobby Curtis
 
RheoData_23ai_Vector-Datatype-Webinar-2024.pptx
Bobby Curtis
 
MySQLHeatwave-TheBasics.pptx
Bobby Curtis
 
Oracle GoldenGate 21c New Features and Best Practices
Bobby Curtis
 
Improve PostgreSQL replication with Oracle GoldenGate
Bobby Curtis
 
Oracle GoldenGate on Docker
Bobby Curtis
 
OOW19 - HOL5221
Bobby Curtis
 
Oracle GoldenGate 18c - REST API Examples
Bobby Curtis
 
Oracle GoldenGate Performance Tuning
Bobby Curtis
 
Hit Refresh with Oracle GoldenGate Microservices
Bobby Curtis
 
GoldenGate CDR from UKOUG 2017
Bobby Curtis
 
Oracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Bobby Curtis
 
Oracle GoldenGate Studio Intro
Bobby Curtis
 
5 Keys to Oracle GoldenGate Implemenations
Bobby Curtis
 
Database As A Service: OEM + ODA (OOW 15 Presentation)
Bobby Curtis
 
Extreme Replication - Performance Tuning Oracle GoldenGate
Bobby Curtis
 
Enable GoldenGate Monitoring with OEM 12c/JAgent
Bobby Curtis
 
Extreme replication at IOUG Collaborate 15
Bobby Curtis
 
Examining Oracle GoldenGate Trail Files
Bobby Curtis
 
Ad

Recently uploaded (20)

PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
July Patch Tuesday
Ivanti
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 

Terraform & Oracle Cloud Infrastructure

  • 1. Copyright, 2020 RheoData and affiliates Terraform & Oracle Cloud Infrastructure in 30 minutes Bobby Curtis, MBA RheoData 2020 @rheodatallc / @dbasolved #OracleCode
  • 2. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 3. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 4. Copyright, 2020 RheoData and affiliates Speaker @dbasolved | @rheodatallc [email protected]
  • 5. Copyright, 2020 RheoData and affiliates
  • 6. Copyright, 2020 RheoData and affiliates Multi-Cloud Opportunities + • Move interdependent enterprise applications to the cloud • Deploy custom and packaged application • Develop cloud native, enterprise applications • Cross-Cloud Interconnect • Unified IAM • Jointly tested, validated deployment architectures, best practices • Collaborative support model https://www.oracle.com/cloud/azure-interconnect.html • Innovate across clouds • Choice • Maximize ROI Advantages Possible Now New Capabilities
  • 7. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 8. Copyright, 2020 RheoData and affiliates Basics init validate plan apply terraform init – used to initialize a working directory with Terraform files. – Some validation done as well terraform validate – validates the config files in a directory terraform plan – creates execution plan – performs a refresh, unless explicitly disabled – determines what needs to be done terraform apply – scans the current directory for the configuration and applies changes
  • 9. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 10. Copyright, 2020 RheoData and affiliates OCI Provider provider "oci" { version = ">= 3.76.0" region = var.region tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid fingerprint = var.fingerprint private_key_path = var.private_key_path } Use of variables file is highly recommended! Regions - locations/data centers where the workload is built Tenancy OCID - account name when initially setting up a cloud account User OCID - Identifier that identifies the user login into the cloud Fingerprint - alpha/numeric string that will be specific to public SSH key. - needed for API access Key Path - Location of SSH private key on localhost
  • 11. Copyright, 2020 RheoData and affiliates OCI Modules • Modules for most item in OCI • IAM -> Identity • VCN – Virtual Network • Compute – Compute Nodes • Most OCI Modules written in 0.11 • Use latest version available • Downloaded Modules • .terraform/modules
  • 12. Copyright, 2020 RheoData and affiliates Upgrading Code/Modules $ cd <directory> $ terraform 0.12upgrade <module_path>
  • 13. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 14. Copyright, 2020 RheoData and affiliates Layout Oracle/OCI | /.terraform/modules /compute-instance/terraform-oci-compute-instance-2.01 -- main.tf -- variables.tf -- output.tf /vcn/terraform-oci-vcn-1.0.1 -- main.tf -- variables.tf -- locals.tf -- nat.tf -- servicegateway.tf -- vcn.tf | -- main.tf -- variables.tf -- output.tf
  • 15. Copyright, 2020 RheoData and affiliates Backend ######################## # Backend ######################## terraform { backend "http" { address = "https://objectstorage.us-ashburn- 1.oraclecloud.com/p/Zi1rw_y.........EA4HjMwEU2zaaBmx71sas_oU/n/idtlingilfcy/b/bucket- terraform/o/terraform.tfstate" update_method = "PUT" } } HTTP support: uses a cURL-based HTTP command to push/pull state from object store S3-Compatible support: more complex to setup, requires AWS keys Pre-Authenticated Requests: enables accessing a bucket or object in OCI without providing credentials/time-based.
  • 16. Copyright, 2020 RheoData and affiliates Compartments ########################## # Compartments - Custom ########################## resource "oci_identity_compartment" "test_compartment" { #Required # ocid1.tenancy.oc1..aaaaaaaaojorxdfprzt2sx75lweivou6xeomto4gvjxuuyraxcdakff4dujq compartment_id = var.root_compartment_ocid #Compartment to build in # This is a testing compartment description = var.compartment_description #Description for the compartment # testing2 name = var.compartment_name #Name of the compartment } data "oci_identity_compartments" "test_compartments" { compartment_id = var.tenancy_ocid compartment_id_in_subtree = true } output "compartment_info" { value = data.oci_identity_compartments.test_compartments.compartments }
  • 17. Copyright, 2020 RheoData and affiliates ######################### # Compute Instance - OCI Provided ######################### module "compute-instance" { source = "oracle-terraform-modules/compute-instance/oci" version = "2.0.1" #Required Info compartment_ocid = "ocid1.compartment.oc1..aaaaaaaade5bxtniugmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq" source_ocid = "ocid1.image.oc1.iad.aaaaaaaawtb4qxiwri5z2qjeey4zpzqpv2rtxhddzpbvojw2e2c2jevmthva" ssh_authorized_keys = "~/.ssh/id_rsa.pub" subnet_ocids = ["ocid1.subnet.oc1.iad.aaaaaaaamlgotv3goqjfihx53abpatmajjh45h32vljzfq3nsvwoqhqmouda"] #Optional Info instance_count = "1" shape = "VM.Standard2.1" instance_display_name = "Test-Linux" } output "compute_info" { value = [ "ID", module.compute-instance.instance_id, "Private", module.compute-instance.private_ip, "Public", module.compute-instance.public_ip ] } Compute Instances
  • 18. Autonomous Database(s) • No OCI certified modules available • Deprecated Resources by version • Write custom oci_database_autonomous_database
  • 19. Autonomous Database(s) ############################## # OCI - Autonomous Database(s) ############################## resource "oci_database_autonomous_database" "demo_adb" { #Required admin_password = "WElcome12345##" compartment_id = "ocid1.compartment.oc1..aaaaaaaade5bxtniugmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq" cpu_core_count = "1" data_storage_size_in_tbs = "1" db_name = "RDADB1" #Optional db_version = "19c" db_workload = "OLTP" display_name = "RDADB1" is_free_tier = "false" license_model = "BRING_YOUR_OWN_LICENSE" source = "NONE" } output "demo_adb_ocid" { value = oci_database_autonomous_database.demo_adb.id }
  • 20. Copyright, 2020 RheoData and affiliates Kubernetes (OKE) • Oracle Container Engine (OKE) is Oracle’s managed Kubernetes service • Lots of components within OCI – OCI module is best option module "oke" { source = "oracle-terraform-modules/oke/oci" version = "2.2.2" #Required api_fingerprint = var.fingerprint api_private_key_path = "~/.ssh/id_rsa" compartment_id = "ocid1.compartment.oc1……gmwuiynsonpq74fo2djk6hd64qu3lzw2xybym4svyhq" existing_key_id = "ocid1.key.oc1.iad.bbppj6k3aacuu.a……tsnq3ldofns5czn7vyzvxnvvnliq" region = var.region secret_id = "ocid1.vault.oc1.iad.bbppj6k3aacuu………w5e5mc6rhxcm7mzytdbsqt6g6ozaftjtj4uegbmwcuya" service_account_cluster_role_binding = "clustertestbinding" tenancy_id = var.tenancy_ocid user_id = var.user_ocid #Optional ssh_public_key_path = "~/.ssh/id_rsa.pub" }
  • 21. Copyright, 2020 RheoData and affiliates Stacks & Jobs Code Zip Upload & Run
  • 22. Copyright, 2020 RheoData and affiliates Roadmap Introduction Terraform Basics OCI Provider & Modules Coding Examples Q & A
  • 23. Copyright, 2020 RheoData and affiliates Questions
  • 24. Copyright, 2020 RheoData and affiliates Contact RheoData [email protected] @rheodatallc http://rheodata.com #OracleCode