Optimaliseer mijn Terraform modules voor herbruikbaarheid en onderhoudbaarheid
description
Met deze prompt krijg ik gericht advies over het structureren van mijn Terraform modules, wat leidt tot betere code-organisatie, eenvoudiger beheer en snellere implementaties. Het voorkomt veelvoorkomende fouten en zorgt dat mijn infrastructuur makkelijker schaalbaar is.
prompt
Help me met het ontwerpen van Terraform modules die ik gemakkelijk kan hergebruiken en onderhouden. Mijn infrastructuurcomponent ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een richtlijn voor het ontwerpen van herbruikbare en onderhoudsvriendelijke Terraform-modules voor jouw infrastructuurcomponenten:
1. Modulaire structuur opzetten
- Maak aparte modules voor:
- Virtuele machines (VMs)
- Virtuele netwerken (VNETs)
- Storage-accounts
- Plaats alle modules in een centrale map (bijvoorbeeld `modules/`) met submappen per component.
2. Herbruikbare variabelen definiëren
- Gebruik `variables.tf` in elke module om configuratieparameters te specificeren.
- Voorbeeld voor een VM:
```hcl
variable "vm_name" {
description = "Naam van de virtuele machine"
type = string
}
variable "location" {
description = "Azure regio"
type = string
}
variable "size" {
description = "VM grootte"
type = string
default = "Standard_DS1_v2"
}
variable "admin_username" {
description = "Administrator gebruikersnaam"
type = string
}
variable "admin_password" {
description = "Administrator wachtwoord"
type = string
sensitive = true
}
```
3. Beveiliging en GDPR-compliance
- Gebruik encryptie voor opslagaccounts:
```hcl
resource "azurerm_storage_account" "storage" {
name = var.storage_name
resource_group_name = var.resource_group_name
location = var.location
account_tier = "Standard"
account_replication_type = "LRS"
enable_https_traffic_only = true
blob_properties {
cors_rules = []
}
network_rules {
default_action = "Deny"
ip_rules = var.ip_rules
}
encryption {
services {
blob {
enabled = true
key_type = "Account"
}
file {
enabled = true
}
}
key_source = "Microsoft.Storage"
}
}
```
- Zorg dat gevoelige gegevens (wachtwoorden, encryptiesleutels) via `sensitive` variabelen worden beheerd en niet in logs zichtbaar zijn.
4. Netwerkconfiguratie
- Maak een module voor VNETs met subnetten, NSG's en passende beveiligingsregels.
- Implementeer netwerkbeperkingen conform GDPR-vereisten (bijvoorbeeld beperken van toegang).
5. Documentatie en gebruik
- Voeg `README.md` toe voor elke module met voorbeelden.
- Gebruik `outputs.tf` om nuttige informatie zoals IP-adressen door te geven.
6. Onderhoud en schaalbaarheid
- Gebruik variabele standaarden en default-waarden waar mogelijk.
- Voeg condities toe voor optionele componenten.
- Versioneer modules via Git en gebruik versies in je hoofdconfiguratie.
7. Voorbeeld structuur
```
infrastructuur/
├── main.tf
├── variables.tf
├── outputs.tf
└── modules/
├── vm/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── network/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
└── storage/
├── main.tf
├── variables.tf
└── outputs.tf
```
Door deze aanpak te volgen, creëer je een overzichtelijke, herbruikbare en onderhoudsvriendelijke Terraform-structuur die voldoet aan GDPR en encryptie-eisen. Wil je concrete codevoorbeelden voor een specifiek component?
provider: deepseek
model: deepseek-chat
no_answer_for_language
error: Generation failed [deepseek] prompt_id=2070 locale=nl err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=en err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=de err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=fr err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=pt err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=es err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2070 locale=zh err=DeepSeek connection/timeout