Terraform je abstrakce pro konfiguraci infrastruktury (jak ARM, mozna Cloud Foundry, …)

Komponenty

Terratest … testovani Tarraformovych sablon
Yeoman … pro praci s modulama

soubory

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

systémové proměnné

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

prikazy

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 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í

tf soubory

locals {}

variable "region" {}

output "timestamp" {}

provider {}

resource {}

podmínky a iterace

count=var.istest == true ? 1 : 0 … podmínka
count=3 … provede blok 3x