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/05/22 12:37]
tomas [Komponenty]
automatizace:terraform [2024/12/17 07:47] (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====
 +
 +
 ===locals {}=== ===locals {}===
 +seznam_jmen = [for i in var.jmena: "$i.txt"]\\
 +
 ===variable "region" {}=== ===variable "region" {}===
 +<code>variable "muj_tuple" {
 +  description = "example tuple"
 +  type        = tuple([string, number, bool])
 +  default     = ["jablko", 1, true]
 +  validation {
 +    condition = length(var.name)
 +    error_message = "nespravna delka"
 +  }
 +}</code>
 +==datové struktury==
 +list ... uspořádaný seznam hodnot stejného typu\\
 +tuple ... uspořádaný seznam hodnot růžných typů\\
 +set ... neuspořádaný sezname unikátních hodnot stejného typu\\
 +map ... asociativní pole\\
 +object ... seznam objektů\\
 +toset()
 +
 +
 ===output "timestamp" {}=== ===output "timestamp" {}===
 +
 +===import{}===
 +===move{}===
 +===remove{}===
 +
 ===provider {}=== ===provider {}===
 +
 +===check {}===
 +data ... ziská data pro test\\
 +assert ... condition a error_message\\
 +
 +===provisioner {}===
 +local-exec\\
 +remote-exec\\
 +file\\
 +
 ===resource {}=== ===resource {}===
 +terraform_data ... třeba local\\
 +null_resource\\
 +
 +
 +for_each = toset(local.seznam_jmen) ... iterace celého resourcu\\
 +<code>dynamic "statemen" {
 +  for_each = var.dpc_s3_designer-postfixes
 +  content {
 +    parametr = "${statement.value}"
 +  }
 +}</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 ===
 count=var.istest == true ? 1 : 0 ... podmínka\\ count=var.istest == true ? 1 : 0 ... podmínka\\
 count=3 ... provede blok 3x\\ count=3 ... provede blok 3x\\
 +for_each = [for i in local.instances: "i.name"]\\
 +
 +=== funkce ===
 +sensitive() ... obsah se považuje za důvěrný obsah, nezobrazí se ve výstuperch\\
 +merge() ... sloučí mapy, poslední má přednost\\
 +lookup() ... vrátí buď hodnotu z mapy, nebo default hodnotu\\
 +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\\
 +templatefile("a.tftpl", {a=["bb", "cc"]}) ... vezme hodnoty a a doplní je do vzoru z a.tftpl a vrátí to jako text\\
 +file("a.txt") ... načte obsah souboru\\
 +yamldecode(file("a.yaml")) ... dekóduje yaml do objektu\\ 
 +join("-", ["aa", "bb"]) ... spojí řetězce, výsledek aa-bb\\
 +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\\
 +can ... true, když uvnitř platí\\
 +