SlideShare a Scribd company logo
1 of 52
Download to read offline
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
www.oradba.ch@stefanoehrli
Oracle Cloud deployment with Terraform
How to automate deployment of OCI resources
Stefan Oehrli
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
Stefan Oehrli
Platform Architect, Trainer and Partner at Trivadis
• Since 1997 active in various IT areas
• Since 2008 with Trivadis AG
• More than 20 years of experience in Oracle databases
Focus: Protecting data and operating databases securely
• Security assessments and reviews
• Database security concepts and their implementation
• Oracle Backup & Recovery concepts and troubleshooting
• Oracle Enterprise User Security, Advanced Security, Database Vault, …
• Oracle Directory Services
Co-author of the book The Oracle DBA (Hanser, 2016/07)
@stefanoehrli www.oradba.ch
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform3
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform5
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform6
Introduction
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform7
• Different methods to provision resources in clouds
• First introduction usually OCI Console
• Browser based UI e.g.
https://console.eu-zurich-1.oraclecloud.com
• No automation
• Further methods provided by Oracle
• Oracle Cloud Command Line Interface oci-cli
• Oracle Cloud Infrastructure REST APIs
• Several OCI SDKs for common languages e.g. Phyton, Java, …
• Oracle Cloud Infrastructure Cloud (OCI) Shell
• None to moderate automation
Introduction
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform8
• The SDK and REST API based approaches usually requires programming
• Time consuming
• Imperative vs. declarative
• Everything must be specified explicitly
• I once built an OCI based training environment with oci-cli
• oci-cli and bash at its best…
• The key word is infrastructure as code (IaC)
• Management of infrastructure in a descriptive model
• same source code generates the same environment
• key DevOps practice
• Several popular IaC Tools available
• Chef, Puppet, Ansible, SaltStack, CloudFormation, Terraform, …
• Whereby the fields of application more or less differ
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform9
Terraform in a Nutshell
Source: Universe Today The Definitive Guide To Terraforming (February 2016)
Terraform History
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform11
• Terraform for Generation X
• dictionary.com: To alter the environment of (a celestial body)
in order to make capable of supporting
terrestrial life forms
• Pure science fiction J …
• … frequently a topic in SF books, films, TV series, etc. (Star Trek vs Star Wars)
• Terraform for Millennials
• Open Source Software by HashiCorp
• Initial release mid 2014, current stable release 0.13.4
• Infrastructure as code software tool
• Declarative configuration language
• Written in go (see https://github.com/hashicorp/terraform)
• Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently
One ring to rule them all…
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform12
• Almost any infrastructure can be represented as a resource in Terraform
• Terraform uses a declarative and not procedural language
• It generates an execution plan…
• … executes it to build the described infrastructure
• Terraform and its declarative configuration language is not generic
• Configurations cannot simply be deployed on any cloud
• Usually they have to be rewritten for other cloud providers
• Terraform is cloud-agnostic
• Each configuration is bound to a cloud provider
• The current state of an Infrastructure has to be maintained by terraform
• Kept in a state file terraform.tfstate
• Used to plan and apply changes to an infrastructure
Terraform Components
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform13
• Configuration Language
• A language describing an intended goal rather than the steps to reach that goal
• Providers - are responsible for understanding API interactions and exposing resources
• They tell Terraform how to build and manage one or many resource types
• Available via Terraform Registry or GitHub (https://github.com/terraform-providers)
• Modules – are containers for multiple resources that are used together
• Can be used to create abstraction
• Modules itself can use other modules
• Available via Terraform Registry, local path or source control (github, bucket,…)
• Backends - determines how state is loaded and how an operation such as apply is executed
Terraform Provider
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform14
Terraform Provider
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform15
• Providers are supplied by …
• … Hashicorp
• … a resource provider
• … 3rd party/community
• The providers are either be
• Integrated downloaded by Terraform when needed
• Non-integrated own or 3rd party provider manually installed
• There are three Oracle Provider available
• Oracle Cloud Infrastructure (OCI) provider see
https://registry.terraform.io/providers/hashicorp/oci/latest
• Oracle Platform Cloud provider see
https://registry.terraform.io/providers/hashicorp/oraclepaas/latest
• Oracle Cloud Infrastructure Classic provider see
https://registry.terraform.io/providers/hashicorp/opc/latest
Terraform OCI Provider
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform16
• OCI Provider in Terraform Registry https://registry.terraform.io/providers/hashicorp/oci/latest
• Link to source including examples
• Link to documentation
Terraform and other IaC Tools
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform17
• Terraform is used to …
• … create immutable infrastructures
• … describe an infrastructure rather than define the procedure to how to provision it
• … is declarative
• … focus on provisioning e.g. it is not a configuration management tool
• … does deploy version x of IaC to … e.g. does not “upgrade” a infrastructure
• Alternatives to Terraform are available
• Tools like Ansible, Puppet and Chef
• Do build mutable infrastructure
• Are rather a configuration management
• In most cases procedural
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform18
brew install terraform
user@gaia:~/ [ic19300] terraform -version
Terraform v0.13.5
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform19
First Steps - Installation
• Available for common OS e.g. Linux, MacOS, Windows, Solaris etc.
https://www.terraform.io/downloads.html
• Recommended to use the latest stable release
• Terraform 0.13.4 introduced a couple of features like loop/count support for modules
• Installation on MacOS is straight forward using brew
• Copy the public key to your user account
• Go to User Settings
• Click API Keys
• Click Add Public Key
•
mkdir $HOME/.oci
openssl genrsa -out $HOME/.oci/oci_user.pem 2048
chmod 600 $HOME/.oci/oci_user.pem
openssl rsa -pubout -in $HOME/.oci/oci_user.pem 
-out $HOME/.oci/ oci_user_public.pem
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform20
First Steps - Configure
• OCI Terraform Provider requires configuration to be able to access OCI resources
• Create RSA keys to authenticate against OCI
• Configure Terraform Provider
• An example
First Steps - Configure
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform21
• Gather Required Information from OCI Console
• Tenancy OCID: <tenancy-ocid>
• From your user avatar, go to Tenancy:<your-tenancy> and copy OCID
• User OCID: <user-ocid>
• From your user avatar, go to User Settings and copy OCID.
• Fingerprint: <fingerprint>
• From your user avatar, go to User Settings and click API Keys
• Copy the fingerprint associated with the RSA public key you made before
• Region: <region-identifier>
• From the top navigation bar, find your region
provider "oci" {
tenancy_ocid = "ocid1.tenancy.oc1..aaaaaxuk4je4tqv3nz64s4dmq…"
user_ocid = "ocid1.user.oc1..aaaadwaaqddbuc3sws4ad4kezkmq…"
fingerprint = "4d:e7:ff:8b:35:a9:c9:c7:3e:c9:1f:2a:c7:34:54:00"
private_key_path = ".oci/oci_user.pem"
region = "eu-zurich-1"
}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform22
First Steps - Configure
• Create a folder for your Terraform configuration e.g. test
• Create a simple file provider.tf with the information collected above.
• For testing this might be ok
• But if you store the config in version control, you would store your credential information
• It is higly recommended to define variables and store information outside of your config
• E.g. environment variables
• Dedicated Variable file e.g. variables.tf
provider "oci" {
tenancy_ocid = var.tenancy_ocid
user_ocid = var.user_ocid
fingerprint = var.fingerprint
private_key_path = var.private_key_path
region = var.region
}
variable "user_ocid" {
description = "user OCID used to access OCI"
type = string
}
variable "fingerprint" {}
variable "private_key_path" {}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform23
First Steps - Configure
• Same provider.tf file with variables
• Or as environment variable with the prefix TF_VAR
# provider identity parameters ------------------------------------
region = "eu-zurich-1"
export TF_VAR_fingerprint="d4:d7:af:8b:c1:f9:c9:b7:3e:c9:1f:2a:c7:3b:54:00"
export TF_VAR_user_ocid="ocid1.user.oc1..aaaadwaaqddbuc3sws4ad4kezkmq…"
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform24
First Steps - Configure
• The values can then either be defined in a terraform.tfvars file
• Keep the authentication information separate from your terraform configuration
• Can be reused for other configurations
• Validate your terraform configuration
terraform init
terraform validate
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform25
First Steps – Init, Plan, Apply
• Initialize the terraform configuration
• this will create the .terraform folder and download required providers / modules
• Plan the terraform provisioning
terraform plan –out=test.tfplan
• Apply the plan
terraform apply test.tfplan
• Results will be shown by the output
data "oci_core_images" "oracle_images" {
compartment_id = var.compartment_id
operating_system = var.ux_host_os
sort_by = "TIMECREATED"
}
output "oracle_images" {
description = "List of available Oracle Images."
value = data.oci_core_images.oracle_images
}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform26
First Steps – What's inside
• A simple data source to ”query” information in OCI
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform27
Next Steps
• Example was rather simple
• OCI Provider does provide a couple of resources and data sources, see
https://registry.terraform.io/providers/hashicorp/oci/latest/docs
• Comprehensive provider documentation with examples
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform28
Next Steps
• Start to build small infrastructure configuration
• Combine them if necessary e.g.
• Configuration for a Network / VCN setup
• Configuation for an Autonomouse Database
• Avoid to create a huge infrastructur configuration
• Here again “One ring to rule them all,…” does not make sense
• It gets cumbersome
• Source for failure does increase
• Start to consider using Modules
• Define reusable Infrastructure components
• Container for multiple resources that are used together
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform29
Modules
• Modules generally define at least the following configuration:
• Input variables to accept values from the calling module
• Output values to return results to the calling module
• Resources to define one or more infrastructure objects that the module will manage
• Terraform recommend to follow a standard structure for the module incl. files and folder
• Root module
• README file documenting the module
• Configuration files main.tf, variables.tf, outputs.tf
• Example how to use the module
• Nested modules
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform30
module "lab_compartment" {
source = "../modules/lab_compartment"
lab_compartment_name = var.tag_tvd_training
base_compartment_ocid = var.training_compartment_ocid
}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform31
Module Sources
• Modules are eiterh local or in a remote location
• Specified by the source argument in the module blocke
• Remote locations for Modules are…
• … Terraform Registry, which are usually also in a GitHub repository
• … GitHuB, Bitbucket or a generic git repository
• … http URLs and buckets like S3 or GCS
• Terraform will download / copy modules in use to the local .terraform folder
module "tvdlab-vcn" {
source = "Trivadis/tvdlab-vcn/oci”
version = "1.1.3"
# insert the 2 required variables here
}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform32
Terraform Registry
• Directly integrated into Terraform
• Terraform will download required providers or module during terraform init
• Location for integrations (providers) and configuration packages (modules)
• developed by HashiCorp
• Third party vendors
• Terraform community
• Does provide basic documentation depending on source
• Readme, input/output values, dependencies and resource
Terraform Registry
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform33
Trivadis OCI Module - tvdlab-base
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform34
• Combinded Module in Terraform Repository
• Depends on
• tvdlab-bastion to build a bastion host
• tvdlab-db to build a db host
• tvdlab-vcn to build a VCN
• Based on Oracle Module with similar use cases
• But do support count to create n-number of similar instances
• Base Module to build training / lab environments
• VCN setup with a public and private network
• Accessible via bastion host
• Access via SSH or HTTP guacamole
Trivadis OCI Module
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform35
Trivadis LAB
• Trivadis Training start using OCI for there Oracle Based Trainings
• Setup and Configure Infrastructure using Terraform
• Define reusable components e.g. Modules
• Module for VCN with private and public subnet
• Module for Bastion host with dedicated bootstrap script
• Module for compute instance
• Module for other resources
• Provision the number of environments based on trainis
• Simply specify TF_VAR_tvd_participants to add n-numbers of environments
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform36
Trivadis LAB – O-SEC
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform37
.
├── O-SEC.tfplan
├── README.md
├── additional_oud_host.tf
├── additional_win_host.tf
├── compartment.tf
├── datasource.tf
├── etc
│ └── README.md
├── local.tf
├── main.tf
├── outputs.tf
├── provider.tf
├── scripts
│ ├── README.md
│ ├── bootstrap_bastion.sh
│ └── dbv.sql
├── terraform.tfvars
└── variables.tf
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform38
Trivadis LAB – O-SEC
Trivadis LAB – O-AI
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform39
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform40
terraform {
required_version = ">= 0.13.0"
backend "http" {
update_method = "PUT"
address = "https://objectstorage.eu-zurich-1.../terraform.tfstate"
}
}
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform41
Good Practice
• Use Terraform relatively early in your OCI journey
• Use a version control system preferable git
• Create separate repository for configuration, modules etc
• Store the *.tfstate file centrally e.g. in OCI object storage
• Alternatively other backends are supported
Good Practice
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform42
• Use the latest version of Terraform at least 0.13.x
• Support for count/loop etc in modules
• In particular if you start from scratch any way
• Keep your TF configuration simple
• Create multiple files
• Separate by compartments etc.
• Be careful when re-run apply
• A new bootstrap script can cause the compute instance to be recreated
• Do not use -auto-approve or –force
• This means an apply makes changes without prompting
• Your resources can be gone faster than you would like
Good Practice
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform43
• Have a clear strategy when to use TF & when not
• Probably combination with HashiCorp Packer, Ansible etc
• Update your OCI provider regularly
• It can happen that you are forced to do this at the wrong moment
• Just quickly make a small change...
• Use a Tool like VS Code with TF plug-in
• Subscribe to the OCI and terraform-provider-oci issues
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform44
Graphs and Resource Discovery
• Visualisation with terraform graph
• Create a visual graph of Terraform resources
• .dot file create by terraform
• Helpful to diagnosing errors
• Can become rather complex
• Provider based resource discovery
• Functionality provided by the provider itself
• Used to identify gap between current state and plan
• Used to create terraform configuration of an existing environment
• Oracle does use this in OCI itself to define Stacks
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform45
echo "module.tvdlab-base.bastion_public_ip.0"| terraform console
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform46
Terraform Console
• interactive console for evaluating expressions
• Interacting with the current state of a terraform configuration
• Does work with local an remote state
• If state is empty used to experiment with the expression syntax
• Can also be use for scripting
• grab some information from a state e.g. IP addresses of a bastion host.
Further considerations
• OCI Resource manager
• Allows to define OCI Stacks using Terraform
• Based on existing Configuration or discovery
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform47
Where to Start
• Information from Terraform
• Terraform eLearnings
• Documentation and white papers
• Oracle examples
• Oracle Based resources like
• OCI Development Documentation
• Oracle OCI Provider github repository with examples
• Oracle Terraform Registry modules
• Blog posts and cummunity projects / repositories
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform48
Agenda
• Introduction
• Terraform in a Nutshell
• First Steps
• Next Steps and Use Cases
• Good Practice
• Further considerations
• Summary
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform49
Summary
• Terraform is a useful tool for implementing IaC with OCI
• a clear strategy is essential
• It can happen that you get lost by engineering the “one configuration to rule them all…”
• Consider to use Modules to combine configurations which are reused often
• Consider the good practice
• It is worth having a look at the different resource from Terraform and Oracle
• Get some Ideas
• Examples for the own infrastructure
• And if you wait until your 20 computing instances are deployed…
• … it might be time to watch one of the old SF movies / TV shows
29.10.2020 APACOUC - Oracle Cloud deployment with Terraform50
References
• Oracle Terraform Examples https://github.com/oracle/terraform-examples
• Oracle learning Library https://github.com/oracle/learning-library
• Oracle OCI CLI https://github.com/oracle/oci-cli
• Oracle OCI Documentation:
• Terraform https://docs.cloud.oracle.com/en-us/iaas/Content/API/SDKDocs/terraform.htm
• SDK https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdks.htm
• REST API https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm
• Terraform OCI Provider with examples
• https://github.com/terraform-providers/terraform-provider-oci
• Terraform Documentation https://www.terraform.io/docs/index.html
• CLI, Provider and much more.

More Related Content

What's hot

【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)日本マイクロソフト株式会社
 
Considerations for Data Access in the Lakehouse
Considerations for Data Access in the LakehouseConsiderations for Data Access in the Lakehouse
Considerations for Data Access in the LakehouseDatabricks
 
Power BI Governance - Access Management, Recommendations and Best Practices
Power BI Governance - Access Management, Recommendations and Best PracticesPower BI Governance - Access Management, Recommendations and Best Practices
Power BI Governance - Access Management, Recommendations and Best PracticesLearning SharePoint
 
IT Change Management Process Guide & Standards v4.0
IT Change Management Process Guide & Standards v4.0IT Change Management Process Guide & Standards v4.0
IT Change Management Process Guide & Standards v4.0Edward Paul Pagsanhan
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfRakuten Group, Inc.
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK
 
Power BI Architecture
Power BI ArchitecturePower BI Architecture
Power BI ArchitectureArthur Graus
 
Introduction to Azure Databricks
Introduction to Azure DatabricksIntroduction to Azure Databricks
Introduction to Azure DatabricksJames Serra
 
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてSalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてTakashi Hatamoto
 
Unified Big Data Processing with Apache Spark (QCON 2014)
Unified Big Data Processing with Apache Spark (QCON 2014)Unified Big Data Processing with Apache Spark (QCON 2014)
Unified Big Data Processing with Apache Spark (QCON 2014)Databricks
 
認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみた認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみたTakahito Miyamoto
 
Talend Big Data Capabilities Overview
Talend Big Data Capabilities OverviewTalend Big Data Capabilities Overview
Talend Big Data Capabilities OverviewRajan Kanitkar
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPBridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPconfluent
 
Dynamics 365 finance and operations case study
Dynamics 365 finance and operations case studyDynamics 365 finance and operations case study
Dynamics 365 finance and operations case studyNandita Nityanandam
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Soroosh Khodami
 
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...Ed Fernandez
 

What's hot (20)

MLOps for production-level machine learning
MLOps for production-level machine learningMLOps for production-level machine learning
MLOps for production-level machine learning
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
 
Considerations for Data Access in the Lakehouse
Considerations for Data Access in the LakehouseConsiderations for Data Access in the Lakehouse
Considerations for Data Access in the Lakehouse
 
Power BI Governance - Access Management, Recommendations and Best Practices
Power BI Governance - Access Management, Recommendations and Best PracticesPower BI Governance - Access Management, Recommendations and Best Practices
Power BI Governance - Access Management, Recommendations and Best Practices
 
Apache Atlasの現状とデータガバナンス事例 #hadoopreading
Apache Atlasの現状とデータガバナンス事例 #hadoopreadingApache Atlasの現状とデータガバナンス事例 #hadoopreading
Apache Atlasの現状とデータガバナンス事例 #hadoopreading
 
IT Change Management Process Guide & Standards v4.0
IT Change Management Process Guide & Standards v4.0IT Change Management Process Guide & Standards v4.0
IT Change Management Process Guide & Standards v4.0
 
TOGAF Complete Slide Deck
TOGAF Complete Slide DeckTOGAF Complete Slide Deck
TOGAF Complete Slide Deck
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate Overview
 
Power BI Architecture
Power BI ArchitecturePower BI Architecture
Power BI Architecture
 
Introduction to Azure Databricks
Introduction to Azure DatabricksIntroduction to Azure Databricks
Introduction to Azure Databricks
 
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてSalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
 
Unified Big Data Processing with Apache Spark (QCON 2014)
Unified Big Data Processing with Apache Spark (QCON 2014)Unified Big Data Processing with Apache Spark (QCON 2014)
Unified Big Data Processing with Apache Spark (QCON 2014)
 
認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみた認定 Integration Architecture デザイナー試験を復習してみた
認定 Integration Architecture デザイナー試験を復習してみた
 
Talend Big Data Capabilities Overview
Talend Big Data Capabilities OverviewTalend Big Data Capabilities Overview
Talend Big Data Capabilities Overview
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPBridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
 
Dynamics 365 finance and operations case study
Dynamics 365 finance and operations case studyDynamics 365 finance and operations case study
Dynamics 365 finance and operations case study
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
 
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...
Machine Learning Platformization & AutoML: Adopting ML at Scale in the Enterp...
 

Similar to Oracle Cloud deployment with Terraform

Terrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning AutomationTerrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning AutomationSimon Haslam
 
Platform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle CloudPlatform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle CloudSimon Haslam
 
Terraform with OCI
Terraform with OCITerraform with OCI
Terraform with OCIJeSam Kim
 
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as CodeHitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as CodeRobert van Mölken
 
Oracle Cloud - Infrastruktura jako kód
Oracle Cloud - Infrastruktura jako kódOracle Cloud - Infrastruktura jako kód
Oracle Cloud - Infrastruktura jako kódMarketingArrowECS_CZ
 
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
Scaling Your App With Docker Swarm using Terraform, Packer on OpenstackScaling Your App With Docker Swarm using Terraform, Packer on Openstack
Scaling Your App With Docker Swarm using Terraform, Packer on OpenstackBobby DeVeaux, DevOps Consultant
 
Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Anton Babenko
 
Azure enterprise integration platform
Azure enterprise integration platformAzure enterprise integration platform
Azure enterprise integration platformMichael Stephenson
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Vietnam Open Infrastructure User Group
 
Pairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryPairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryGuangya Liu
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformTim Berry
 
Terraform: Infrastructure as Code
Terraform: Infrastructure as CodeTerraform: Infrastructure as Code
Terraform: Infrastructure as CodePradeep Bhadani
 
Terraform vs Pulumi
Terraform vs PulumiTerraform vs Pulumi
Terraform vs PulumiHoaiNam307
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Nelson Calero
 
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...Juarez Junior
 
Rover: Implementing Landing Zone Using Docker Container
Rover: Implementing Landing Zone Using Docker ContainerRover: Implementing Landing Zone Using Docker Container
Rover: Implementing Landing Zone Using Docker ContainerSujay Pillai
 

Similar to Oracle Cloud deployment with Terraform (20)

Terrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning AutomationTerrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning Automation
 
Platform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle CloudPlatform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle Cloud
 
Terraform with OCI
Terraform with OCITerraform with OCI
Terraform with OCI
 
Getting Started with Terraform
Getting Started with TerraformGetting Started with Terraform
Getting Started with Terraform
 
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as CodeHitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
 
Oracle Cloud - Infrastruktura jako kód
Oracle Cloud - Infrastruktura jako kódOracle Cloud - Infrastruktura jako kód
Oracle Cloud - Infrastruktura jako kód
 
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
Scaling Your App With Docker Swarm using Terraform, Packer on OpenstackScaling Your App With Docker Swarm using Terraform, Packer on Openstack
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
 
Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018
 
Azure enterprise integration platform
Azure enterprise integration platformAzure enterprise integration platform
Azure enterprise integration platform
 
PaaSVSContainerization
PaaSVSContainerizationPaaSVSContainerization
PaaSVSContainerization
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
 
Pairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryPairs OpenStack Summit Summary
Pairs OpenStack Summit Summary
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
The ABC's of IaC
The ABC's of IaCThe ABC's of IaC
The ABC's of IaC
 
Terraform: Infrastructure as Code
Terraform: Infrastructure as CodeTerraform: Infrastructure as Code
Terraform: Infrastructure as Code
 
Terraform vs Pulumi
Terraform vs PulumiTerraform vs Pulumi
Terraform vs Pulumi
 
How to deploy a smart city platform?
How to deploy a smart city platform?How to deploy a smart city platform?
How to deploy a smart city platform?
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0
 
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...
Oracle CloudWorld 2023 - A Practical Guide to Implementing DevOps with IaC fo...
 
Rover: Implementing Landing Zone Using Docker Container
Rover: Implementing Landing Zone Using Docker ContainerRover: Implementing Landing Zone Using Docker Container
Rover: Implementing Landing Zone Using Docker Container
 

More from Stefan Oehrli

OracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdfOracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdfStefan Oehrli
 
DOAG Oracle Database Vault
DOAG Oracle Database VaultDOAG Oracle Database Vault
DOAG Oracle Database VaultStefan Oehrli
 
AUSOUG Oracle Password Security
AUSOUG Oracle Password SecurityAUSOUG Oracle Password Security
AUSOUG Oracle Password SecurityStefan Oehrli
 
IaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LABIaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LABStefan Oehrli
 
SOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security FeaturesSOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security FeaturesStefan Oehrli
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Stefan Oehrli
 
SOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20cSOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20cStefan Oehrli
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Stefan Oehrli
 
DOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant EnvironmentsDOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant EnvironmentsStefan Oehrli
 
SOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesSOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesStefan Oehrli
 
UKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle DatabasesUKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle DatabasesStefan Oehrli
 
UKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and SecurityUKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and SecurityStefan Oehrli
 
Trivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cTrivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cStefan Oehrli
 
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19cAOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19cStefan Oehrli
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 

More from Stefan Oehrli (17)

OracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdfOracleBeer_Terraform_soe.pdf
OracleBeer_Terraform_soe.pdf
 
DOAG Oracle Database Vault
DOAG Oracle Database VaultDOAG Oracle Database Vault
DOAG Oracle Database Vault
 
AUSOUG Oracle Password Security
AUSOUG Oracle Password SecurityAUSOUG Oracle Password Security
AUSOUG Oracle Password Security
 
IaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LABIaC MeetUp Active Directory Setup for Oracle Security LAB
IaC MeetUp Active Directory Setup for Oracle Security LAB
 
SOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security FeaturesSOUG Day Oracle 21c New Security Features
SOUG Day Oracle 21c New Security Features
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!
 
SOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20cSOUG PDB Security, Isolation and DB Nest 20c
SOUG PDB Security, Isolation and DB Nest 20c
 
Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!Security Best Practice: Oracle passwords, but secure!
Security Best Practice: Oracle passwords, but secure!
 
DOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant EnvironmentsDOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant Environments
 
SOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesSOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant Databases
 
UKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle DatabasesUKOUG Techfest 2019 Central user Administration of Oracle Databases
UKOUG Techfest 2019 Central user Administration of Oracle Databases
 
UKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and SecurityUKOUG TechFest PDB Isolation and Security
UKOUG TechFest PDB Isolation and Security
 
Trivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cTrivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19c
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
 
Oracle and Docker
Oracle and DockerOracle and Docker
Oracle and Docker
 
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19cAOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Oracle Cloud deployment with Terraform

  • 1. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH www.oradba.ch@stefanoehrli Oracle Cloud deployment with Terraform How to automate deployment of OCI resources Stefan Oehrli
  • 2. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH Stefan Oehrli Platform Architect, Trainer and Partner at Trivadis • Since 1997 active in various IT areas • Since 2008 with Trivadis AG • More than 20 years of experience in Oracle databases Focus: Protecting data and operating databases securely • Security assessments and reviews • Database security concepts and their implementation • Oracle Backup & Recovery concepts and troubleshooting • Oracle Enterprise User Security, Advanced Security, Database Vault, … • Oracle Directory Services Co-author of the book The Oracle DBA (Hanser, 2016/07) @stefanoehrli www.oradba.ch
  • 3. 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform3
  • 4.
  • 5. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform5
  • 6. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform6
  • 7. Introduction 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform7 • Different methods to provision resources in clouds • First introduction usually OCI Console • Browser based UI e.g. https://console.eu-zurich-1.oraclecloud.com • No automation • Further methods provided by Oracle • Oracle Cloud Command Line Interface oci-cli • Oracle Cloud Infrastructure REST APIs • Several OCI SDKs for common languages e.g. Phyton, Java, … • Oracle Cloud Infrastructure Cloud (OCI) Shell • None to moderate automation
  • 8. Introduction 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform8 • The SDK and REST API based approaches usually requires programming • Time consuming • Imperative vs. declarative • Everything must be specified explicitly • I once built an OCI based training environment with oci-cli • oci-cli and bash at its best… • The key word is infrastructure as code (IaC) • Management of infrastructure in a descriptive model • same source code generates the same environment • key DevOps practice • Several popular IaC Tools available • Chef, Puppet, Ansible, SaltStack, CloudFormation, Terraform, … • Whereby the fields of application more or less differ
  • 9. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform9
  • 10. Terraform in a Nutshell Source: Universe Today The Definitive Guide To Terraforming (February 2016)
  • 11. Terraform History 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform11 • Terraform for Generation X • dictionary.com: To alter the environment of (a celestial body) in order to make capable of supporting terrestrial life forms • Pure science fiction J … • … frequently a topic in SF books, films, TV series, etc. (Star Trek vs Star Wars) • Terraform for Millennials • Open Source Software by HashiCorp • Initial release mid 2014, current stable release 0.13.4 • Infrastructure as code software tool • Declarative configuration language • Written in go (see https://github.com/hashicorp/terraform) • Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently
  • 12. One ring to rule them all… 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform12 • Almost any infrastructure can be represented as a resource in Terraform • Terraform uses a declarative and not procedural language • It generates an execution plan… • … executes it to build the described infrastructure • Terraform and its declarative configuration language is not generic • Configurations cannot simply be deployed on any cloud • Usually they have to be rewritten for other cloud providers • Terraform is cloud-agnostic • Each configuration is bound to a cloud provider • The current state of an Infrastructure has to be maintained by terraform • Kept in a state file terraform.tfstate • Used to plan and apply changes to an infrastructure
  • 13. Terraform Components 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform13 • Configuration Language • A language describing an intended goal rather than the steps to reach that goal • Providers - are responsible for understanding API interactions and exposing resources • They tell Terraform how to build and manage one or many resource types • Available via Terraform Registry or GitHub (https://github.com/terraform-providers) • Modules – are containers for multiple resources that are used together • Can be used to create abstraction • Modules itself can use other modules • Available via Terraform Registry, local path or source control (github, bucket,…) • Backends - determines how state is loaded and how an operation such as apply is executed
  • 14. Terraform Provider 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform14
  • 15. Terraform Provider 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform15 • Providers are supplied by … • … Hashicorp • … a resource provider • … 3rd party/community • The providers are either be • Integrated downloaded by Terraform when needed • Non-integrated own or 3rd party provider manually installed • There are three Oracle Provider available • Oracle Cloud Infrastructure (OCI) provider see https://registry.terraform.io/providers/hashicorp/oci/latest • Oracle Platform Cloud provider see https://registry.terraform.io/providers/hashicorp/oraclepaas/latest • Oracle Cloud Infrastructure Classic provider see https://registry.terraform.io/providers/hashicorp/opc/latest
  • 16. Terraform OCI Provider 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform16 • OCI Provider in Terraform Registry https://registry.terraform.io/providers/hashicorp/oci/latest • Link to source including examples • Link to documentation
  • 17. Terraform and other IaC Tools 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform17 • Terraform is used to … • … create immutable infrastructures • … describe an infrastructure rather than define the procedure to how to provision it • … is declarative • … focus on provisioning e.g. it is not a configuration management tool • … does deploy version x of IaC to … e.g. does not “upgrade” a infrastructure • Alternatives to Terraform are available • Tools like Ansible, Puppet and Chef • Do build mutable infrastructure • Are rather a configuration management • In most cases procedural
  • 18. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform18
  • 19. brew install terraform user@gaia:~/ [ic19300] terraform -version Terraform v0.13.5 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform19 First Steps - Installation • Available for common OS e.g. Linux, MacOS, Windows, Solaris etc. https://www.terraform.io/downloads.html • Recommended to use the latest stable release • Terraform 0.13.4 introduced a couple of features like loop/count support for modules • Installation on MacOS is straight forward using brew
  • 20. • Copy the public key to your user account • Go to User Settings • Click API Keys • Click Add Public Key • mkdir $HOME/.oci openssl genrsa -out $HOME/.oci/oci_user.pem 2048 chmod 600 $HOME/.oci/oci_user.pem openssl rsa -pubout -in $HOME/.oci/oci_user.pem -out $HOME/.oci/ oci_user_public.pem 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform20 First Steps - Configure • OCI Terraform Provider requires configuration to be able to access OCI resources • Create RSA keys to authenticate against OCI • Configure Terraform Provider • An example
  • 21. First Steps - Configure 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform21 • Gather Required Information from OCI Console • Tenancy OCID: <tenancy-ocid> • From your user avatar, go to Tenancy:<your-tenancy> and copy OCID • User OCID: <user-ocid> • From your user avatar, go to User Settings and copy OCID. • Fingerprint: <fingerprint> • From your user avatar, go to User Settings and click API Keys • Copy the fingerprint associated with the RSA public key you made before • Region: <region-identifier> • From the top navigation bar, find your region
  • 22. provider "oci" { tenancy_ocid = "ocid1.tenancy.oc1..aaaaaxuk4je4tqv3nz64s4dmq…" user_ocid = "ocid1.user.oc1..aaaadwaaqddbuc3sws4ad4kezkmq…" fingerprint = "4d:e7:ff:8b:35:a9:c9:c7:3e:c9:1f:2a:c7:34:54:00" private_key_path = ".oci/oci_user.pem" region = "eu-zurich-1" } 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform22 First Steps - Configure • Create a folder for your Terraform configuration e.g. test • Create a simple file provider.tf with the information collected above. • For testing this might be ok • But if you store the config in version control, you would store your credential information • It is higly recommended to define variables and store information outside of your config • E.g. environment variables
  • 23. • Dedicated Variable file e.g. variables.tf provider "oci" { tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region } variable "user_ocid" { description = "user OCID used to access OCI" type = string } variable "fingerprint" {} variable "private_key_path" {} 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform23 First Steps - Configure • Same provider.tf file with variables
  • 24. • Or as environment variable with the prefix TF_VAR # provider identity parameters ------------------------------------ region = "eu-zurich-1" export TF_VAR_fingerprint="d4:d7:af:8b:c1:f9:c9:b7:3e:c9:1f:2a:c7:3b:54:00" export TF_VAR_user_ocid="ocid1.user.oc1..aaaadwaaqddbuc3sws4ad4kezkmq…" 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform24 First Steps - Configure • The values can then either be defined in a terraform.tfvars file • Keep the authentication information separate from your terraform configuration • Can be reused for other configurations
  • 25. • Validate your terraform configuration terraform init terraform validate 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform25 First Steps – Init, Plan, Apply • Initialize the terraform configuration • this will create the .terraform folder and download required providers / modules • Plan the terraform provisioning terraform plan –out=test.tfplan • Apply the plan terraform apply test.tfplan
  • 26. • Results will be shown by the output data "oci_core_images" "oracle_images" { compartment_id = var.compartment_id operating_system = var.ux_host_os sort_by = "TIMECREATED" } output "oracle_images" { description = "List of available Oracle Images." value = data.oci_core_images.oracle_images } 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform26 First Steps – What's inside • A simple data source to ”query” information in OCI
  • 27. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform27
  • 28. Next Steps • Example was rather simple • OCI Provider does provide a couple of resources and data sources, see https://registry.terraform.io/providers/hashicorp/oci/latest/docs • Comprehensive provider documentation with examples 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform28
  • 29. Next Steps • Start to build small infrastructure configuration • Combine them if necessary e.g. • Configuration for a Network / VCN setup • Configuation for an Autonomouse Database • Avoid to create a huge infrastructur configuration • Here again “One ring to rule them all,…” does not make sense • It gets cumbersome • Source for failure does increase • Start to consider using Modules • Define reusable Infrastructure components • Container for multiple resources that are used together 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform29
  • 30. Modules • Modules generally define at least the following configuration: • Input variables to accept values from the calling module • Output values to return results to the calling module • Resources to define one or more infrastructure objects that the module will manage • Terraform recommend to follow a standard structure for the module incl. files and folder • Root module • README file documenting the module • Configuration files main.tf, variables.tf, outputs.tf • Example how to use the module • Nested modules 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform30
  • 31. module "lab_compartment" { source = "../modules/lab_compartment" lab_compartment_name = var.tag_tvd_training base_compartment_ocid = var.training_compartment_ocid } 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform31 Module Sources • Modules are eiterh local or in a remote location • Specified by the source argument in the module blocke • Remote locations for Modules are… • … Terraform Registry, which are usually also in a GitHub repository • … GitHuB, Bitbucket or a generic git repository • … http URLs and buckets like S3 or GCS • Terraform will download / copy modules in use to the local .terraform folder
  • 32. module "tvdlab-vcn" { source = "Trivadis/tvdlab-vcn/oci” version = "1.1.3" # insert the 2 required variables here } 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform32 Terraform Registry • Directly integrated into Terraform • Terraform will download required providers or module during terraform init • Location for integrations (providers) and configuration packages (modules) • developed by HashiCorp • Third party vendors • Terraform community • Does provide basic documentation depending on source • Readme, input/output values, dependencies and resource
  • 33. Terraform Registry 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform33
  • 34. Trivadis OCI Module - tvdlab-base 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform34 • Combinded Module in Terraform Repository • Depends on • tvdlab-bastion to build a bastion host • tvdlab-db to build a db host • tvdlab-vcn to build a VCN • Based on Oracle Module with similar use cases • But do support count to create n-number of similar instances • Base Module to build training / lab environments • VCN setup with a public and private network • Accessible via bastion host • Access via SSH or HTTP guacamole
  • 35. Trivadis OCI Module 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform35
  • 36. Trivadis LAB • Trivadis Training start using OCI for there Oracle Based Trainings • Setup and Configure Infrastructure using Terraform • Define reusable components e.g. Modules • Module for VCN with private and public subnet • Module for Bastion host with dedicated bootstrap script • Module for compute instance • Module for other resources • Provision the number of environments based on trainis • Simply specify TF_VAR_tvd_participants to add n-numbers of environments 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform36
  • 37. Trivadis LAB – O-SEC 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform37
  • 38. . ├── O-SEC.tfplan ├── README.md ├── additional_oud_host.tf ├── additional_win_host.tf ├── compartment.tf ├── datasource.tf ├── etc │ └── README.md ├── local.tf ├── main.tf ├── outputs.tf ├── provider.tf ├── scripts │ ├── README.md │ ├── bootstrap_bastion.sh │ └── dbv.sql ├── terraform.tfvars └── variables.tf 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform38 Trivadis LAB – O-SEC
  • 39. Trivadis LAB – O-AI 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform39
  • 40. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform40
  • 41. terraform { required_version = ">= 0.13.0" backend "http" { update_method = "PUT" address = "https://objectstorage.eu-zurich-1.../terraform.tfstate" } } 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform41 Good Practice • Use Terraform relatively early in your OCI journey • Use a version control system preferable git • Create separate repository for configuration, modules etc • Store the *.tfstate file centrally e.g. in OCI object storage • Alternatively other backends are supported
  • 42. Good Practice 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform42 • Use the latest version of Terraform at least 0.13.x • Support for count/loop etc in modules • In particular if you start from scratch any way • Keep your TF configuration simple • Create multiple files • Separate by compartments etc. • Be careful when re-run apply • A new bootstrap script can cause the compute instance to be recreated • Do not use -auto-approve or –force • This means an apply makes changes without prompting • Your resources can be gone faster than you would like
  • 43. Good Practice 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform43 • Have a clear strategy when to use TF & when not • Probably combination with HashiCorp Packer, Ansible etc • Update your OCI provider regularly • It can happen that you are forced to do this at the wrong moment • Just quickly make a small change... • Use a Tool like VS Code with TF plug-in • Subscribe to the OCI and terraform-provider-oci issues
  • 44. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform44
  • 45. Graphs and Resource Discovery • Visualisation with terraform graph • Create a visual graph of Terraform resources • .dot file create by terraform • Helpful to diagnosing errors • Can become rather complex • Provider based resource discovery • Functionality provided by the provider itself • Used to identify gap between current state and plan • Used to create terraform configuration of an existing environment • Oracle does use this in OCI itself to define Stacks 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform45
  • 46. echo "module.tvdlab-base.bastion_public_ip.0"| terraform console 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform46 Terraform Console • interactive console for evaluating expressions • Interacting with the current state of a terraform configuration • Does work with local an remote state • If state is empty used to experiment with the expression syntax • Can also be use for scripting • grab some information from a state e.g. IP addresses of a bastion host.
  • 47. Further considerations • OCI Resource manager • Allows to define OCI Stacks using Terraform • Based on existing Configuration or discovery 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform47
  • 48. Where to Start • Information from Terraform • Terraform eLearnings • Documentation and white papers • Oracle examples • Oracle Based resources like • OCI Development Documentation • Oracle OCI Provider github repository with examples • Oracle Terraform Registry modules • Blog posts and cummunity projects / repositories 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform48
  • 49. Agenda • Introduction • Terraform in a Nutshell • First Steps • Next Steps and Use Cases • Good Practice • Further considerations • Summary 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform49
  • 50. Summary • Terraform is a useful tool for implementing IaC with OCI • a clear strategy is essential • It can happen that you get lost by engineering the “one configuration to rule them all…” • Consider to use Modules to combine configurations which are reused often • Consider the good practice • It is worth having a look at the different resource from Terraform and Oracle • Get some Ideas • Examples for the own infrastructure • And if you wait until your 20 computing instances are deployed… • … it might be time to watch one of the old SF movies / TV shows 29.10.2020 APACOUC - Oracle Cloud deployment with Terraform50
  • 51.
  • 52. References • Oracle Terraform Examples https://github.com/oracle/terraform-examples • Oracle learning Library https://github.com/oracle/learning-library • Oracle OCI CLI https://github.com/oracle/oci-cli • Oracle OCI Documentation: • Terraform https://docs.cloud.oracle.com/en-us/iaas/Content/API/SDKDocs/terraform.htm • SDK https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdks.htm • REST API https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm • Terraform OCI Provider with examples • https://github.com/terraform-providers/terraform-provider-oci • Terraform Documentation https://www.terraform.io/docs/index.html • CLI, Provider and much more.