No name
Links
266 | 2023-01-06 15:41:31 |
file("name_of_file.txt")
template file templatefile("name_of_file.tpl", {first_var = "1",sec_var = "2",array = ["1", "2", "3"]})
firs var ${first_var}sec var ${sec_var}%{ for x in array ~}Hello to ${x} from ${sec_var}%{ endfor ~ }
$terraform console
dynamic "ingress" {for_each = ["80", "443", "8080", "1541", "9092"]content {protocol = "TCP"description = "rule1 description"v4_cidr_blocks = ["0.0.0.0/0"]port = ingrees.value}}
dynamic "tag" {for_each = {TAGKEY = "TAGVALUE"}content {protocol = tag.keydescription = tag.valuev4_cidr_blocks = ["0.0.0.0/0"]port = ingrees.value}}
depends_on = [aws_instance_db.name_resource, aws_instance_db.sec_name_resource]
data "aws_vpc" prod_vpc {tags = {Name = "prod"}}
data "aws_ami" "latest_ubuntu" {owners = 5834759834most_resent = truefilter {name = "name"values = "["ubuntu/images...-*"]"}}output "name" {value = data.aws_ami.latest_ubuntu.id}Не возможно использоваться два имени одновременно, нужно использовать суффикс#name = dfkgdjfklgname_prefix = name
Для объявления собственных переменных:variable "region" {descriotion = Enter var value ...} - после запусска попросит ввести значениеvariable "region" {descriotion = Enter var value ...type = stringdefault = "eu-west-1"validation {condition = substr(var.region, 0,3) == "eu-"error_mesage = "not valid region"}}tags (labels) = merge(var.common_tags, {Name = "ServerIP"})Если нужно выбрать конкретный объект в массиве то var.varname["element_name"]export TF_VAR_region=us=west2 - для использования переменных из ENVIRONMENTесли нужно запустить конкртеный tfvar -var-file="prod.auto.tfvars"
Локальное исполнение команд, может пригодиться при создание конф. файлов:locals {full_project_name = "${var.env}-${vat.sec_env}"}project = local.full_project_nameВ locals можно заносить data_sourceЕсли на выходе будет массив, его можно разделить зяпятойaz_list = join(",", data.aws_availability_zones...names)
resource "null_resource" "command" {provisioner "local-exec" {command "echo $NAME1 $NAME2 $NAME3" >> cred.txtenvironment = {NAME1 = "one"NAME2 = "two"NAME3 = data....}}}Такжн provisioner можно создать как часть ресурса
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"Equality: == !=Numerical comparison > < >= <=Bolean logic && || !variable = "ec2_size" {default {"prod" = "t3.large""staging" = "t3.medium""dev" = "t3.micro"}}instance_type = loockup(var.ec2_size, "prod")X = lookup(map, key)examplevariable "allow_ports_list" {default = {"prod" = ["80"]"dev" = ["80", "22"]}}
resource "aws_iam_user" "users" {count = length(var.awn_users)name = element(var.aws_users, count.index)}output "created_iam_users_custom" {value = [for user in aws_iam_user.users:"Username: $(user.name) has ARN: $(user.arn)"]}
Нужно созадать пустой ресурсresource "aws_instance" "myweb" {}ввести terraform initterraform import aws_instance.myweb i-68645873468543658
$ terraform taint nameresource.name$ terraform applyИЛИ$ terraform apply -replace nameresource.name