Size: a a a

2019 December 25

DK

D K in terraform_ru
Aleksey Shirokikh
Коллеги я краем уха слышал что terraform workspaces это остой и нужно держаться подальше но не помню мотивацию.
напраьте на путь истинный. мне для разделения на rc/prod. разные gcs бакеты и вот это вот всё.
тут почитано https://www.terraform.io/docs/state/workspaces.html
а чем плохо то, юзаю прям активно, плохого не заметил
источник

AS

Aleksey Shirokikh in terraform_ru
D K
а чем плохо то, юзаю прям активно, плохого не заметил
это мой вопрос ;)
источник
2019 December 26

V

Vladislav in terraform_ru
resource "aws_db_instance" "main_db" {
 allocated_storage    = 20
 storage_type         = "gp2"
 engine               = "mysql"
 engine_version       = "5.7"
 instance_class       = "db.t2.micro"
 name                 = var.project_name"-db"
 username             = "sa"
 password             = var.db_pass
 parameter_group_name = "default.mysql5.7"
}


parameter_group_name
- - (Optional) Name of the DB parameter group to associate.

Для чего этот параметр? Что-то не пойму...
источник

A

Andor in terraform_ru
источник

V

Vladislav in terraform_ru
name  = var.project_name"-db"


Нужно чтобы при создании базы - Имя базы состояло из
Проект + '-db'


Как корестно объеденить пременную и дополнительный текст?
источник

AK

Alexey Kuznetsov in terraform_ru
Vladislav
name  = var.project_name"-db"


Нужно чтобы при создании базы - Имя базы состояло из
Проект + '-db'


Как корестно объеденить пременную и дополнительный текст?
Через формат:
name = format("%s-db", var.project_name)

Или проще:
name = "${var.project_name}-db"
источник

V

Vladislav in terraform_ru
В том то и дело, что

Или проще:
name = "${var.project_name}-db"

было раньше

В 12 версии уже "${   } упразднили - потому у меня и возникает вопрос - как теперь...

Если раньше к переменной обращались "${var.project_name}, то теперь в 12 версии
var.project_name
источник

AK

Alexey Kuznetsov in terraform_ru
Vladislav
В том то и дело, что

Или проще:
name = "${var.project_name}-db"

было раньше

В 12 версии уже "${   } упразднили - потому у меня и возникает вопрос - как теперь...

Если раньше к переменной обращались "${var.project_name}, то теперь в 12 версии
var.project_name
Старый синтаксис в 12-й работает.
Не нравится, см. формат выше.
источник

IM

Iurii Medvedev in terraform_ru
Vladislav
В том то и дело, что

Или проще:
name = "${var.project_name}-db"

было раньше

В 12 версии уже "${   } упразднили - потому у меня и возникает вопрос - как теперь...

Если раньше к переменной обращались "${var.project_name}, то теперь в 12 версии
var.project_name
Можно и так и так
источник

A

Andor in terraform_ru
Vladislav
В том то и дело, что

Или проще:
name = "${var.project_name}-db"

было раньше

В 12 версии уже "${   } упразднили - потому у меня и возникает вопрос - как теперь...

Если раньше к переменной обращались "${var.project_name}, то теперь в 12 версии
var.project_name
Не упразднили, когда надо форматировать строку
Когда надо просто передать переменную, без интерполяции строк, то ${} использовать не надо уже
источник

T

Timur in terraform_ru
Vladislav
name  = var.project_name"-db"


Нужно чтобы при создании базы - Имя базы состояло из
Проект + '-db'


Как корестно объеденить пременную и дополнительный текст?
из SO, но общая логика понятна:
variable branch {default = ""}
locals {
delimiter = "${var.branch == "master" ? "" : "-"}"
name = "${var.name}${local.delimiter}${var.branch}"
}
источник
2019 December 27

V

Vladislav in terraform_ru
resource "aws_db_instance" "main_db" {
 allocated_storage = var.allocated_storage
 storage_type      = var.storage_type
 engine            = var.engine
 engine_version    = var.engine_version
 instance_class    = var.instance_class
 identifier         = lower(var.project_name)
 #name              = var.project_name
 username          = var.username
 db_subnet_group_name = aws_db_subnet_group.main_db_subnet_group.name
 #multi_az             = "true"
 password             = var.password
 parameter_group_name = aws_db_parameter_group.main_db_pg.name
 vpc_security_group_ids = var.vpc_security_group_ids
 skip_final_snapshot  = true
 ca_cert_identifier   = "rds-ca-2019"
 tags = {
   Name = "EzyEntry-DB"
 }
}


Ошибка
Error: Invalid value for module argument

 on main.tf line 33, in module "database":
 33:   vpc_security_group_ids = module.networking.private_sg

The given value is not suitable for child module variable
"vpc_security_group_ids" defined at database/variables.tf:12,1-34: list of any
single type required.


Н
е могу сообразить что нужно исправить.
Задача: При развертке базы, чтобы ей цеплялась  секьюрити группа
private_sg
(которая создается в модуле networking)

# ==== database/variables.tf ====
......
variable "subnets_ids" {
 type = list
}
variable "vpc_security_group_ids" {
 type = list
}


#``` ==== networking/main.tf ====
resource "aws_security_group" "tf_private_sg" {
 name        = "tf_private_sg"
 description = "Used for access to the database instances"
 vpc_id      = aws_vpc.main_vpc.id
....
`
# ==== networking/outputs.tf ===
output "private_sg" {
 value = "${aws_security_group.tf_private_sg.id}"
}
источник

V

Vladislav in terraform_ru
Как при создании базы RDS, привязать ее к нужно  security group?
Сейчас у меня она прикрепляется к default - потому достучаться до базы не получается...
источник

V

Vladislav in terraform_ru
При создании EC2 и RDS генерируются следующие URL соответственно:
-
ec2-52-47-44.ap-southeast-2.compute.amazonaws.com

-
web.c7o8qgoqywta.ap-southeast-2.rds.amazonaws.com


Нужно чтобы Терраформ при разворачивании создавал СNAME на эти пути:
-
app.contoso.com
>>>
ec2-52-47-44.ap-southeast-2.compute.amazonaws.com

-
db.contoso.com
>>>
db.c7o8qgoqywta.ap-southeast-2.rds.amazonaws.com


Как это делается? Что гуглить?
источник

A

Andor in terraform_ru
посмотри в возвращаемые параметры из ресурсов ec2 и rds, там наверное есть оба имени
останется сделать запись в route53 (ну или какой у тебя днс) с CNAME
источник

A

Andor in terraform_ru
https://www.terraform.io/docs/providers/aws/r/db_instance.html#attributes-reference
address не оно? можно посмотреть в terraform state show <resourse-path>
источник

V

Vladislav in terraform_ru
Andor
посмотри в возвращаемые параметры из ресурсов ec2 и rds, там наверное есть оба имени
останется сделать запись в route53 (ну или какой у тебя днс) с CNAME
Как получить возвращаемые пути из EC2 и RDS - не проблема. Вопрос про привязку в Route53, но не вручную, а автоматом при проигрывание всего Терраформ сценария.
источник

A

Andor in terraform_ru
думаю туда надо просто в records передать твои имена
источник

A

Andor in terraform_ru
resource "google_dns_record_set" "hub-staging" {
 managed_zone = google_dns_managed_zone.myzone.name
 project      = google_dns_managed_zone.myzone.project
 name         = "hub-staging.${google_dns_managed_zone.myzone.dns_name}"
 type         = "CNAME"
 ttl          = 300
 rrdatas      = [module.staging-hub.servers[0].dns-name]
}
вот по аналогии я в гугловом днс делаю
источник

V

Vladislav in terraform_ru
Andor
думаю туда надо просто в records передать твои имена
Попробую!
источник