Setting Up OCI Resource Manager
Creating a Stack:
- Log in to the OCI Console.
- Navigate to Resource Manager → Stacks → Create Stack.
- Upload your Terraform configuration file.
Example Terraform Configuration:
provider "oci" {
region = "us-ashburn-1"
}
resource "oci_core_instance" "my_instance" {
availability_domain = "AD-1"
compartment_id = "<compartment_OCID>"
shape = "VM.Standard2.1"
display_name = "MyInstance"
image_id = "<image_OCID>"
subnet_id = "<subnet_OCID>"
source_details {
source_type = "image"
image_id = "<image_OCID>"
}
metadata = {
ssh_authorized_keys = file("~/.ssh/id_rsa.pub")
}
}
Deploying Infrastructure with Resource Manager
Creating a Job:
oci resource-manager stack create-job --stack-id <stack_OCID> --display-name "MyDeploymentJob" --operation-type APPLY
Monitoring Deployment:
oci resource-manager job list --stack-id <stack_OCID>
Managing and Updating Infrastructure
- Updating a Stack:
- Modify the Terraform configuration file.
- Navigate to Resource Manager → Stacks → Update Stack.
- Upload the updated Terraform configuration file and apply changes.
Destroying Infrastructure:
oci resource-manager stack create-job --stack-id <stack_OCID> --display-name "DestroyJob" --operation-type DESTROY
Integrating with CI/CD Pipelines
Example Integration with GitHub Actions:
name: Deploy to OCI
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Terraform
uses: hashicorp/setup-terraform@v1
- name: Terraform Init
run: terraform init
- name: Terraform Apply
run: terraform apply -auto-approve
env:
OCI_REGION: ${{ secrets.OCI_REGION }}
OCI_TENANCY_OCID: ${{ secrets.OCI_TENANCY_OCID }}
OCI_USER_OCID: ${{ secrets.OCI_USER_OCID }}
OCI_FINGERPRINT: ${{ secrets.OCI_FINGERPRINT }}
OCI_PRIVATE_KEY_PATH: ${{ secrets.OCI_PRIVATE_KEY_PATH }}
OCI_PRIVATE_KEY_PASSPHRASE: ${{ secrets.OCI_PRIVATE_KEY_PASSPHRASE }}
Thank you
Osama