Add Contabo IAC configuration and workflows for OpenTofu integration
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
name: Terraform Contabo IAC Apply
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 1 * * 0"
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "terraform/contabo-iac/**"
|
||||
jobs:
|
||||
opentofu-apply:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup environment
|
||||
uses: ./.github/actions/setup-env
|
||||
|
||||
- name: Setup OpenTofu environment
|
||||
uses: ./.github/actions/setup-opentofu-env
|
||||
|
||||
- name: OpenTofu Init and Apply
|
||||
env:
|
||||
BW_PROJECT_ID: ${{ secrets.BW_PROJECT_ID }}
|
||||
BW_ORGANIZATION_ID: ${{ secrets.BW_ORGANIZATION_ID }}
|
||||
BW_ACCESS_TOKEN: ${{ secrets.BW_ACCESS_TOKEN }}
|
||||
run: |
|
||||
cd terraform/contabo-iac
|
||||
sectool -f ../../sectool.json exec tofu init
|
||||
sectool -f ../../sectool.json exec tofu apply --auto-approve
|
||||
@@ -0,0 +1,39 @@
|
||||
name: Terraform Contabo IAC Validate on Pull Request
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "terraform/contabo-iac/**"
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
jobs:
|
||||
terraform-validate:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup environment
|
||||
uses: ./.github/actions/setup-env
|
||||
|
||||
- name: Setup OpenTofu environment
|
||||
uses: ./.github/actions/setup-opentofu-env
|
||||
|
||||
- name: OpenTofu Init and Validate
|
||||
env:
|
||||
BW_PROJECT_ID: ${{ secrets.BW_PROJECT_ID }}
|
||||
BW_ORGANIZATION_ID: ${{ secrets.BW_ORGANIZATION_ID }}
|
||||
BW_ACCESS_TOKEN: ${{ secrets.BW_ACCESS_TOKEN }}
|
||||
run: |
|
||||
cd terraform/contabo-iac
|
||||
sectool -f ../../sectool.json exec tofu init
|
||||
sectool -f ../../sectool.json exec tofu validate
|
||||
sectool -f ../../sectool.json exec tofu fmt -check
|
||||
sectool -f ../../sectool.json exec tofu plan
|
||||
@@ -17,4 +17,13 @@ code DELETE immediately. We have been warned.
|
||||
./bin/occ db:add-missing-primary-keys
|
||||
# Disable maintenance
|
||||
./bin/occ maintenance:mode --off
|
||||
```
|
||||
|
||||
# Contabo CLI
|
||||
|
||||
Download latest version from [here](https://github.com/contabo/cntb/releases).
|
||||
|
||||
Setup:
|
||||
```
|
||||
sectool exec cntb get instances --oauth2-clientid="$CONTABO_CLIENT_ID" --oauth2-client-secret="$CONTABO_CLIENT_SECRET" --oauth2-user="$CONTABO_API_USER" --oauth2-password="$CONTABO_API_PASSWORD"
|
||||
```
|
||||
@@ -1,2 +1,6 @@
|
||||
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
|
||||
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
|
||||
CONTABO_CLIENT_ID=$CONTABO_CLIENT_ID
|
||||
CONTABO_CLIENT_SECRET=$CONTABO_CLIENT_SECRET
|
||||
CONTABO_API_USER=$CONTABO_USER_NAME
|
||||
CONTABO_API_PASSWORD=$CONTABO_API_PASSWORD
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
terraform {
|
||||
backend "s3" {
|
||||
bucket = "a13labs.infra.eu"
|
||||
key = "contabo.core.infra.tfstate"
|
||||
region = "eu-west-1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
resource "contabo_instance" "vps_1" {
|
||||
}
|
||||
|
||||
import {
|
||||
id = "201912751"
|
||||
to = contabo_instance.vps_1
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
output "instances" {
|
||||
value = [
|
||||
{
|
||||
cpu_cores = contabo_instance.vps_1.cpu_cores
|
||||
disk_mb = contabo_instance.vps_1.disk_mb
|
||||
id = contabo_instance.vps_1.id
|
||||
image_id = contabo_instance.vps_1.image_id
|
||||
ip_config = contabo_instance.vps_1.ip_config
|
||||
mac_address = contabo_instance.vps_1.mac_address
|
||||
name = contabo_instance.vps_1.name
|
||||
os_type = contabo_instance.vps_1.os_type
|
||||
ram_mb = contabo_instance.vps_1.ram_mb
|
||||
v_host_id = contabo_instance.vps_1.v_host_id
|
||||
},
|
||||
]
|
||||
description = "VPS instances details"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
terraform {
|
||||
required_version = "~>1.8"
|
||||
required_providers {
|
||||
contabo = {
|
||||
source = "contabo/contabo"
|
||||
version = ">= 0.1.31"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "contabo" {
|
||||
oauth2_client_id = var.contabo_client_id
|
||||
oauth2_client_secret = var.contabo_client_secret
|
||||
oauth2_user = var.contabo_api_user
|
||||
oauth2_pass = var.contabo_api_password
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
|
||||
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
|
||||
TF_VAR_contabo_client_id=$CONTABO_CLIENT_ID
|
||||
TF_VAR_contabo_client_secret=$CONTABO_CLIENT_SECRET
|
||||
TF_VAR_contabo_api_password=$CONTABO_API_PASSWORD
|
||||
TF_VAR_contabo_api_user=$CONTABO_USER_NAME
|
||||
@@ -0,0 +1,23 @@
|
||||
variable "contabo_client_id" {
|
||||
description = "Contabo Client ID"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "contabo_client_secret" {
|
||||
description = "Contabo Client Secret"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "contabo_api_password" {
|
||||
description = "Contabo API Password"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "contabo_api_user" {
|
||||
description = "Contabo API User"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
Reference in New Issue
Block a user