Warning: Undefined array key 1 in /DISK2/WWW/lipensky.cz/tomas/inc/auth.php on line 78 automatizace:terraform [Tomas Lipensky - vedomostni koutek] Warning: Undefined array key "stylesheets" in /DISK2/WWW/lipensky.cz/tomas/inc/StyleUtils.php on line 102
Warning: Undefined array key -1 in /DISK2/WWW/lipensky.cz/tomas/inc/html.php on line 1458

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
automatizace:terraform [2024/12/02 14:20]
tomas [tf soubory]
automatizace:terraform [2026/09/30 12:35] (current)
tomas
Line 3: Line 3:
  
 ====Komponenty==== ====Komponenty====
 +tflint ... linter - zkontroluje kód a navrhne změny kvůli čitelnosti a standartizaci kódu\\
 +terraform-doc ... automatické generování dokumentace\\
 Terratest ... testovani Tarraformovych sablon\\ Terratest ... testovani Tarraformovych sablon\\
 +Terragrunt ... umí generovat terraformy podle terragrunt parametrů - terraform soubory jsou šablona s parametrama\\
 Yeoman ... pro praci s modulama\\ Yeoman ... pro praci s modulama\\
  
Line 34: Line 37:
 terraform state list ... seznam objektů v tfstate\\ terraform state list ... seznam objektů v tfstate\\
 terraform state show vault_mount.volume ... ukáže nastavení daného objektu\\ terraform state show vault_mount.volume ... ukáže nastavení daného objektu\\
-terraform state -json ... ukáže komplet tfstate, včetně secretů\\+terraform show -json ... ukáže komplet tfstate, včetně secretů\\
 terraform force-unlock 9db590f1-b6fe-c5f2-2678-8804f089deba ... udemknutí tfstate, pokud předchozí terraform běh selže\\ terraform force-unlock 9db590f1-b6fe-c5f2-2678-8804f089deba ... udemknutí tfstate, pokud předchozí terraform běh selže\\
  
 terraform workspace list ... vylistuje worspaces - prostřředí = instance tfstate souboru\\ terraform workspace list ... vylistuje worspaces - prostřředí = instance tfstate souboru\\
 terraform workspace select prod ... vybere workspace prod a nastaví ho jako výchozí\\ terraform workspace select prod ... vybere workspace prod a nastaví ho jako výchozí\\
 +
 +====tf moduly====
 +[[terraform-aws]]\\
  
 ====tf soubory==== ====tf soubory====
Line 47: Line 53:
  
 ===variable "region" {}=== ===variable "region" {}===
-variable "muj_tuple" {+<code>variable "muj_tuple" {
   description = "example tuple"   description = "example tuple"
   type        = tuple([string, number, bool])   type        = tuple([string, number, bool])
   default     = ["jablko", 1, true]   default     = ["jablko", 1, true]
-}+  validation { 
 +    condition = length(var.name) 
 +    error_message = "nespravna delka" 
 +  } 
 +}</code>
 ==datové struktury== ==datové struktury==
 list ... uspořádaný seznam hodnot stejného typu\\ list ... uspořádaný seznam hodnot stejného typu\\
Line 62: Line 72:
  
 ===output "timestamp" {}=== ===output "timestamp" {}===
 +
 +===import{}===
 +
 +===moved{}===
 +přejmenuje v tfstate (při refaktoringu objektů
 +
 +moved {
 +from = resource.id
 +to = resource.id
 +}
 +
 +===remove{}===
 +odstraní z tfstate (jako terraform state rm)
 +
 +remove {
 +from = resource.id
 +lifecycle {
 + destroy = false
 +}
 +}
 +
 ===provider {}=== ===provider {}===
 +
 +===check {}===
 +data ... ziská data pro test\\
 +assert ... condition a error_message\\
 +
 ===provisioner {}=== ===provisioner {}===
 local-exec\\ local-exec\\
 remote-exec\\ remote-exec\\
 file\\ file\\
 +
 ===resource {}=== ===resource {}===
 +terraform_data ... třeba local\\
 +null_resource\\
 +
 +
 for_each = toset(local.seznam_jmen) ... iterace celého resourcu\\ for_each = toset(local.seznam_jmen) ... iterace celého resourcu\\
-dynamic "statemen" {\\ +<code>dynamic "statemen" { 
-  for_each = var.dpc_s3_designer-postfixes\\ +  for_each = var.dpc_s3_designer-postfixes 
-  content {\\ +  content { 
-    parametr = "${statement.value}"\\ +    parametr = "${statement.value}" 
-  }\\ +  } 
-} ... iterace bloku v resourcu\\+}</code> ... iterace bloku v resourcu\\ 
 + 
 +<code>lifecycle{ 
 + precondition {} 
 + postcondition {} 
 +} 
 +</code> 
 +timeout ... timeout pro ukončení aktivity na resourcu, zachrání to tfstate, když to ukončí něco z venku násilně\\ 
 +provider = aws-we ... použití provideru s daným aliasem\\
  
 === podmínky a iterace === === podmínky a iterace ===
Line 84: Line 133:
 sensitive() ... obsah se považuje za důvěrný obsah, nezobrazí se ve výstuperch\\ sensitive() ... obsah se považuje za důvěrný obsah, nezobrazí se ve výstuperch\\
 merge() ... sloučí mapy, poslední má přednost\\ merge() ... sloučí mapy, poslední má přednost\\
-lookup() ... vrátí buď hodnotu z mapy, nebo default hodnotu\\+lookup(local.clovek, "vek", 12) ... vrátí buď hodnotu z mapy, pokud existuje, nebo default hodnotu\\
 trimsuffix("abcd", "cd") ... odřízne koncovku z řetězce, když se shoduje, v tomto případě vrátí ab\\ trimsuffix("abcd", "cd") ... odřízne koncovku z řetězce, když se shoduje, v tomto případě vrátí ab\\
 base64encode() ... zakóduje řetězed co base64\\ base64encode() ... zakóduje řetězed co base64\\
Line 92: Line 141:
 join("-", ["aa", "bb"]) ... spojí řetězce, výsledek aa-bb\\ join("-", ["aa", "bb"]) ... spojí řetězce, výsledek aa-bb\\
 concat(["a", "c"], ["b", "c"]) ... spojí seznamy, výsledek ["a", "b", "c"]\\ concat(["a", "c"], ["b", "c"]) ... spojí seznamy, výsledek ["a", "b", "c"]\\
 +formatdate("YYYYMMDDhhmmss", timestamp()) ... časová známka a formátování data\\
 endswith("abc.txt", ".txt") ... vrátí true, když 1. řetězec končí 2. řetězcem\\ endswith("abc.txt", ".txt") ... vrátí true, když 1. řetězec končí 2. řetězcem\\
 +can ... true, když uvnitř platí\\
 +contains("pes", local.savci) ... vrátí true, pokud je "pes" členem pole local.savci\\ 
 +