SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Automate your Oracle
Cloud Infrastructure
operations
Julio 2018
Nelson Calero
Today’s topics
• Oracle cloud concepts (quick review)
• CLI tools (focus on OCI)
• Examples
• Automation
2 © 2018 Pythian
Intended audience: DBAs interested in Cloud and DevOps
• Database Consultant at Pythian since 2014
• Working with Oracle tools and Linux environments since 1996
• DBA Oracle (2001) & MySQL (2005)
• Co-founder and President of the Oracle user Group of Uruguay (2009)
• LAOUC Director of events (2013)
• Computer Engineer (1998)
• Oracle ACE (2014), Oracle ACE Director (2017)
• Oracle Certified Professional 10g/11g/12c (2008), OCE, Cloud
• Amazon Solutions Architect – Associate (2016)
• Google Cloud Architect (2017), Google Cloud Data Engineer (2017)
• Oracle University Instructor (2011)
• Blogger and speaker: Oracle Open World, Collaborate, OTN Tour, Regional conferences
About me
3 © 2018 Pythian
http://www.linkedin.com/in/ncalero @ncalerouy
Pythian overview
© 2015 Pythian Confidential4
• 21 Years of data infrastructure management consulting
• 250+ Top brands
• 11800+ Systems under management
• 400+ employees in 35 countries
• 10 Oracle ACEs, 4 ACED,
3 OakTable members, 2 OCM, 6 Microsoft MVPs,
1 Cloudera Champion of Big Data,
AWS Certified Solutions Architect – 2 Professional, 12 Associate
• Oracle, Microsoft, MySQL, Hadoop, Cassandra, MongoDB, and more
• Infrastructure, Cloud, DevOps, and application expertise
5 © 2018 Pythian
Oracle Cloud offering
6
https://blogs.oracle.com/futurestate/when-cloud-meets-on-premise:-a-story-of-two-applications
© 2018 Pythian
Oracle Cloud - IaaS
OCI (new gen. - 2017)
•Audit
•Compute
•Container Engine for Kubernetes
•Container Registry
•Load Balancing
•Object Storage
•Oracle Cloud Infrastructure Database
•Networking
•Ravello
•Wercker
7
OCI Classic (v1 - 2014)
•Compute Classic
•Container Classic
•Container Registry Classic
•Dedicated Compute Classic - SPARC Model 300
•DIVA (media assets)
•Load Balancing Classic
•Messaging
•Storage Classic
•Storage Software Appliance
https://docs.oracle.com/en/cloud/iaas/index.html
© 2018 Pythian
Oracle Cloud - PaaS
Application Development
• API Catalog
• Application Container
• Autonomous Mobile Cloud Enterprise
• Developer
• Developer Classic
• Java
• Java - SaaS Extension
• Mobile
• Mobile Cloud Enterprise
• Visual Builder
8
Business Analytics
•Analytics Cloud
•Big Data Discovery
•Big Data Preparation
•Business Intelligence
•Data Visualization
•Internet of Things
Data Management
•Autonomous Data Warehouse
Cloud
•Big Data
•Big Data Cloud
•Big Data SQL Cloud
•Data Hub
•Database
•Database Backup
•Database Schema
•Event Hub
•Exadata
•Exadata Express
•MySQL Database
Integration
•API Platform
•Apiary
•Data Integration Platform
•Data Integrator
•Integration
•GoldenGate
•Managed File Transfer
•Process
•Self-Service Integration
•SOA
Management
•Management cloud
Security
•CASB
•Identity
https://docs.oracle.com/en/cloud/paas/index.html
OCI – DBCS editions and versions
9 © 2018 Pythian
Oracle cloud elements – network and instance
10
https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsg/terminology.html
https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsg/ip-networks.html
11
http://cloud.oracle.com
© 2015 Pythian Confidential12
http://cloud.oracle.com
Oracle Cloud dashboard
13 © 2018 Pythian
© 2015 Pythian Confidential14
Other ways to access to Oracle Cloud
• API (REST) - https://docs.cloud.oracle.com/iaas/api/
• SDK (Java, Python, Ruby)
• CLI tools
– Generic and specific to each service
– Example: Object storage
• HDFS Plug-in
• NFS Gateway
• Terraform
• OCI native API or Amazon S3 compatible API
15 © 2018 Pythian
OCI CLI tools
16
ORACLE CLOUD
INFRASTRUCTURE
Database
System
Bare Metal
Compute
Container
dbaascli
raccli
dbpatchm
bkup_api
opc (classic)
oci
oracle-dbcs-cli
ftmcli.jar
bmcs
Virtual
Machine
Load
Balancer
Object
Storage
REST
SDK
© 2018 Pythian
Download tools from OTN: http://www.oracle.com/technetwork/topics/cloud/downloads/index.html
Required account details for CLI
OCI Classic
• REST endpoint
• user
• password
• identity domain
17 © 2018 Pythian
OCI
• tenancy OCID
• compartment OCID
• user OCID
• public key fingerprint
• region
OCI: https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm
OCI-C: https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stopc/preparing-use-cli.html
Example – opc (OCI-C) on Windows bash
ncalero@H6RMYZ1:~/.opc$ cat oci-profile.txt
{
"global": {
"format": "text",
"debug-requests": false
},
"compute": {
"user": "/Compute-a123456/myuser",
"password-file": "/home/ncalero/.opc/opc-oci-pwd",
"endpoint": "api-yours.compute.us2.oraclecloud.com/"
}
}
ncalero@H6RMYZ1:~/.opc$ ls -l opc-oci-pwd oci-profile.txt
-rw------- 1 ncalero ncalero 11 May 23 15:25 opc-oci-pwd
-rw------- 1 ncalero ncalero 245 May 23 15:26 oci-profile.txt
ncalero@H6RMYZ1:~/.opc$ export OPC_PROFILE_FILE=oci-profile.txt
ncalero@H6RMYZ1:~/.opc$ export OPC_PROFILE_DIRECTORY=$HOME/.opc
18 © 2018 Pythian
identity domain
user
REST endpoint
ncalero@H6RMYZ1:~$ opc compute instance list /Compute-a123456/myuser
NAME
/Compute-a123456/myuser/AppVM1-myuser/e6880f1f-c2b9-4b7c-87cd-eebf8168f13a
ncalero@H6RMYZ1:~$ opc -f table -F name,status compute orchestration-v2 list /Compute-a123456/myuser
+---------------------------------------------+----------------+
NAME | STATUS
+---------------------------------------------+----------------+
/Compute-a123456/myuser/AppVM1-myuser | terminal_error
+---------------------------------------------+----------------+
ncalero@H6RMYZ1:~$ opc -f json compute orchestration-v2 get /Compute-a123456/myuser/AppVM1-myuser |
egrep -A5 "health"
"health": {
"cause": "create_failed",
"detail": "System object cannot be created as specified in template. Ensure that the template
defines a valid object with all necessary fields.",
"error": "seclist /Compute-a123456/myuser/app-seclist-myuser not found",
"object": null,
"status": "terminal_error"
19 © 2018 Pythian
REST API - OCI-C
• Account information needed:
– Rest endpoint: https://api-yours.compute.us2.oraclecloud.com/
• Displayed in Site Selector in top of web console
– Resource path
– Resource name: /Compute-{identityDomainName}/{user}/{object_id}
– Password
• First - get authentication token, valid for 30 minutes
20 © 2018 Pythian
curl -i -X POST -H "Content-Type: application/oracle-compute-v3+json" 
–d '{"user":"/Compute-a123456/myuser","password":“xxxx"}' 
https://api-yours.compute.us2.oraclecloud.com/authenticate/
REST API - OCI-C - auth response
21 © 2018 Pythian
HTTP/1.1 204 No Content
Date: Wed, 23 May 2018 20:41:20 GMT
Server: nginx
Content-Type: text/plain; charset=UTF-8
X-Oracle-Compute-Call-Id: 180523f5d2c9d6a90c27ce4462198de27be2c6
Expires: Wed, 23 May 2018 20:41:20 GMT
Cache-Control: no-cache
Vary: Accept
Content-Length: 0
Set-Cookie:
nimbula=eyJpZGVudGl0eSI6ICJ7XCJyZWFsbVwiOiBcImNvbXB1dGUtdXMyLXo0M1wiLCBcInZhbHVlXCI6IFwie1xcXCJjdXN
0b21lclxcXCI6IFxcXCJDb21wdXRlLWE0ODAwNjZcXFwiLCBcXFwicmVhbG1cXFwiOiBcXFwiY29tcHV0ZS11czItejQzXFxcIi
wgXFxcImVudGl0eV90eXBlXFxcIjogXFxcInVzZXJcXFwiLCBcXFwic2Vzc2lvbl9leHBpcmVzXFxcIjogMTUyNzExODg4MC4zN
jE0NTMxLCBcXFwiZXhwaXJlc1xcXCI6IDE1MjcxMDk4ODAuMzYxNTAxOSwgXFxcInVzZXJcXFwiOiBcXFwiL0NvbXB1dGUtYTQ4
MDA2Ni9TdHVkZW50MDJcXFwiLCBcXFwiZ3JvdXBzXFxcIjogW1xcXCIvQ29tcHV0…
Content-Language: en
REST API - OCI-C - example
22 © 2018 Pythian
ncalero@H6RMYZ1:~/.opc$ export COMPUTE_COOKIE='nimbula=eyJpZGVudGl0eSI6.. ; Path=/; Max-Age=1800‘
ncalero@H6RMYZ1:~/.opc$ curl -X GET -H "Cookie: $COMPUTE_COOKIE" -H "Accept: application/oracle-
compute-v3+json" https://api-yours.compute.us2.oraclecloud.com/instance/Compute-a123456/myuser/
{"result": [{"domain": "compute-a123456.oraclecloud.internal.", "placement_requirements":
["/system/compute/placement/default", "/system/compute/allow_instances"], "ip": "10.31.103.11",
"fingerprint": "", "image_metadata_bag":
…
ncalero@H6RMYZ1:~/.opc$ curl -X GET -H "Cookie: $COMPUTE_COOKIE" -H "Accept: application/oracle-
compute-v3+json" https://api-yours.compute.us2.oraclecloud.com/instance/Compute-a123456/myuser/ |
jshon -e result -a -e label
"appvm1-S01“
Examples in docs: https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsa/Use_Cases.html
Parsing JSON output with jshon unix tool:
REST API - OCI
• Account information needed:
– Region endpoint+version: https://iaas.us-ashburn-1.oraclecloud.com/20160918
– KeyID: <TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT>
– User privateKey
• JSON used for request and response body
• All requests must be signed (Authorization header)
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm
• Scripts provided by Oracle to simplify this process:
– Bash, PowerShell, C#, Java, NodeJS, Perl, PHP, Python, Ruby, Go
23 © 2018 Pythian
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/signingrequests.htm
REST API - OCI - Example
24 © 2018 Pythian
ncalero@H6RMYZ1:~/bin$ ./oci-curl iaas.us-ashburn-1.oraclecloud.com get
"/20160918/instances?compartmentId=ocid1.compartment.oc1..aaaaaaapqowerpoirdalsdkfajlfklfdkalj
flasdfl"
[{"availabilityDomain":"HDGG:US-ASHBURN-AD-1","compartmentId":"ocid1.compartment.oc1..
aaaaaaapqowerpoirdalsdkfajlfklfdkaljflasdfl ","definedTags":{},"displayName":"Demo-
Instance","extendedMetadata":{},"faultDomain":null,"freeformTags":{},"id":"ocid1.instance.oc1.iad.abuwc
ljtxf33kdnipvlsewtoxpdtljex6zq5gl2vsccmgffvlfcsswom5usa","imageId":"ocid1.image.oc1.iad.aaaaaaaaqza35hd
7hx6o2xnwkv34g7p7irsxfm4zwkcq6wzz4kquyf6r2j6q","ipxeScript":null,"launchMode":"NATIVE","launchOptions":
{"bootVolumeType":"ISCSI","firmware":"UEFI_64","networkType":"VFIO","remoteDataVolumeType":"PARAVIRTUAL
IZED"},"lifecycleState":"TERMINATED","metadata":{"ssh_authorized_keys":"ssh-rsa AAAAB3Nxxxxxxxxx….
calero@H6RMYZ1n","user_data":"IyEvYmluL2Jhc2gKdG91Y2ggadlfjalsdfjdalfalklfdVuCnl1bSB1cGRhdGUgLXkKdG91Y
2ggL3Jvb3QvcnVuX2NvbXBsZXRlCg=="},"region":"iad","shape":"VM.Standard1.2","sourceDetails":{"sourceType"
:"image","bootVolumeSizeInGBs":null,"imageId":"ocid1.image.oc1.iad.aaaaaaaaqza35hd7hx6o2xnwkv34g7p7irsx
fm4zwkcq6wzz4kquyf6r2j6q","kmsKeyId":null},"timeCreated":"2018-07-
02T17:21:54.902Z","timeMaintenanceRebootDue":null}] fin real
ncalero@H6RMYZ1:~/bin$ tail -2 oci-curl
# ncalero
oci-curl $*
Only change to bash script found in docs to use it here:
Example: creating a Compute Instance
We need to create/use several components:
– OCI
• Compartment
• Virtual Cloud Network
– Subnet, Internet GW, route table, security list, security rules, vnic
• OS Image
• Shape
• Ssh keys
– OCI-C: extra network & security steps
25 © 2018 Pythian
OCI shapes
26
OCI Classic
OCI
Not in all regions!
Example: creating a Compute Instance
• Using web console
• Using API / CLI
– No wizard, each component must be created
• Automation
– OCI-C orchestration
– Terraform provider
• oci for OCI
• opc for OCI-C
27 © 2018 Pythian
© 2015 Pythian Confidential28
© 2015 Pythian Confidential29
© 2015 Pythian Confidential30
OCI-C orchestration
31 © 2018 Pythian
{
"account" : "/Compute-a123456/default",
"description" : "This is the bastion, app/web host",
"tags" : [ "calero" ],
"name" : "/Compute-a123456/calero/AppVM1-calero",
"objects" : [ {
"account" : "/Compute-a123456/default",
"desired_state" : "inherit",
"description" : "This is the bastion, app/web host",
"persistent" : false,
"template" : {
"networking" : {
"eth1" : {
"vnic" : "/Compute-a123456/calero/eth1",
"ipnetwork" : "/Compute-
a123456/calero/appIPnetwork-calero",
"nat" : [ ],
"vnicsets" : [ "/Compute-a123456/calero/app-
vNICSet-calero" ]
},
"eth0" : {
"seclists" : [ "/Compute-a123456/calero/app-
seclist-calero" ],
"nat" : "ipreservation:/Compute-
a123456/calero/appvm1-pubip-calero",
"dns" : [ "appvm1-S02" ]
}
},
"name" : "/Compute-a123456/calero/AppVM1-calero",
"tags" : [ "calero" ],
"hostname" : "appvm1-S02",
"label" : "appvm1-S02",
"shape" : "oc3",
"attributes" : {
"userdata" : {
"pre-bootstrap" : {
"failonerror" : true,
"script" : []
}
}
},
"imagelist" :
"/oracle/public/OL_7.2_UEKR3_x86_64",
"sshkeys" : [ "/Compute-a123456/calero/ssh-key-
calero" ]
},
Example: OCI Instance using Terraform
• Download Terraform binary (my example uses v0.11.3)
– https://www.terraform.io/downloads.html
• Download Terraform OCI-provider (using v2.1.0)
– https://github.com/oracle/terraform-provider-oci/releases
• Create .tf HCL Project (based on examples):
– https://github.com/oracle/terraform-provider-oci/tree/master/docs/examples
• Configure your account Access (env-vars.ps1)
– Tenancy and user OCIDs, fingerprint, private key, region
• Terraform Plan
• Terraform Apply
• Step by step guide: https://community.oracle.com/docs/DOC-1019936
32 © 2018 Pythian
ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI/$ ls
block.tf compute.tf env-vars.ps1 outputs.tf userdata
datasources.tf network.tf provider.tf remote-exec.tf variables.tf
ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI$ cat /mnt/c/users/calero/AppData/Roaming/terraform.rc
providers { oci = "d:softterraform-provider-oci_v2.1.0.exe" }
33 © 2018 Pythian
PS D:GitHubterraform-OCI> cat ./env-vars.ps1
$env:TF_VAR_tenancy_ocid="ocid1.tenancy.oc1..aaaaaaaaw5hodl4pajmymyo62bwkj4kokziowmjkvj7fvmgt4lqia3yg7km"
$env:TF_VAR_user_ocid="ocid1.user.oc1..aaaaaaaaiyhrscq7rhfiyhrscql4tb3ojto2ysw72l656yknkyqau2lxotqf"
$env:TF_VAR_compartment_ocid="ocid1.compartment.oc1.. aaaaaaaakdevdha7q7yjdheridcy63sgv2syefv7x46u67jk4hj"
$env:TF_VAR_region="us-ashburn-1“
$env:TF_VAR_fingerprint="db:a3:b8:59:ce:05:ff:78:c0:fb:aa:ca:d7:09:77:ad"
$env:TF_VAR_private_key_path="C:Userscalero.ocioci_api_key.pem"
### Public/private keys used on the instances
$env:TF_VAR_ssh_public_key = Get-Content C:Userscalero.sshid_rsa.pub -Raw
$env:TF_VAR_ssh_private_key = Get-Content C:Userscalero.sshid_rsa -Raw
PS D:GitHubterraform-OCI> ./env-vars.ps1
ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI$ cat compute.tf
resource "oci_core_instance" "DemoInstance" {
availability_domain =
"${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
compartment_id = "${var.compartment_ocid}"
display_name = "Demo-Instance"
image = "${lookup(data.oci_core_images.OLImageOCID.images[0], "id")}"
shape = "${var.InstanceShape}"
subnet_id = "${oci_core_subnet.SN-DemoSubnetAD1.id}"
metadata {
ssh_authorized_keys = "${var.ssh_public_key}"
user_data = "${base64encode(file(var.InstanceBootStrap))}"
}
}
ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI/demo$ cat provider.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}"
}
34 © 2018 Pythian
35 © 2018 Pythian
36 © 2018 Pythian
© 2015 Pythian Confidential37
PS D:GitHubterraform-OCI> d:softterraform graph | dot -Tpng -o demo-graph.png
Terraform apply
© 2015 Pythian Confidential38
PS D:GitHubterraform-OCIdemo> d:softterraform apply
Terraform will perform the following actions:
…
Plan: 9 to add, 1 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
oci_core_volume.DemoBlock0: Creating...
…
oci_core_instance.DemoInstance: Creation complete after 1m9s (ID:
ocid1.instance.oc1.iad.abuwcljtxf33kdni...toxpdtljex6zq5gl2vsccmgffvlfcsswom5usa)
…
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
InstancePublicIP = [
129.213.48.178
]
39 © 2018 Pythian
Automation
• Not the kind you are used to as DBA
– PaaS have built-in automation. DBaaS example:
• Backup
• Recovery
• Patch
• Failover
• Extra tools provided by Oracle
– OCI-C orchestration
– OCI Terraform provider
• built-in since 0.9.4, external before
– Chef Knife Plugin
– EBS Cloud Admin Tool
40 © 2018 Pythian
© 2015 Pythian Confidential41
Example: DBCS patching
© 2015 Pythian Confidential42
© 2015 Pythian Confidential43
[root@oacsdb ~]# dbaascli dbpatchm --run -list_tools
DBAAS CLI version 1.0.0
Executing command dbpatchm --run -list_tools -cli
/var/opt/oracle/patch/dbpatchm -list_tools -cli
Subroutine sync_dg_standby redefined at /var/opt/oracle/patch/dbpatchm line 7383.
Starting DBPATCHM
Logfile is /var/opt/oracle/log/dbpatchm/dbpatchm_2018-06-03_20:43:12.log
Config file is /var/opt/oracle/patch/dbpatchm.cfg
INFO: cdb is set to : yes
INFO: dbversion detected : 12102
INFO: patching type : psu
dbpatchm Execution completed
[root@oacsdb dbpatchm]# less dbpatchm_2018-06-03_20:43:12.log
2018-06-03 20:43:14 - Output from cmd rpm -qa|grep -i dbaastools run on localhost is:
2018-06-03 20:43:14 - dbaastools-1.0-1+17.3.5.0.0_170731.1639.x86_64
2018-06-03 20:43:14 - cmd took 0 seconds
…
2018-06-03 20:43:15 - INFO: total rpm's available for this version: 35
44 © 2018 Pythian
[root@oacsdb ~]# dbaascli dbpatchm --run -toolsinst -rpmversion=18.2.3.1.0_180530.0000
…
[root@oacsdb ~]# dbaascli dbpatchm --run -list_patches
DBAAS CLI version 1.0.0
Executing command dbpatchm --run -list_patches -cli
/var/opt/oracle/patch/dbpatchm -list_patches -cli
Logfile is /var/opt/oracle/log/dbpatchm/dbpatchm_2018-07-01_14:59:03.log
Config file is /var/opt/oracle/patch/dbpatchm.cfg
INFO: cdb is set to : yes
INFO: dbversion detected : 12102
INFO: patching type : psu
Current Patch : 25171037-SE
Available patches :
Patchid : 26609783-SE
Patchid : 26713565-SE
Patchid : 26925311-SE
Patchid : 27338041-SE
dbpatchm Execution completed
45 © 2018 Pythian
[root@oacsdb ~]#[root@oacsdb dbpatchm]# dbaascli dbpatchm --run -prereq
…
INFO: dbversion detected : 12102
INFO: patching type : psu
WARN: inventory check: patch 25731006 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 23026585 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 23088803 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 24624166 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 22366322 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 25873689 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 25437695 installed is a oneoff - which could be lost in upgrade process
WARN: and it can be reinstalled manually if needed, post upgrade.
WARN: inventory check: patch 25171037 installed is a psu - upgrade will bring in newer s/w bits
INFO: there are interim patches installed - please check /var/opt/oracle/log/dbpatchm/invlog for details
oss_patch: Database version is required
dbpatchm Execution completed
46 © 2018 Pythian
© 2015 Pythian Confidential47
© 2015 Pythian Confidential48
DBCS patching summary
• Cloud tools (dbaascli) pre-installed in compute instance
• Logs in /var/opt/oracle/log/dbpatchm/
• Tools needs to be updated for patch to work
• Conflict resolution automated for included one-offs
49 © 2018 Pythian
Example: managing DBCS backups
Backups are configured with a checkbox when creating the DBCS.
Managing backups from the Compute service instance:
• Listing existing backups:
RMAN client
• Creating an on demand backup: as root:
• To recover from most recent backup:
50 © 2018 Pythian
dbaascli orec –args -latest
/var/opt/oracle/bkup_api/bkup_api bkup_start
https://docs.oracle.com/en/cloud/paas/database-dbaas-cloud/csdbi/back-and-recover.html
Automation: Infrastructure as a Code (IaC)
• Lifecycle: Provision, Update, Destroy
• IaC categories:
– Scripts
– Configuration management tools: chef, puppet
– Server templating tools: packer, vagrant, docker
– Server provisioning tools: terraform, cloud formation, ansible
51 © 2018 Pythian
More terraform examples
Creating a kubernetes cluster
https://github.com/oracle/terraform-kubernetes-installer
Same account configuration as previous OCI instance example, but also:
• Policy at root compartment
– allow service OKE to manage all-resources in tenancy
• A group to which a policy grants appropriate permissions
• command line tool kubectl
https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengprerequisites.htm
NOTE: Only cluster setup – need an application to consume it
52 © 2018 Pythian
What’s next?
• Explore the APIs/CLI for all Oracle cloud services
DBCS: https://docs.oracle.com/en/cloud/paas/database-dbaas-cloud/csdbi/oracle-dbcs-cli-
config-file.html
• Automate infrastructure changes with CI/CD pipelines
• Take advantage of Oracle Management Cloud
– more than just monitoring: https://cloud.oracle.com/management
• Explore hybrid Cloud deployments to expand your on-premises
capacity for specific use cases
53 © 2018 Pythian
THANK YOU
Questions?
54
calero@pythian.com
@ncalerouy
http://www.linkedin.com/in/ncalero
© 2018 Pythian
References - documentation
Oracle Cloud tools:
http://www.oracle.com/technetwork/topics/cloud/downloads/index.html
Oracle Cloud API
https://docs.cloud.oracle.com/iaas/api/#/
Oracle Cloud Compute shapes
https://docs.cloud.oracle.com/iaas/Content/Compute/References/computeshapes.htm
https://cloud.oracle.com/en_US/compute-classic/pricing
EBS cloud admin tool
https://blogs.oracle.com/ebsandoraclecloud/june-2018-ebs-cloud-admin-tool-updates-available
Using Terraform with OCI
https://community.oracle.com/docs/DOC-1019936
55 © 2018 Pythian

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Exadata Cloud Service Overview(v2)
Exadata Cloud Service Overview(v2) Exadata Cloud Service Overview(v2)
Exadata Cloud Service Overview(v2)
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
 
Understanding oracle rac internals part 2 - slides
Understanding oracle rac internals   part 2 - slidesUnderstanding oracle rac internals   part 2 - slides
Understanding oracle rac internals part 2 - slides
 
Grafana introduction
Grafana introductionGrafana introduction
Grafana introduction
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
 
Oracle GoldenGate導入Tips
Oracle GoldenGate導入TipsOracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Everything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed TracingEverything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed Tracing
 
Oracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 VersionOracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 Version
 
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.ioTHE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
 
Oracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion EditionOracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion Edition
 
DBA Tasks in Oracle Autonomous Database
DBA Tasks in Oracle Autonomous DatabaseDBA Tasks in Oracle Autonomous Database
DBA Tasks in Oracle Autonomous Database
 
What is Docker Architecture | Edureka
What is Docker Architecture | EdurekaWhat is Docker Architecture | Edureka
What is Docker Architecture | Edureka
 
How to Use EXAchk Effectively to Manage Exadata Environments
How to Use EXAchk Effectively to Manage Exadata EnvironmentsHow to Use EXAchk Effectively to Manage Exadata Environments
How to Use EXAchk Effectively to Manage Exadata Environments
 
Prometheus - basics
Prometheus - basicsPrometheus - basics
Prometheus - basics
 
Mule caching strategy with redis cache
Mule caching strategy with redis cacheMule caching strategy with redis cache
Mule caching strategy with redis cache
 
Oracle GoldenGate Performance Tuning
Oracle GoldenGate Performance TuningOracle GoldenGate Performance Tuning
Oracle GoldenGate Performance Tuning
 
Oracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RACOracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RAC
 
Oracle RAC 12c Overview
Oracle RAC 12c OverviewOracle RAC 12c Overview
Oracle RAC 12c Overview
 
The Top 5 Reasons to Deploy Your Applications on Oracle RAC
The Top 5 Reasons to Deploy Your Applications on Oracle RACThe Top 5 Reasons to Deploy Your Applications on Oracle RAC
The Top 5 Reasons to Deploy Your Applications on Oracle RAC
 

Semelhante a Automate your Oracle Cloud Infrastructure operation

Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 

Semelhante a Automate your Oracle Cloud Infrastructure operation (20)

Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the Cloud
 
Going Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS GlueGoing Serverless - an Introduction to AWS Glue
Going Serverless - an Introduction to AWS Glue
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...
 
Migrating Oracle Databases from AWS to OCI
Migrating Oracle Databases from AWS to OCIMigrating Oracle Databases from AWS to OCI
Migrating Oracle Databases from AWS to OCI
 
Session 8 - Creating Data Processing Services | Train the Trainers Program
Session 8 - Creating Data Processing Services | Train the Trainers ProgramSession 8 - Creating Data Processing Services | Train the Trainers Program
Session 8 - Creating Data Processing Services | Train the Trainers Program
 
Oracle Cloud Deck_Deepanshu Mittal_Oct 26.pptx
Oracle Cloud Deck_Deepanshu Mittal_Oct 26.pptxOracle Cloud Deck_Deepanshu Mittal_Oct 26.pptx
Oracle Cloud Deck_Deepanshu Mittal_Oct 26.pptx
 
Moving Your Oracle Databases To The Oracle Cloud
Moving Your Oracle Databases To The Oracle CloudMoving Your Oracle Databases To The Oracle Cloud
Moving Your Oracle Databases To The Oracle Cloud
 
With Automated ML, is Everyone an ML Engineer?
With Automated ML, is Everyone an ML Engineer?With Automated ML, is Everyone an ML Engineer?
With Automated ML, is Everyone an ML Engineer?
 
Working with Oracle Big Data Cloud Compute Edition and Apache Zeppelin
Working with Oracle Big Data Cloud Compute Edition and Apache ZeppelinWorking with Oracle Big Data Cloud Compute Edition and Apache Zeppelin
Working with Oracle Big Data Cloud Compute Edition and Apache Zeppelin
 
Exploring All options to move your Oracle Databases to the Oracle Cloud
Exploring All options to move your Oracle Databases to the Oracle CloudExploring All options to move your Oracle Databases to the Oracle Cloud
Exploring All options to move your Oracle Databases to the Oracle Cloud
 
Forge - DevCon 2016: From Desktop to the Cloud with Forge
Forge - DevCon 2016: From Desktop to the Cloud with ForgeForge - DevCon 2016: From Desktop to the Cloud with Forge
Forge - DevCon 2016: From Desktop to the Cloud with Forge
 
From desktop to the cloud with forge
From desktop to the cloud with forgeFrom desktop to the cloud with forge
From desktop to the cloud with forge
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
 
Day 13 - Creating Data Processing Services | Train the Trainers Program
Day 13 - Creating Data Processing Services | Train the Trainers ProgramDay 13 - Creating Data Processing Services | Train the Trainers Program
Day 13 - Creating Data Processing Services | Train the Trainers Program
 
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document StoreConnector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
 
Serverless patterns
Serverless patternsServerless patterns
Serverless patterns
 
Oracle Integration Cloud 概要(20200507版)
Oracle Integration Cloud 概要(20200507版)Oracle Integration Cloud 概要(20200507版)
Oracle Integration Cloud 概要(20200507版)
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 
Oracle OpenWorld 2015 Recap Webinar: What's New with WebCenter, The Cloud, an...
Oracle OpenWorld 2015 Recap Webinar: What's New with WebCenter, The Cloud, an...Oracle OpenWorld 2015 Recap Webinar: What's New with WebCenter, The Cloud, an...
Oracle OpenWorld 2015 Recap Webinar: What's New with WebCenter, The Cloud, an...
 

Mais de Nelson Calero

Mais de Nelson Calero (20)

Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023
 
Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022
 
Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021
 
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
 
SSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesSSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprises
 
Practical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsPractical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environments
 
Redefining tables online without surprises
Redefining tables online without surprisesRedefining tables online without surprises
Redefining tables online without surprises
 
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in OracleProtect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
 
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
 
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
 
My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12c
 
Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con Pacemaker
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
 
MariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándaresMariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándares
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New features
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAs
 
Collaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryCollaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mystery
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAs
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Automate your Oracle Cloud Infrastructure operation

  • 1. Automate your Oracle Cloud Infrastructure operations Julio 2018 Nelson Calero
  • 2. Today’s topics • Oracle cloud concepts (quick review) • CLI tools (focus on OCI) • Examples • Automation 2 © 2018 Pythian Intended audience: DBAs interested in Cloud and DevOps
  • 3. • Database Consultant at Pythian since 2014 • Working with Oracle tools and Linux environments since 1996 • DBA Oracle (2001) & MySQL (2005) • Co-founder and President of the Oracle user Group of Uruguay (2009) • LAOUC Director of events (2013) • Computer Engineer (1998) • Oracle ACE (2014), Oracle ACE Director (2017) • Oracle Certified Professional 10g/11g/12c (2008), OCE, Cloud • Amazon Solutions Architect – Associate (2016) • Google Cloud Architect (2017), Google Cloud Data Engineer (2017) • Oracle University Instructor (2011) • Blogger and speaker: Oracle Open World, Collaborate, OTN Tour, Regional conferences About me 3 © 2018 Pythian http://www.linkedin.com/in/ncalero @ncalerouy
  • 4. Pythian overview © 2015 Pythian Confidential4 • 21 Years of data infrastructure management consulting • 250+ Top brands • 11800+ Systems under management • 400+ employees in 35 countries • 10 Oracle ACEs, 4 ACED, 3 OakTable members, 2 OCM, 6 Microsoft MVPs, 1 Cloudera Champion of Big Data, AWS Certified Solutions Architect – 2 Professional, 12 Associate • Oracle, Microsoft, MySQL, Hadoop, Cassandra, MongoDB, and more • Infrastructure, Cloud, DevOps, and application expertise
  • 5. 5 © 2018 Pythian
  • 7. Oracle Cloud - IaaS OCI (new gen. - 2017) •Audit •Compute •Container Engine for Kubernetes •Container Registry •Load Balancing •Object Storage •Oracle Cloud Infrastructure Database •Networking •Ravello •Wercker 7 OCI Classic (v1 - 2014) •Compute Classic •Container Classic •Container Registry Classic •Dedicated Compute Classic - SPARC Model 300 •DIVA (media assets) •Load Balancing Classic •Messaging •Storage Classic •Storage Software Appliance https://docs.oracle.com/en/cloud/iaas/index.html © 2018 Pythian
  • 8. Oracle Cloud - PaaS Application Development • API Catalog • Application Container • Autonomous Mobile Cloud Enterprise • Developer • Developer Classic • Java • Java - SaaS Extension • Mobile • Mobile Cloud Enterprise • Visual Builder 8 Business Analytics •Analytics Cloud •Big Data Discovery •Big Data Preparation •Business Intelligence •Data Visualization •Internet of Things Data Management •Autonomous Data Warehouse Cloud •Big Data •Big Data Cloud •Big Data SQL Cloud •Data Hub •Database •Database Backup •Database Schema •Event Hub •Exadata •Exadata Express •MySQL Database Integration •API Platform •Apiary •Data Integration Platform •Data Integrator •Integration •GoldenGate •Managed File Transfer •Process •Self-Service Integration •SOA Management •Management cloud Security •CASB •Identity https://docs.oracle.com/en/cloud/paas/index.html
  • 9. OCI – DBCS editions and versions 9 © 2018 Pythian
  • 10. Oracle cloud elements – network and instance 10 https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsg/terminology.html https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsg/ip-networks.html
  • 12. © 2015 Pythian Confidential12 http://cloud.oracle.com
  • 13. Oracle Cloud dashboard 13 © 2018 Pythian
  • 14. © 2015 Pythian Confidential14
  • 15. Other ways to access to Oracle Cloud • API (REST) - https://docs.cloud.oracle.com/iaas/api/ • SDK (Java, Python, Ruby) • CLI tools – Generic and specific to each service – Example: Object storage • HDFS Plug-in • NFS Gateway • Terraform • OCI native API or Amazon S3 compatible API 15 © 2018 Pythian
  • 16. OCI CLI tools 16 ORACLE CLOUD INFRASTRUCTURE Database System Bare Metal Compute Container dbaascli raccli dbpatchm bkup_api opc (classic) oci oracle-dbcs-cli ftmcli.jar bmcs Virtual Machine Load Balancer Object Storage REST SDK © 2018 Pythian Download tools from OTN: http://www.oracle.com/technetwork/topics/cloud/downloads/index.html
  • 17. Required account details for CLI OCI Classic • REST endpoint • user • password • identity domain 17 © 2018 Pythian OCI • tenancy OCID • compartment OCID • user OCID • public key fingerprint • region OCI: https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm OCI-C: https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stopc/preparing-use-cli.html
  • 18. Example – opc (OCI-C) on Windows bash ncalero@H6RMYZ1:~/.opc$ cat oci-profile.txt { "global": { "format": "text", "debug-requests": false }, "compute": { "user": "/Compute-a123456/myuser", "password-file": "/home/ncalero/.opc/opc-oci-pwd", "endpoint": "api-yours.compute.us2.oraclecloud.com/" } } ncalero@H6RMYZ1:~/.opc$ ls -l opc-oci-pwd oci-profile.txt -rw------- 1 ncalero ncalero 11 May 23 15:25 opc-oci-pwd -rw------- 1 ncalero ncalero 245 May 23 15:26 oci-profile.txt ncalero@H6RMYZ1:~/.opc$ export OPC_PROFILE_FILE=oci-profile.txt ncalero@H6RMYZ1:~/.opc$ export OPC_PROFILE_DIRECTORY=$HOME/.opc 18 © 2018 Pythian identity domain user REST endpoint
  • 19. ncalero@H6RMYZ1:~$ opc compute instance list /Compute-a123456/myuser NAME /Compute-a123456/myuser/AppVM1-myuser/e6880f1f-c2b9-4b7c-87cd-eebf8168f13a ncalero@H6RMYZ1:~$ opc -f table -F name,status compute orchestration-v2 list /Compute-a123456/myuser +---------------------------------------------+----------------+ NAME | STATUS +---------------------------------------------+----------------+ /Compute-a123456/myuser/AppVM1-myuser | terminal_error +---------------------------------------------+----------------+ ncalero@H6RMYZ1:~$ opc -f json compute orchestration-v2 get /Compute-a123456/myuser/AppVM1-myuser | egrep -A5 "health" "health": { "cause": "create_failed", "detail": "System object cannot be created as specified in template. Ensure that the template defines a valid object with all necessary fields.", "error": "seclist /Compute-a123456/myuser/app-seclist-myuser not found", "object": null, "status": "terminal_error" 19 © 2018 Pythian
  • 20. REST API - OCI-C • Account information needed: – Rest endpoint: https://api-yours.compute.us2.oraclecloud.com/ • Displayed in Site Selector in top of web console – Resource path – Resource name: /Compute-{identityDomainName}/{user}/{object_id} – Password • First - get authentication token, valid for 30 minutes 20 © 2018 Pythian curl -i -X POST -H "Content-Type: application/oracle-compute-v3+json" –d '{"user":"/Compute-a123456/myuser","password":“xxxx"}' https://api-yours.compute.us2.oraclecloud.com/authenticate/
  • 21. REST API - OCI-C - auth response 21 © 2018 Pythian HTTP/1.1 204 No Content Date: Wed, 23 May 2018 20:41:20 GMT Server: nginx Content-Type: text/plain; charset=UTF-8 X-Oracle-Compute-Call-Id: 180523f5d2c9d6a90c27ce4462198de27be2c6 Expires: Wed, 23 May 2018 20:41:20 GMT Cache-Control: no-cache Vary: Accept Content-Length: 0 Set-Cookie: nimbula=eyJpZGVudGl0eSI6ICJ7XCJyZWFsbVwiOiBcImNvbXB1dGUtdXMyLXo0M1wiLCBcInZhbHVlXCI6IFwie1xcXCJjdXN 0b21lclxcXCI6IFxcXCJDb21wdXRlLWE0ODAwNjZcXFwiLCBcXFwicmVhbG1cXFwiOiBcXFwiY29tcHV0ZS11czItejQzXFxcIi wgXFxcImVudGl0eV90eXBlXFxcIjogXFxcInVzZXJcXFwiLCBcXFwic2Vzc2lvbl9leHBpcmVzXFxcIjogMTUyNzExODg4MC4zN jE0NTMxLCBcXFwiZXhwaXJlc1xcXCI6IDE1MjcxMDk4ODAuMzYxNTAxOSwgXFxcInVzZXJcXFwiOiBcXFwiL0NvbXB1dGUtYTQ4 MDA2Ni9TdHVkZW50MDJcXFwiLCBcXFwiZ3JvdXBzXFxcIjogW1xcXCIvQ29tcHV0… Content-Language: en
  • 22. REST API - OCI-C - example 22 © 2018 Pythian ncalero@H6RMYZ1:~/.opc$ export COMPUTE_COOKIE='nimbula=eyJpZGVudGl0eSI6.. ; Path=/; Max-Age=1800‘ ncalero@H6RMYZ1:~/.opc$ curl -X GET -H "Cookie: $COMPUTE_COOKIE" -H "Accept: application/oracle- compute-v3+json" https://api-yours.compute.us2.oraclecloud.com/instance/Compute-a123456/myuser/ {"result": [{"domain": "compute-a123456.oraclecloud.internal.", "placement_requirements": ["/system/compute/placement/default", "/system/compute/allow_instances"], "ip": "10.31.103.11", "fingerprint": "", "image_metadata_bag": … ncalero@H6RMYZ1:~/.opc$ curl -X GET -H "Cookie: $COMPUTE_COOKIE" -H "Accept: application/oracle- compute-v3+json" https://api-yours.compute.us2.oraclecloud.com/instance/Compute-a123456/myuser/ | jshon -e result -a -e label "appvm1-S01“ Examples in docs: https://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsa/Use_Cases.html Parsing JSON output with jshon unix tool:
  • 23. REST API - OCI • Account information needed: – Region endpoint+version: https://iaas.us-ashburn-1.oraclecloud.com/20160918 – KeyID: <TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT> – User privateKey • JSON used for request and response body • All requests must be signed (Authorization header) https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm • Scripts provided by Oracle to simplify this process: – Bash, PowerShell, C#, Java, NodeJS, Perl, PHP, Python, Ruby, Go 23 © 2018 Pythian https://docs.cloud.oracle.com/iaas/Content/API/Concepts/signingrequests.htm
  • 24. REST API - OCI - Example 24 © 2018 Pythian ncalero@H6RMYZ1:~/bin$ ./oci-curl iaas.us-ashburn-1.oraclecloud.com get "/20160918/instances?compartmentId=ocid1.compartment.oc1..aaaaaaapqowerpoirdalsdkfajlfklfdkalj flasdfl" [{"availabilityDomain":"HDGG:US-ASHBURN-AD-1","compartmentId":"ocid1.compartment.oc1.. aaaaaaapqowerpoirdalsdkfajlfklfdkaljflasdfl ","definedTags":{},"displayName":"Demo- Instance","extendedMetadata":{},"faultDomain":null,"freeformTags":{},"id":"ocid1.instance.oc1.iad.abuwc ljtxf33kdnipvlsewtoxpdtljex6zq5gl2vsccmgffvlfcsswom5usa","imageId":"ocid1.image.oc1.iad.aaaaaaaaqza35hd 7hx6o2xnwkv34g7p7irsxfm4zwkcq6wzz4kquyf6r2j6q","ipxeScript":null,"launchMode":"NATIVE","launchOptions": {"bootVolumeType":"ISCSI","firmware":"UEFI_64","networkType":"VFIO","remoteDataVolumeType":"PARAVIRTUAL IZED"},"lifecycleState":"TERMINATED","metadata":{"ssh_authorized_keys":"ssh-rsa AAAAB3Nxxxxxxxxx…. calero@H6RMYZ1n","user_data":"IyEvYmluL2Jhc2gKdG91Y2ggadlfjalsdfjdalfalklfdVuCnl1bSB1cGRhdGUgLXkKdG91Y 2ggL3Jvb3QvcnVuX2NvbXBsZXRlCg=="},"region":"iad","shape":"VM.Standard1.2","sourceDetails":{"sourceType" :"image","bootVolumeSizeInGBs":null,"imageId":"ocid1.image.oc1.iad.aaaaaaaaqza35hd7hx6o2xnwkv34g7p7irsx fm4zwkcq6wzz4kquyf6r2j6q","kmsKeyId":null},"timeCreated":"2018-07- 02T17:21:54.902Z","timeMaintenanceRebootDue":null}] fin real ncalero@H6RMYZ1:~/bin$ tail -2 oci-curl # ncalero oci-curl $* Only change to bash script found in docs to use it here:
  • 25. Example: creating a Compute Instance We need to create/use several components: – OCI • Compartment • Virtual Cloud Network – Subnet, Internet GW, route table, security list, security rules, vnic • OS Image • Shape • Ssh keys – OCI-C: extra network & security steps 25 © 2018 Pythian
  • 27. Example: creating a Compute Instance • Using web console • Using API / CLI – No wizard, each component must be created • Automation – OCI-C orchestration – Terraform provider • oci for OCI • opc for OCI-C 27 © 2018 Pythian
  • 28. © 2015 Pythian Confidential28
  • 29. © 2015 Pythian Confidential29
  • 30. © 2015 Pythian Confidential30
  • 31. OCI-C orchestration 31 © 2018 Pythian { "account" : "/Compute-a123456/default", "description" : "This is the bastion, app/web host", "tags" : [ "calero" ], "name" : "/Compute-a123456/calero/AppVM1-calero", "objects" : [ { "account" : "/Compute-a123456/default", "desired_state" : "inherit", "description" : "This is the bastion, app/web host", "persistent" : false, "template" : { "networking" : { "eth1" : { "vnic" : "/Compute-a123456/calero/eth1", "ipnetwork" : "/Compute- a123456/calero/appIPnetwork-calero", "nat" : [ ], "vnicsets" : [ "/Compute-a123456/calero/app- vNICSet-calero" ] }, "eth0" : { "seclists" : [ "/Compute-a123456/calero/app- seclist-calero" ], "nat" : "ipreservation:/Compute- a123456/calero/appvm1-pubip-calero", "dns" : [ "appvm1-S02" ] } }, "name" : "/Compute-a123456/calero/AppVM1-calero", "tags" : [ "calero" ], "hostname" : "appvm1-S02", "label" : "appvm1-S02", "shape" : "oc3", "attributes" : { "userdata" : { "pre-bootstrap" : { "failonerror" : true, "script" : [] } } }, "imagelist" : "/oracle/public/OL_7.2_UEKR3_x86_64", "sshkeys" : [ "/Compute-a123456/calero/ssh-key- calero" ] },
  • 32. Example: OCI Instance using Terraform • Download Terraform binary (my example uses v0.11.3) – https://www.terraform.io/downloads.html • Download Terraform OCI-provider (using v2.1.0) – https://github.com/oracle/terraform-provider-oci/releases • Create .tf HCL Project (based on examples): – https://github.com/oracle/terraform-provider-oci/tree/master/docs/examples • Configure your account Access (env-vars.ps1) – Tenancy and user OCIDs, fingerprint, private key, region • Terraform Plan • Terraform Apply • Step by step guide: https://community.oracle.com/docs/DOC-1019936 32 © 2018 Pythian
  • 33. ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI/$ ls block.tf compute.tf env-vars.ps1 outputs.tf userdata datasources.tf network.tf provider.tf remote-exec.tf variables.tf ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI$ cat /mnt/c/users/calero/AppData/Roaming/terraform.rc providers { oci = "d:softterraform-provider-oci_v2.1.0.exe" } 33 © 2018 Pythian PS D:GitHubterraform-OCI> cat ./env-vars.ps1 $env:TF_VAR_tenancy_ocid="ocid1.tenancy.oc1..aaaaaaaaw5hodl4pajmymyo62bwkj4kokziowmjkvj7fvmgt4lqia3yg7km" $env:TF_VAR_user_ocid="ocid1.user.oc1..aaaaaaaaiyhrscq7rhfiyhrscql4tb3ojto2ysw72l656yknkyqau2lxotqf" $env:TF_VAR_compartment_ocid="ocid1.compartment.oc1.. aaaaaaaakdevdha7q7yjdheridcy63sgv2syefv7x46u67jk4hj" $env:TF_VAR_region="us-ashburn-1“ $env:TF_VAR_fingerprint="db:a3:b8:59:ce:05:ff:78:c0:fb:aa:ca:d7:09:77:ad" $env:TF_VAR_private_key_path="C:Userscalero.ocioci_api_key.pem" ### Public/private keys used on the instances $env:TF_VAR_ssh_public_key = Get-Content C:Userscalero.sshid_rsa.pub -Raw $env:TF_VAR_ssh_private_key = Get-Content C:Userscalero.sshid_rsa -Raw PS D:GitHubterraform-OCI> ./env-vars.ps1
  • 34. ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI$ cat compute.tf resource "oci_core_instance" "DemoInstance" { availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}" compartment_id = "${var.compartment_ocid}" display_name = "Demo-Instance" image = "${lookup(data.oci_core_images.OLImageOCID.images[0], "id")}" shape = "${var.InstanceShape}" subnet_id = "${oci_core_subnet.SN-DemoSubnetAD1.id}" metadata { ssh_authorized_keys = "${var.ssh_public_key}" user_data = "${base64encode(file(var.InstanceBootStrap))}" } } ncalero@H6RMYZ1:/mnt/d/GitHub/terraform-OCI/demo$ cat provider.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}" } 34 © 2018 Pythian
  • 35. 35 © 2018 Pythian
  • 36. 36 © 2018 Pythian
  • 37. © 2015 Pythian Confidential37 PS D:GitHubterraform-OCI> d:softterraform graph | dot -Tpng -o demo-graph.png
  • 38. Terraform apply © 2015 Pythian Confidential38
  • 39. PS D:GitHubterraform-OCIdemo> d:softterraform apply Terraform will perform the following actions: … Plan: 9 to add, 1 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes oci_core_volume.DemoBlock0: Creating... … oci_core_instance.DemoInstance: Creation complete after 1m9s (ID: ocid1.instance.oc1.iad.abuwcljtxf33kdni...toxpdtljex6zq5gl2vsccmgffvlfcsswom5usa) … Apply complete! Resources: 9 added, 0 changed, 0 destroyed. Outputs: InstancePublicIP = [ 129.213.48.178 ] 39 © 2018 Pythian
  • 40. Automation • Not the kind you are used to as DBA – PaaS have built-in automation. DBaaS example: • Backup • Recovery • Patch • Failover • Extra tools provided by Oracle – OCI-C orchestration – OCI Terraform provider • built-in since 0.9.4, external before – Chef Knife Plugin – EBS Cloud Admin Tool 40 © 2018 Pythian
  • 41. © 2015 Pythian Confidential41 Example: DBCS patching
  • 42. © 2015 Pythian Confidential42
  • 43. © 2015 Pythian Confidential43
  • 44. [root@oacsdb ~]# dbaascli dbpatchm --run -list_tools DBAAS CLI version 1.0.0 Executing command dbpatchm --run -list_tools -cli /var/opt/oracle/patch/dbpatchm -list_tools -cli Subroutine sync_dg_standby redefined at /var/opt/oracle/patch/dbpatchm line 7383. Starting DBPATCHM Logfile is /var/opt/oracle/log/dbpatchm/dbpatchm_2018-06-03_20:43:12.log Config file is /var/opt/oracle/patch/dbpatchm.cfg INFO: cdb is set to : yes INFO: dbversion detected : 12102 INFO: patching type : psu dbpatchm Execution completed [root@oacsdb dbpatchm]# less dbpatchm_2018-06-03_20:43:12.log 2018-06-03 20:43:14 - Output from cmd rpm -qa|grep -i dbaastools run on localhost is: 2018-06-03 20:43:14 - dbaastools-1.0-1+17.3.5.0.0_170731.1639.x86_64 2018-06-03 20:43:14 - cmd took 0 seconds … 2018-06-03 20:43:15 - INFO: total rpm's available for this version: 35 44 © 2018 Pythian
  • 45. [root@oacsdb ~]# dbaascli dbpatchm --run -toolsinst -rpmversion=18.2.3.1.0_180530.0000 … [root@oacsdb ~]# dbaascli dbpatchm --run -list_patches DBAAS CLI version 1.0.0 Executing command dbpatchm --run -list_patches -cli /var/opt/oracle/patch/dbpatchm -list_patches -cli Logfile is /var/opt/oracle/log/dbpatchm/dbpatchm_2018-07-01_14:59:03.log Config file is /var/opt/oracle/patch/dbpatchm.cfg INFO: cdb is set to : yes INFO: dbversion detected : 12102 INFO: patching type : psu Current Patch : 25171037-SE Available patches : Patchid : 26609783-SE Patchid : 26713565-SE Patchid : 26925311-SE Patchid : 27338041-SE dbpatchm Execution completed 45 © 2018 Pythian
  • 46. [root@oacsdb ~]#[root@oacsdb dbpatchm]# dbaascli dbpatchm --run -prereq … INFO: dbversion detected : 12102 INFO: patching type : psu WARN: inventory check: patch 25731006 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 23026585 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 23088803 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 24624166 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 22366322 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 25873689 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 25437695 installed is a oneoff - which could be lost in upgrade process WARN: and it can be reinstalled manually if needed, post upgrade. WARN: inventory check: patch 25171037 installed is a psu - upgrade will bring in newer s/w bits INFO: there are interim patches installed - please check /var/opt/oracle/log/dbpatchm/invlog for details oss_patch: Database version is required dbpatchm Execution completed 46 © 2018 Pythian
  • 47. © 2015 Pythian Confidential47
  • 48. © 2015 Pythian Confidential48
  • 49. DBCS patching summary • Cloud tools (dbaascli) pre-installed in compute instance • Logs in /var/opt/oracle/log/dbpatchm/ • Tools needs to be updated for patch to work • Conflict resolution automated for included one-offs 49 © 2018 Pythian
  • 50. Example: managing DBCS backups Backups are configured with a checkbox when creating the DBCS. Managing backups from the Compute service instance: • Listing existing backups: RMAN client • Creating an on demand backup: as root: • To recover from most recent backup: 50 © 2018 Pythian dbaascli orec –args -latest /var/opt/oracle/bkup_api/bkup_api bkup_start https://docs.oracle.com/en/cloud/paas/database-dbaas-cloud/csdbi/back-and-recover.html
  • 51. Automation: Infrastructure as a Code (IaC) • Lifecycle: Provision, Update, Destroy • IaC categories: – Scripts – Configuration management tools: chef, puppet – Server templating tools: packer, vagrant, docker – Server provisioning tools: terraform, cloud formation, ansible 51 © 2018 Pythian
  • 52. More terraform examples Creating a kubernetes cluster https://github.com/oracle/terraform-kubernetes-installer Same account configuration as previous OCI instance example, but also: • Policy at root compartment – allow service OKE to manage all-resources in tenancy • A group to which a policy grants appropriate permissions • command line tool kubectl https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengprerequisites.htm NOTE: Only cluster setup – need an application to consume it 52 © 2018 Pythian
  • 53. What’s next? • Explore the APIs/CLI for all Oracle cloud services DBCS: https://docs.oracle.com/en/cloud/paas/database-dbaas-cloud/csdbi/oracle-dbcs-cli- config-file.html • Automate infrastructure changes with CI/CD pipelines • Take advantage of Oracle Management Cloud – more than just monitoring: https://cloud.oracle.com/management • Explore hybrid Cloud deployments to expand your on-premises capacity for specific use cases 53 © 2018 Pythian
  • 55. References - documentation Oracle Cloud tools: http://www.oracle.com/technetwork/topics/cloud/downloads/index.html Oracle Cloud API https://docs.cloud.oracle.com/iaas/api/#/ Oracle Cloud Compute shapes https://docs.cloud.oracle.com/iaas/Content/Compute/References/computeshapes.htm https://cloud.oracle.com/en_US/compute-classic/pricing EBS cloud admin tool https://blogs.oracle.com/ebsandoraclecloud/june-2018-ebs-cloud-admin-tool-updates-available Using Terraform with OCI https://community.oracle.com/docs/DOC-1019936 55 © 2018 Pythian