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
try_prompt
Help me met het ontwerpen van Terraform modules die ik gemakkelijk kan hergebruiken en onderhouden. Mijn infrastructuurcomponent ... more
generate_helper
...
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

