This is an old revision of the document!
Terraform je abstrakce pro konfiguraci infrastruktury (jak ARM, mozna Cloud Foundry, …)
Terratest … testovani Tarraformovych sablon
Yeoman … pro praci s modulama
main.tf … povinny soubor, ktery se odkazuje na dalsi
inputs.tf … nadefinovane vstupni promenne
terraform.tfvars … pevne definovane vychozi promenne
terraform.tfstate … status nasazenych zdroju, muze obsahovat citlive udaje
TF_LOG=TRACE … úroveň logování, DEBUG, INFO, WARN, ERROR
TF_LOG_CORE, TF_LOG_PROVIDER … úroveň logování jednotlivých složek
TF_LOG_PATH=./terraform.log … logování do souboru
TF_INPUT=0 … vypne vstup
TF_VAR_promenna=hodnota … nastavení hodnoty proměnné pro tf soubory
TF_WORKSPACE=prod … nastavení workspace
TF_DATA_DIR=/prod … kde se nachárá .terraform složka
cd /adresar .. prejdu do adresare ktery obsahuje main.tf
terraform init … vytvori si docasne soubory, kde si kompiluje tf soubory
terraform validate … overi syntaxi
terraform plan … pokusi se udelat deployment na necisto
terraform apply -autoapprove … aplikuje zmenu, nevyzaduje schvalovani
terraform apply –var-file=dev.tfvars -var user=tomas … vezme vstupni parametry se souboru dev.tfvars a nadefinuje promennou user=tomas
terraform apply –target='docker_service.vault[1]' … naimplementuje změny pouze pro tento resource
terraform destroy -auto-approve … smaze, co je nadefinovano v terraform definici
terraform import … naimportuje do tfstate objekty z cloudu podle tf definic (objekty zminene v tf se nactou do tfstate
terrafrom state rm azuread_service_principal.sp[3] … odebere tento objekt z tfstate
terraform state list … seznam objektů v tfstate
terraform state show vault_mount.volume … ukáže nastavení daného objektu
terraform state -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 workspace list … vylistuje worspaces - prostřředí = instance tfstate souboru
terraform workspace select prod … vybere workspace prod a nastaví ho jako výchozí
seznam_jmen = [for i in var.jmena: “$i.txt”]
variable "muj_tuple" { description = "example tuple" type = tuple([string, number, bool]) default = ["jablko", 1, true] validation { condition = length(var.name) error_message = "nespravna delka" } }
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()
data … ziská data pro test
assert … condition a error_message
local-exec
remote-exec
file
terraform_data … třeba local
null_resource
for_each = toset(local.seznam_jmen) … iterace celého resourcu
dynamic "statemen" { for_each = var.dpc_s3_designer-postfixes content { parametr = "${statement.value}" } }
… iterace bloku v resourcu
lifecycle{ precondition {} postcondition {} }
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
count=var.istest == true ? 1 : 0 … podmínka
count=3 … provede blok 3x
for_each = [for i in local.instances: “i.name”]
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í