Skip to content

feature-system-deployment: add Terraform + Ansible CD pipeline - #119

Open
petkorutesic wants to merge 2 commits into
DoziLab:mainfrom
petkorutesic:adding-iac-deploy
Open

feature-system-deployment: add Terraform + Ansible CD pipeline #119
petkorutesic wants to merge 2 commits into
DoziLab:mainfrom
petkorutesic:adding-iac-deploy

Conversation

@petkorutesic

Copy link
Copy Markdown
Collaborator

…aging and production

Provision the application's OpenStack host VMs and infrastructure-as-code, driven by GitHub Actions (and act for local runs).

  • Terraform: reusable openstack_vm module (keypair + instance + optional floating IP + optional Cinder data volume) consu production envs; local state backend, credentials via OS_* env vars.
  • Ansible: install Docker (geerlingguy.docker) and on the VM; inventory generated from the Terraform vm_ip output.
  • Workflows: staging deploys on push to main; production on workflow_dispatch or v* tag, gated by the protected production environment. Both run terraform fmt check + Trivy scan and inject the SSH key as TF_VAR.
  • Tooling/docs: tf-local.sh helper, .secrets.template, infrastructure README + EXTRACT.md, and .gitignore rules for state/secrets/inventory.

Linked Issue

Closes #

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactoring (no functional changes)

Checklist

  • My code follows the style guidelines of this project
  • I have added/updated unit tests
  • I have updated the documentation (if applicable)
  • I have verified my changes locally

Screenshots / Logs (Optional)

petkorutesic and others added 2 commits May 23, 2026 20:28
…aging and production

Provision the application's OpenStack host VMs and
infrastructure-as-code, driven by GitHub Actions (and act for local runs).

- Terraform: reusable openstack_vm module (keypair + instance + optional
  floating IP + optional Cinder data volume) consu
  production envs; local state backend, credentials via OS_* env vars.
- Ansible: install Docker (geerlingguy.docker) and
  on the VM; inventory generated from the Terraform `vm_ip` output.
- Workflows: staging deploys on push to main; production on workflow_dispatch
  or v* tag, gated by the protected `production` environment. Both run
  terraform fmt check + Trivy scan and inject the SSH key as TF_VAR.
- Tooling/docs: tf-local.sh helper, .secrets.template, infrastructure
  README + EXTRACT.md, and .gitignore rules for state/secrets/inventory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant