summaryrefslogtreecommitdiff
path: root/terraform
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-06 18:11:46 -0500
committerSeth Flynn <[email protected]>2025-02-06 18:12:01 -0500
commit72ce5493e34d1f3ce271682cfb3435946f038dca (patch)
tree1921c846340fa241f9fbd11fb3373a122d931eb9 /terraform
parent178d5606278b5e4bfcb9e3cb8296c4392850b2a8 (diff)
terraform: import oci infra into state
Diffstat (limited to 'terraform')
-rw-r--r--terraform/.terraform.lock.hcl55
-rw-r--r--terraform/hardware.tf20
-rw-r--r--terraform/imports.tf16
-rw-r--r--terraform/main.tf4
-rw-r--r--terraform/oci.tf58
-rw-r--r--terraform/providers.tf26
6 files changed, 163 insertions, 16 deletions
diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl
index 486fc0c..e8b0fa9 100644
--- a/terraform/.terraform.lock.hcl
+++ b/terraform/.terraform.lock.hcl
@@ -2,25 +2,25 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
- version = "4.51.0"
+ version = "4.52.0"
constraints = "~> 4.0"
hashes = [
- "h1:BSJjZbUQQpZHQKNHi09R/FVdhM27Lvu45rw2CNALBU4=",
- "zh:0b58993b11326a6fefa51896bcd54ac56fcfc44ad75b0cef4bfaddf4c75bedf6",
- "zh:0e80ad26ac8c72a58b8a55ca77249b34a1c62264f267700c0f284ca0ccd6eea6",
- "zh:12202eeda021cef6c353d58d763d4ff74950b4c81d3a39c5bd371558f490f4ac",
- "zh:1ab0e050598bac739f8596549394d798993738278917604fc7a47b9247b8d5c7",
- "zh:46f0981f71ce81ea24065264a55da8823a6776434a1507f6b33bbc2dafb94be3",
- "zh:48401cde69498dee4fd6892f7dd3d92fedb1ed0d533790b4d418815320fb502f",
- "zh:4be3212ad0a474ea865d25da0ab22288dcc9fce6ed51e39b45f5a5a71a6a903c",
- "zh:5ff79f144a2f3bdb00d5cd0de15667b41ac57794e0c7788f25d3c6281227f9e2",
+ "h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
+ "zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
+ "zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
+ "zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
+ "zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
+ "zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
+ "zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
+ "zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
+ "zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
- "zh:89dc2b2f2ec3c03e42f0f348ec9f4c6deb7a86ae3594f35216c7439672cd214b",
- "zh:8f055df13e2f7f158c6d6edc7fa2053c16781ee90cb812a1519bce7378447244",
- "zh:a00bb5787cf3a252fcaa512ebbf7bb1234853ac745288dc733bed0c95046e9ae",
- "zh:df3d303d74643f7a269202af8a425472e605a9d97bb4a3886a6ff9dc294b8df8",
- "zh:e686cc60854151a6c7e154fb1ea6b3b885177d1effc76c259dc68de38743a1fb",
- "zh:f54159d55ecef0966f9e278d02fa7898c7065d9d646c75f286262f230bbea0a3",
+ "zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
+ "zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
+ "zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
+ "zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
+ "zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
+ "zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
]
}
@@ -41,6 +41,29 @@ provider "registry.opentofu.org/hashicorp/hcp" {
]
}
+provider "registry.opentofu.org/oracle/oci" {
+ version = "6.25.0"
+ constraints = "~> 6.0"
+ hashes = [
+ "h1:RpKrycLA0HUmYfE7o/D2ZzkNrN3gJjQ1oJyKocWgpz0=",
+ "zh:025a70306d8e64d9ca2b80403c6c3a66fbace10b0b14da152f847f8af39d2519",
+ "zh:1fc947735f2a5332d6fb0c15d54f010e6ba4077e030e8b8a3cb637c179c8a895",
+ "zh:3190adf0b76dba13b830a9d3de081bfea73e72a9e6142937df9e51a48abc8613",
+ "zh:3e0821e4d1505845c69738a539628d623c5785075fa77f0ce12b50bbebb19796",
+ "zh:42cce6c6f96103e37d78eecac10fa672533f24a9ef520d9ad47bc02b0c100c79",
+ "zh:435110feea29b44e1d47e5fd1f28811e59d2ca26f3e8c12e94e065977ed741a1",
+ "zh:48527d6fcf9d43c3e177d230d57ecbe56da9ef00b75d89d01dab84ed4ce3b7df",
+ "zh:660a292819f96a3aad55303dcea9360984735d112614074f0972fd8f5fae62fe",
+ "zh:6b680f1a745c33e90c491069e5b6495657765649e0ec0714ad03ecdd124c4f06",
+ "zh:7ef39b9f45dcbb3e0cb9200e906d2c9474863079d52d2d3beda814a1c30759f2",
+ "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
+ "zh:a85f9dde2129c1ebf6a573eb9c8cffecde606f7b176501e3a96af8314a62f002",
+ "zh:c53cc16f0636af8ca203d312b10ed774518e63666a5f51d0e7d7fd6741fa29b3",
+ "zh:cae377589f6d2c7e88d092cff65f7ec7ecbe046ee4243b2cd803f2d452513504",
+ "zh:e95c3c19c4db7bd2429828ac708813c448e79cdcbac15ec577617e517df9bc68",
+ ]
+}
+
provider "registry.opentofu.org/tailscale/tailscale" {
version = "0.17.2"
hashes = [
diff --git a/terraform/hardware.tf b/terraform/hardware.tf
new file mode 100644
index 0000000..8bf1763
--- /dev/null
+++ b/terraform/hardware.tf
@@ -0,0 +1,20 @@
+resource "oci_core_instance" "atlas" {
+ # availability_domain = data.oci_identity_availability_domains.borealis.availability_domains[0].name
+ availability_domain = "kMzJ:US-CHICAGO-1-AD-1"
+ compartment_id = oci_identity_compartment.borealis.id
+ shape = "VM.Standard.A1.Flex"
+
+ create_vnic_details {
+ assign_public_ip = "true"
+ subnet_id = oci_core_subnet.borealis_global.id
+ }
+
+ display_name = "atlas"
+
+ shape_config {
+ memory_in_gbs = "24"
+ nvmes = "0"
+ ocpus = "4"
+ vcpus = "4"
+ }
+}
diff --git a/terraform/imports.tf b/terraform/imports.tf
new file mode 100644
index 0000000..a94fa34
--- /dev/null
+++ b/terraform/imports.tf
@@ -0,0 +1,16 @@
+import {
+ to = oci_core_instance.atlas
+ id = "ocid1.instance.oc1.us-chicago-1.anxxeljrexqb25ycuh7peoywok5l356wn32c5q5xqpg4md4rgp4tmhtdzh4q"
+}
+import {
+ to = oci_identity_compartment.borealis
+ id = "ocid1.compartment.oc1..aaaaaaaasm3kq7wlnqaufkq7uopjn3i5nzvbyou2lem56g6zjfmvpvg3pi2a"
+}
+import {
+ to = oci_core_vcn.borealis
+ id = "ocid1.vcn.oc1.us-chicago-1.amaaaaaaexqb25yauoxabmb6kcoiseu7jjnf7msqrqjsi4bwxlrvfhmkrtra"
+}
+import {
+ to = oci_core_subnet.borealis_global
+ id = "ocid1.subnet.oc1.us-chicago-1.aaaaaaaa73blsshpatvxrewxptkrs4ws5tkveqpwhgzhqpabivudaeti4rxa"
+}
diff --git a/terraform/main.tf b/terraform/main.tf
index 0fde4cd..2b6d1ab 100644
--- a/terraform/main.tf
+++ b/terraform/main.tf
@@ -13,6 +13,10 @@ terraform {
source = "registry.opentofu.org/cloudflare/cloudflare"
version = "~> 4"
}
+ oci = {
+ source = "registry.opentofu.org/oracle/oci"
+ version = "~> 6"
+ }
hcp = {
source = "registry.opentofu.org/hashicorp/hcp"
version = "~> 0.102"
diff --git a/terraform/oci.tf b/terraform/oci.tf
new file mode 100644
index 0000000..704ff2c
--- /dev/null
+++ b/terraform/oci.tf
@@ -0,0 +1,58 @@
+# Create everything from an existing tenancy
+
+resource "oci_identity_compartment" "borealis" {
+ compartment_id = var.oracle_tenancy_ocid
+ description = "For my personal infra"
+ name = "borealis"
+}
+
+data "oci_identity_availability_domains" "borealis" {
+ compartment_id = oci_identity_compartment.borealis.id
+}
+
+output "borealis-first-availability-domain" {
+ value = data.oci_identity_availability_domains.borealis.availability_domains[0].name
+}
+
+resource "oci_core_vcn" "borealis" {
+ compartment_id = oci_identity_compartment.borealis.id
+ display_name = "borealis"
+}
+
+resource "oci_core_subnet" "borealis_global" {
+ cidr_block = "10.0.0.0/24"
+ compartment_id = oci_core_vcn.borealis.compartment_id
+ vcn_id = oci_core_vcn.borealis.id
+
+ display_name = "global"
+}
+
+resource "oci_core_security_list" "borealis_global" {
+ compartment_id = oci_core_vcn.borealis.compartment_id
+ vcn_id = oci_core_vcn.borealis.id
+
+ display_name = "default"
+
+ egress_security_rules {
+ destination = "0.0.0.0/0"
+ protocol = "all"
+ }
+
+ ingress_security_rules {
+ icmp_options {
+ code = "4"
+ type = "3"
+ }
+ protocol = "1"
+ source = "0.0.0.0/0"
+ }
+
+ ingress_security_rules {
+ icmp_options {
+ code = "-1"
+ type = "3"
+ }
+ protocol = "1"
+ source = "10.0.0.0/16"
+ }
+}
diff --git a/terraform/providers.tf b/terraform/providers.tf
index 7a25835..ca9eddd 100644
--- a/terraform/providers.tf
+++ b/terraform/providers.tf
@@ -10,6 +10,32 @@ provider "cloudflare" {
api_token = data.hcp_vault_secrets_app.borealis.secrets.cloudflare_api_token
}
+variable "oracle_fingerprint" {
+ type = string
+}
+
+variable "oracle_region" {
+ type = string
+}
+
+variable "oracle_tenancy_ocid" {
+ type = string
+}
+
+variable "oracle_user_ocid" {
+ type = string
+}
+
+provider "oci" {
+ fingerprint = var.oracle_fingerprint
+ # NOTE: Base64-encoded to avoid newlines, etc.
+ # https://github.com/oracle/terraform-provider-oci/issues/2198
+ private_key = base64decode(data.hcp_vault_secrets_app.borealis.secrets.oracle_private_key)
+ region = var.oracle_region
+ tenancy_ocid = var.oracle_tenancy_ocid
+ user_ocid = var.oracle_user_ocid
+}
+
variable "hcp_client_id" {
type = string
}