Komponentu odpowiedzialne za zarządzanie infrastrukturą.
1 - 🛠 Job template: OpenTofu
Joby .infrastructure:opentofu:base
oraz ich rozszerzenia pozwalają na spójną inicjalizację środowiska OpenTofu w GitLab CI, w tym przekazanie tokenów, nazw stanów, walidację oraz generowanie dokumentacji.
Wszystkie joby korzystają z jednolitego zestawu zmiennych wejściowych i mogą być używane w różnych etapach pipeline’a.
⚙️ Parametry wejściowe (inputs
)
Nazwa | Typ | Domyślna wartość | Opis |
---|---|---|---|
docker_image |
string | registry.gitlab.com/pl.rachuna-net/containers/opentofu:2.0.0 |
Obraz Dockera z OpenTofu i niezbędnymi narzędziami |
logo_url |
string | https://gitlab.com/pl.rachuna-net/cicd/gitlab-ci/-/raw/main/_configs/_logo?ref_type=heads |
Adres URL logo wyświetlanego w logach |
tf_state_name |
string | default |
Nazwa pliku stanu OpenTofu |
debug |
bool | false |
Flaga debugowania (rozszerzone logi) |
🧬 Zmienne środowiskowe ustawiane w jobach
Komponent ustawia następujące zmienne w środowisku CI:
CONTAINER_IMAGE_OPENTOFU
– obraz Dockera OpenTofu (na podstawieinputs.docker_image
)LOGO_URL
– ścieżka do logo (na podstawieinputs.logo_url
)TF_STATE_NAME
– nazwa stanu OpenTofuTF_VAR_gitlab_token
– token GitLab przekazywany do OpenTofuDEBUG
– flaga debug
📤 Output
Joby wykonują:
- Pobranie i wyświetlenie logo (jeżeli
LOGO_URL
jest ustawiony). - Wyświetlenie informacji o wejściowych parametrach.
- Inicjalizację środowiska OpenTofu (
tofu init
) oraz odpowiednie akcje (fmt
,validate
,tflint
,plan
,apply
).
Przykład logu:
===> 💾 OpenTofu Base Job - Parameters
┌──────────────────────────────┬───────────────────────────────────────────────────────┐
│ Variable │ Value │
├──────────────────────────────┼───────────────────────────────────────────────────────┤
│ TF_STATE_NAME │ default │
│ CONTAINER_IMAGE_OPENTOFU │ registry.gitlab.com/pl.rachuna-net/...:2.0.0 │
└──────────────────────────────┴───────────────────────────────────────────────────────┘
🧪 Dostępne joby
🕵 opentofu fmt
Sprawdza formatowanie plików OpenTofu:
🕵 opentofu fmt:
stage: validate
extends: ['.infrastructure:opentofu:base']
script:
- tofu fmt -recursive -check
✅ opentofu validate
Wykonuje walidację konfiguracji OpenTofu:
✅ opentofu validate:
stage: validate
extends: ['.infrastructure:opentofu:base']
script:
- !reference [.infrastructure:opentofu_init]
- tofu validate
✅ tflint
Uruchamia lintera tflint
:
✅ tflint:
stage: validate
extends: ['.infrastructure:opentofu:base']
script:
- tflint
✅ terraform-docs
Generuje dokumentację modułu Terraform:
✅ terraform-docs:
stage: validate
extends: ['.infrastructure:terraform:base']
script:
- terraform-docs md . > README.md
🧪 opentofu plan
Wykonuje plan wdrożenia OpenTofu:
🧪 opentofu plan:
stage: unit-test
extends: ['.infrastructure:opentofu:base']
script:
- tofu plan
💥 opentofu apply
Wdraża infrastrukturę OpenTofu:
💥 opentofu apply:
stage: deploy
extends: ['.infrastructure:opentofu:base']
script:
- tofu apply -auto-approve
🧪 Przykład użycia w pipeline
include:
- component: $CI_SERVER_FQDN/pl.rachuna-net/cicd/components/infrastructure/opentofu@$COMPONENT_VERSION_INFRASTRUCTURE
inputs:
docker_image: $CONTAINER_IMAGE_OPENTOFU
tf_state_name: production
debug: "true"
2 - 🛠 Job template: Terraform
Joby .infrastructure:terraform:base
oraz ich rozszerzenia pozwalają na spójną inicjalizację środowiska Terraform w GitLab CI, w tym przekazanie tokenów, nazw stanów, walidację oraz generowanie dokumentacji.
Wszystkie joby korzystają z jednolitego zestawu zmiennych wejściowych i mogą być używane w różnych etapach pipeline’a.
⚙️ Parametry wejściowe (inputs
)
Nazwa | Typ | Domyślna wartość | Opis |
---|---|---|---|
docker_image |
string | registry.gitlab.com/pl.rachuna-net/containers/terraform:2.0.0 |
Obraz Dockera z Terraform i niezbędnymi narzędziami |
logo_url |
string | https://gitlab.com/pl.rachuna-net/cicd/gitlab-ci/-/raw/main/_configs/_logo?ref_type=heads |
Adres URL logo wyświetlanego w logach |
tf_state_name |
string | default |
Nazwa pliku stanu Terraform |
debug |
bool | false |
Flaga debugowania (rozszerzone logi) |
🧬 Zmienne środowiskowe ustawiane w jobach
Komponent ustawia następujące zmienne w środowisku CI:
CONTAINER_IMAGE_TERRAFORM
– obraz Dockera Terraform (na podstawieinputs.docker_image
)LOGO_URL
– ścieżka do logo (na podstawieinputs.logo_url
)TF_STATE_NAME
– nazwa stanu TerraformTF_VAR_gitlab_token
– token GitLab przekazywany do TerraformDEBUG
– flaga debug
📤 Output
Joby wykonują:
- Pobranie i wyświetlenie logo (jeżeli
LOGO_URL
jest ustawiony). - Wyświetlenie informacji o wejściowych parametrach.
- Inicjalizację środowiska Terraform (
terraform init
) oraz odpowiednie akcje (fmt
,validate
,tflint
,plan
,apply
).
Przykład logu:
===> 💾 Terraform Base Job - Parameters
┌──────────────────────────────┬───────────────────────────────────────────────────────┐
│ Variable │ Value │
├──────────────────────────────┼───────────────────────────────────────────────────────┤
│ TF_STATE_NAME │ default │
│ CONTAINER_IMAGE_TERRAFORM │ registry.gitlab.com/pl.rachuna-net/...:2.0.0 │
└──────────────────────────────┴───────────────────────────────────────────────────────┘
🧪 Dostępne joby
🕵 terraform fmt
Sprawdza formatowanie plików Terraform:
🕵 terraform fmt:
stage: validate
extends: ['.infrastructure:terraform:base']
script:
- terraform fmt -recursive -check
✅ terraform validate
Wykonuje walidację konfiguracji Terraform:
✅ terraform validate:
stage: validate
extends: ['.infrastructure:terraform:base']
script:
- !reference [.infrastructure:terraform_init]
- terraform validate
✅ tflint
Uruchamia lintera tflint
:
✅ tflint:
stage: validate
extends: ['.infrastructure:terraform:base']
script:
- tflint
✅ terraform-docs
Generuje dokumentację modułu Terraform:
✅ terraform-docs:
stage: validate
extends: ['.infrastructure:terraform:base']
script:
- terraform-docs md . > README.md
🧪 terraform plan
Wykonuje plan wdrożenia Terraform:
🧪 terraform plan:
stage: unit-test
extends: ['.infrastructure:terraform:base']
script:
- terraform plan
💥 terraform apply
Wdraża infrastrukturę Terraform:
💥 terraform apply:
stage: deploy
extends: ['.infrastructure:terraform:base']
script:
- terraform apply -auto-approve
🧪 Przykład użycia w pipeline
include:
- component: $CI_SERVER_FQDN/pl.rachuna-net/cicd/components/infrastructure/terraform@$COMPONENT_VERSION_INFRASTRUCTURE
inputs:
docker_image: $CONTAINER_IMAGE_TERRAFORM
tf_state_name: production
debug: "true"