feat(deploy): iac/ Vault provisioning + workflow (uses app_roles module from tools) #99

Merged
arcodange merged 1 commits from vibe/batch-pr-iac1-dlc-vault into main 2026-05-06 13:20:27 +02:00
4 changed files with 92 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
---
name: Hashicorp Vault
on:
workflow_dispatch: {}
push: &vaultPaths
paths:
- 'iac/*.tf'
pull_request: *vaultPaths
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
.vault_step: &vault_step
name: read vault secret
uses: https://gitea.arcodange.lab/arcodange-org/vault-action.git@main
id: vault-secrets
with:
url: https://vault.arcodange.lab
caCertificate: ${{ secrets.HOMELAB_CA_CERT }}
jwtGiteaOIDC: ${{ needs.gitea_vault_auth.outputs.gitea_vault_jwt }}
role: gitea_cicd_dance-lessons-coach
method: jwt
path: gitea_jwt
secrets: |
kvv1/google/credentials credentials | GOOGLE_BACKEND_CREDENTIALS ;
jobs:
gitea_vault_auth:
name: Auth with gitea for vault
runs-on: ubuntu-latest-ca
outputs:
gitea_vault_jwt: ${{steps.gitea_vault_jwt.outputs.id_token}}
steps:
- name: Auth with gitea for vault
id: gitea_vault_jwt
run: |
echo -n "${{ secrets.vault_oauth__sh_b64 }}" | base64 -d | bash
tofu:
name: Tofu - Vault
needs:
- gitea_vault_auth
runs-on: ubuntu-latest-ca
env:
OPENTOFU_VERSION: 1.8.2
TERRAFORM_VAULT_AUTH_JWT: ${{ needs.gitea_vault_auth.outputs.gitea_vault_jwt }}
VAULT_CACERT: "${{ github.workspace }}/homelab.pem"
steps:
- *vault_step
- uses: actions/checkout@v4
- name: prepare vault self signed cert
run: echo -n "${{ secrets.HOMELAB_CA_CERT }}" | base64 -d > $VAULT_CACERT
- name: terraform apply
uses: dflook/terraform-apply@v1
with:
path: iac
auto_approve: true

6
iac/backend.tf Normal file
View File

@@ -0,0 +1,6 @@
terraform {
backend "gcs" {
bucket = "arcodange-tf"
prefix = "dance-lessons-coach/main"
}
}

10
iac/main.tf Normal file
View File

@@ -0,0 +1,10 @@
locals {
app = {
name = "dance-lessons-coach"
}
}
module "app_roles" {
source = "git::ssh://git@192.168.1.202:2222/arcodange-org/tools.git//hashicorp-vault/iac/modules/app_roles?depth=1&ref=main"
name = local.app.name
}

17
iac/providers.tf Normal file
View File

@@ -0,0 +1,17 @@
terraform {
required_providers {
vault = {
source = "vault"
version = "4.4.0"
}
}
}
provider "vault" {
address = "https://vault.arcodange.lab"
auth_login_jwt {
# TERRAFORM_VAULT_AUTH_JWT environment variable, set by the gitea OIDC step
mount = "gitea_jwt"
role = "gitea_cicd_dance-lessons-coach"
}
}