diff --git a/.github/workflows/terraform-iac-apply.yml b/.github/workflows/terraform-iac-apply.yml deleted file mode 100644 index 6d9d309..0000000 --- a/.github/workflows/terraform-iac-apply.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Terraform IAC Apply - -on: - schedule: - - cron: "0 1 * * 0" - push: - branches: - - main - paths: - - "terraform/iac/**" -jobs: - terraform-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 Ansible environment - uses: ./.github/actions/setup-ansible-env - with: - project-id: ${{ secrets.BW_PROJECT_ID }} - organization-id: ${{ secrets.BW_ORGANIZATION_ID }} - access-token: ${{ secrets.BW_ACCESS_TOKEN }} - ansible-user: ${{ secrets.ANSIBLE_USER }} - host-group: iac - - - name: Get Host Info - uses: ./.github/actions/get-host-info - id: get-host-info - with: - project-id: ${{ secrets.BW_PROJECT_ID }} - organization-id: ${{ secrets.BW_ORGANIZATION_ID }} - access-token: ${{ secrets.BW_ACCESS_TOKEN }} - ansible-user: ${{ secrets.ANSIBLE_USER }} - target-host: iac - - - name: Setup Terraform environment - uses: ./.github/actions/setup-terraform-env - - - name: Terraform 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 }} - SYSTEM_ID: ${{ steps.get-host-info.outputs.system-id }} - run: | - cd terraform/iac - export TF_VAR_system_id=$SYSTEM_ID - sectool -f ../../sectool.json exec terraform init - sectool -f ../../sectool.json exec terraform apply --auto-approve diff --git a/.github/workflows/terraform-iac-validate-on-pr.yml b/.github/workflows/terraform-iac-validate-on-pr.yml deleted file mode 100644 index fbf5c9f..0000000 --- a/.github/workflows/terraform-iac-validate-on-pr.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Terraform IAC Validate on Pull Request - -on: - pull_request: - branches: - - main - paths: - - "terraform/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 Ansible environment - uses: ./.github/actions/setup-ansible-env - with: - project-id: ${{ secrets.BW_PROJECT_ID }} - organization-id: ${{ secrets.BW_ORGANIZATION_ID }} - access-token: ${{ secrets.BW_ACCESS_TOKEN }} - ansible-user: ${{ secrets.ANSIBLE_USER }} - host-group: iac - - - name: Get Host Info - uses: ./.github/actions/get-host-info - id: get-host-info - with: - project-id: ${{ secrets.BW_PROJECT_ID }} - organization-id: ${{ secrets.BW_ORGANIZATION_ID }} - access-token: ${{ secrets.BW_ACCESS_TOKEN }} - ansible-user: ${{ secrets.ANSIBLE_USER }} - target-host: iac - - - name: Setup Terraform environment - uses: ./.github/actions/setup-terraform-env - - - name: Terraform 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 }} - SYSTEM_ID: ${{ steps.get-host-info.outputs.system-id }} - run: | - cd terraform/iac - export TF_VAR_system_id=$SYSTEM_ID - sectool -f ../../sectool.json exec terraform init - sectool -f ../../sectool.json exec terraform validate - sectool -f ../../sectool.json exec terraform fmt -check - sectool -f ../../sectool.json exec terraform plan diff --git a/terraform/iac/a13labs.me.tf b/terraform/iac/a13labs.me.tf deleted file mode 100644 index f027219..0000000 --- a/terraform/iac/a13labs.me.tf +++ /dev/null @@ -1,99 +0,0 @@ -resource "cloudns_dns_record" "a13labs_me_contabo" { - name = local.contabo_instance.name - zone = local.a13labs_me_zone - type = "A" - value = local.contabo_instance.ip - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_imaps" { - name = "imap" - zone = local.a13labs_me_zone - type = "CNAME" - value = "${cloudns_dns_record.a13labs_me_contabo.name}.${local.a13labs_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_smtps" { - name = "smtp" - zone = local.a13labs_me_zone - type = "CNAME" - value = "${cloudns_dns_record.a13labs_me_contabo.name}.${local.a13labs_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_root" { - name = "" - zone = local.a13labs_me_zone - type = "A" - value = local.contabo_instance.ip - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_spf" { - name = "" - zone = local.a13labs_me_zone - type = "TXT" - value = "v=spf1 include:_spf.tem.scaleway.com include:spf.webapps.net ~all" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_dkim" { - name = "${var.scaleway_dkim_key}._domainkey" - zone = local.a13labs_me_zone - type = "TXT" - value = "v=DKIM1; h=sha256; k=rsa; p=${var.a13labs_me_scaleway_dkim_value}" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_dmarc" { - name = "_dmarc" - zone = local.a13labs_me_zone - type = "TXT" - value = "v=DMARC1; p=none; rua=mailto:admin@${local.a13labs_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_mx" { - name = "" - zone = local.a13labs_me_zone - type = "MX" - priority = "10" - value = "mail-pt.securemail.pro" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_mail" { - name = "mail" - zone = local.a13labs_me_zone - type = "CNAME" - value = "mail-pt.securemail.pro" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_mail_smtp_srv" { - name = "_smtp._tcp" - zone = local.a13labs_me_zone - type = "SRV" - priority = 0 - weight = 1 - port = 465 - value = "smtp.${local.a13labs_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "a13labs_me_mail_imap_srv" { - name = "_imap._tcp" - zone = local.a13labs_me_zone - type = "SRV" - priority = 0 - weight = 1 - port = 993 - value = "imap.${local.a13labs_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_zone" "a13labs_me" { - domain = local.a13labs_me_zone - type = "master" -} diff --git a/terraform/iac/alexpires.me.tf b/terraform/iac/alexpires.me.tf deleted file mode 100644 index 6c955e9..0000000 --- a/terraform/iac/alexpires.me.tf +++ /dev/null @@ -1,164 +0,0 @@ -resource "cloudns_dns_record" "alexpires_me_contabo" { - name = local.contabo_instance.name - zone = local.alexpires_me_zone - type = "A" - value = local.contabo_instance.ip - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_code" { - name = "code" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_cloud" { - name = "cloud" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_tv" { - name = "tv" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_blog" { - name = "blog" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_www" { - name = "www" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_rustdesk" { - name = "rustdesk" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_prod_01" { - name = "prod-01" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_imaps" { - name = "imap" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_smtps" { - name = "smtp" - zone = local.alexpires_me_zone - type = "CNAME" - value = "${cloudns_dns_record.alexpires_me_contabo.name}.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_root" { - name = "" - zone = local.alexpires_me_zone - type = "A" - value = local.contabo_instance.ip - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_spf" { - name = "" - zone = local.alexpires_me_zone - type = "TXT" - value = "v=spf1 include:_spf.tem.scaleway.com include:spf.webapps.net ~all" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_dkim" { - name = "${var.scaleway_dkim_key}._domainkey" - zone = local.alexpires_me_zone - type = "TXT" - value = "v=DKIM1; h=sha256; k=rsa; p=${var.alexpires_me_scaleway_dkim_value}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_dmarc" { - name = "_dmarc" - zone = local.alexpires_me_zone - type = "TXT" - value = "v=DMARC1; p=none; rua=mailto:admin@${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_mx" { - name = "" - zone = local.alexpires_me_zone - type = "MX" - priority = "10" - value = "mail-pt.securemail.pro" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_mail" { - name = "mail" - zone = local.alexpires_me_zone - type = "CNAME" - value = "mail-pt.securemail.pro" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_mail_smtp_srv" { - name = "_smtp._tcp" - zone = local.alexpires_me_zone - type = "SRV" - priority = 0 - weight = 1 - port = 465 - value = "smtp.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_record" "alexpires_me_mail_imap_srv" { - name = "_imap._tcp" - zone = local.alexpires_me_zone - type = "SRV" - priority = 0 - weight = 1 - port = 993 - value = "imap.${local.alexpires_me_zone}" - ttl = "3600" -} - -resource "cloudns_dns_zone" "alexpires_me" { - domain = local.alexpires_me_zone - type = "master" -} -import { - to = cloudns_dns_zone.alexpires_me - id = local.alexpires_me_zone -} - -moved { - from = cloudns_dns_record.alexpires_me_microk8s - to = cloudns_dns_record.alexpires_me_contabo -} diff --git a/terraform/iac/backend.tf b/terraform/iac/backend.tf deleted file mode 100644 index 9848ece..0000000 --- a/terraform/iac/backend.tf +++ /dev/null @@ -1,7 +0,0 @@ -terraform { - backend "s3" { - bucket = "a13labs.infra" - key = "a13labs-iac.tfstate" - region = "us-east-1" - } -} diff --git a/terraform/iac/buckets.tf b/terraform/iac/buckets.tf deleted file mode 100644 index 82b6475..0000000 --- a/terraform/iac/buckets.tf +++ /dev/null @@ -1,45 +0,0 @@ -resource "scaleway_object_bucket" "infra_assets" { - name = "a13labs-infra-${var.bucket_suffix}" - project_id = var.scaleway_project_id - region = "fr-par" -} - -resource "scaleway_object_bucket_policy" "policy" { - bucket = scaleway_object_bucket.infra_assets.name - policy = jsonencode({ - Version = "2023-04-17", - Id = "AllowMachineDownload", - Statement = [ - { - Effect = "Allow" - Action = [ - "s3:ListBucket", - "s3:GetObject", - ] - Principal = "*" - Resource = [ - scaleway_object_bucket.infra_assets.name, - "${scaleway_object_bucket.infra_assets.name}/*", - ] - Condition = { - IpAddress = { - "aws:SourceIp" = local.instance_ips - } - }, - }, - { - Effect = "Allow" - Action = [ - "s3:*", - ] - Principal = { - SCW = "user_id:${var.scaleway_user_id}" - } - Resource = [ - scaleway_object_bucket.infra_assets.name, - "${scaleway_object_bucket.infra_assets.name}/*", - ] - }, - ] - }) -} diff --git a/terraform/iac/config.tf b/terraform/iac/config.tf deleted file mode 100644 index 1d0c1bc..0000000 --- a/terraform/iac/config.tf +++ /dev/null @@ -1,7 +0,0 @@ -locals { - instance_ips = [ - "${local.contabo_instance.ip}/32", - ] - alexpires_me_zone = "alexpires.me" - a13labs_me_zone = "a13labs.me" -} diff --git a/terraform/iac/contabo.tf b/terraform/iac/contabo.tf deleted file mode 100644 index 62a9c1f..0000000 --- a/terraform/iac/contabo.tf +++ /dev/null @@ -1,14 +0,0 @@ -# Contabo is down for now, so we can't use it for now -# data "contabo_instance" "microk8s" { -# id = "201912751" -# } - -locals { - contabo_instance = { - id = "201912751" - name = "vmi1912751" # data.contabo_instance.microk8s.name - hostname = "microk8s" - ip = "147.78.131.194" # data.contabo_instance.microk8s.ip_config[0].v4[0].ip - } -} - diff --git a/terraform/iac/encryption.tf b/terraform/iac/encryption.tf deleted file mode 100644 index 3cb0342..0000000 --- a/terraform/iac/encryption.tf +++ /dev/null @@ -1,6 +0,0 @@ -resource "scaleway_object" "system_id_encryption_key" { - bucket = scaleway_object_bucket.infra_assets.id - key = "keys/${var.system_id}" - - content_base64 = base64encode(var.encryption_key) -} diff --git a/terraform/iac/provider.tf b/terraform/iac/provider.tf deleted file mode 100644 index a6a42ff..0000000 --- a/terraform/iac/provider.tf +++ /dev/null @@ -1,41 +0,0 @@ - -terraform { - required_version = "~>1.8" - required_providers { - scaleway = { - source = "scaleway/scaleway" - version = "~>2.13" - } - # Contabo provider is not working for now, so we can't use it - # contabo = { - # source = "contabo/contabo" - # version = "0.1.26" - # } - cloudns = { - source = "ClouDNS/cloudns" - version = "~>1.0" - } - } -} - -provider "cloudns" { - auth_id = var.cloudns_auth_id - password = var.cloudns_password -} - -provider "scaleway" { - zone = "fr-par-2" - region = "fr-par" - access_key = var.scaleway_access_key - secret_key = var.scaleway_secret_key - organization_id = var.scaleway_organization_id -} - - -# Configure your Contabo API credentials -# 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 -# } diff --git a/terraform/iac/registry.tf b/terraform/iac/registry.tf deleted file mode 100644 index 292205a..0000000 --- a/terraform/iac/registry.tf +++ /dev/null @@ -1,5 +0,0 @@ -resource "scaleway_registry_namespace" "a13labs" { - name = "a13labs" - description = "A13Labs container registry" - is_public = false -} diff --git a/terraform/iac/sectool.env b/terraform/iac/sectool.env deleted file mode 100644 index 0e98916..0000000 --- a/terraform/iac/sectool.env +++ /dev/null @@ -1,18 +0,0 @@ -AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY -AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY -TF_VAR_scaleway_access_key=$SCALEWAY_ACCESS_KEY -TF_VAR_scaleway_secret_key=$SCALEWAY_SECRET_KEY -TF_VAR_scaleway_project_id=$SCALEWAY_PROJECT_ID -TF_VAR_scaleway_organization_id=$SCALEWAY_ORGANIZATION_ID -TF_VAR_scaleway_user_id=$SCALEWAY_USER_ID -TF_VAR_scaleway_dkim_key=$SCALEWAY_DKIM_KEY -TF_VAR_alexpires_me_scaleway_dkim_value=$ALEXPIRES_ME_SCALEWAY_DKIM_VALUE -TF_VAR_a13labs_me_scaleway_dkim_value=$A13LABS_ME_SCALEWAY_DKIM_VALUE -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 -TF_VAR_bucket_suffix=$BUCKET_SUFFIX -TF_VAR_encryption_key=$ENCRYPT_KEY -TF_VAR_cloudns_auth_id=$CLOUDNS_AUTH_ID -TF_VAR_cloudns_password=$CLOUDNS_PASSWORD diff --git a/terraform/iac/variables.tf b/terraform/iac/variables.tf deleted file mode 100644 index 0f643de..0000000 --- a/terraform/iac/variables.tf +++ /dev/null @@ -1,100 +0,0 @@ -variable "scaleway_access_key" { - description = "Scaleway Access key" - type = string - sensitive = true -} - -variable "scaleway_secret_key" { - description = "Scaleway Secret key" - type = string - sensitive = true -} - -variable "scaleway_project_id" { - description = "Scaleway Project Id" - type = string - sensitive = true -} - -variable "scaleway_organization_id" { - description = "Scaleway Organization Id" - type = string - sensitive = true -} - -variable "scaleway_user_id" { - description = "Scaleway User Id" - type = string - sensitive = true -} - -# 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 -# } - -variable "encryption_key" { - description = "Encryption key for sensitive data" - type = string - sensitive = true -} - -variable "bucket_suffix" { - description = "Suffix for bucket names" - type = string - sensitive = true -} - -variable "system_id" { - description = "System ID" - type = string - sensitive = true -} - -variable "cloudns_auth_id" { - description = "Cloudns Auth ID" - type = string - sensitive = true -} - -variable "cloudns_password" { - description = "Cloudns Password" - type = string - sensitive = true -} - -variable "scaleway_dkim_key" { - description = "Scaleway DKIM key" - type = string - sensitive = true -} - -variable "alexpires_me_scaleway_dkim_value" { - description = "Scaleway DKIM value (alexpires.me)" - type = string - sensitive = true -} - -variable "a13labs_me_scaleway_dkim_value" { - description = "Scaleway DKIM value (a13labs.me)" - type = string - sensitive = true -}