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