Size: a a a

2020 May 08

BS

Baron Samedi in terraform_ru
садистский нейминг
источник

VS

Vadim Sokoltsov in terraform_ru
Всем привет!

Подскажите пожалуйста по terraform и aws

1) Есть отдельный модуль под remote_state на s3
Когда в нем делаю terraform state pull, то ничего не происходит
При выполнении terraform plan - отображаются все ресурсы, описанные в main.tf (и которые уже существуют, но не должны отображаться для выполнения, тк remote state был получен (?) )
Почему такое происходит?

2) Необходимо подсунуть сертификат из CertificateManager в alb для eks. Сертификат уже присутствует, его arn есть. Как я понял, сделать это можно двумя способами:
- resource "aws_acm_certificate" "cert" и затем terraform import aws_acm_certificate.cert <arn>
- data "aws_acm_certificate" "cert"
Чем отличаются эти два варианта?

В первом случае сам ingress-контроллер ругается на то, что не может найти данный сертификат (по arn, который присутствует в системе)
Во втором случае (при terraform plan) получаю ошибку, что No certificate for domain found in this region. Добавление директивы provider в data не поменяло ничего

что я делаю не так?

Заранее благодарю!
источник

VT

Victor Tur in terraform_ru
HashiCorp официально анонсировали что теперь они занимаются поддержкой и развитием расширения для тераформа для VS Code 🔥.
Обещают в скором времени полную поддержку 0.12 версии и другие улучшения.

http://amp.gs/34Lt
#terraform #hashicorp #vscode
источник

SB

Sergei Baikin in terraform_ru
Vadim Sokoltsov
Всем привет!

Подскажите пожалуйста по terraform и aws

1) Есть отдельный модуль под remote_state на s3
Когда в нем делаю terraform state pull, то ничего не происходит
При выполнении terraform plan - отображаются все ресурсы, описанные в main.tf (и которые уже существуют, но не должны отображаться для выполнения, тк remote state был получен (?) )
Почему такое происходит?

2) Необходимо подсунуть сертификат из CertificateManager в alb для eks. Сертификат уже присутствует, его arn есть. Как я понял, сделать это можно двумя способами:
- resource "aws_acm_certificate" "cert" и затем terraform import aws_acm_certificate.cert <arn>
- data "aws_acm_certificate" "cert"
Чем отличаются эти два варианта?

В первом случае сам ingress-контроллер ругается на то, что не может найти данный сертификат (по arn, который присутствует в системе)
Во втором случае (при terraform plan) получаю ошибку, что No certificate for domain found in this region. Добавление директивы provider в data не поменяло ничего

что я делаю не так?

Заранее благодарю!
1. У вас уже должен быть стейт значит раз вас смущает вывод плана
вам надо инит запустить и он предложит передвинуть ваш сушествующий локальный план в сетевой ресурс.
после этого все будет работать как вам и нужно
2. я просто конфигурирую ингрес так чтобы он сам создавал LB c нужным сертефикатом.
annotations:
     service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp"
     service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
     service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "${acm_certificate_arn}"
     service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
     service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "${load_balancer_tags}"
источник

VT

Victor Tur in terraform_ru
Vadim Sokoltsov
Всем привет!

Подскажите пожалуйста по terraform и aws

1) Есть отдельный модуль под remote_state на s3
Когда в нем делаю terraform state pull, то ничего не происходит
При выполнении terraform plan - отображаются все ресурсы, описанные в main.tf (и которые уже существуют, но не должны отображаться для выполнения, тк remote state был получен (?) )
Почему такое происходит?

2) Необходимо подсунуть сертификат из CertificateManager в alb для eks. Сертификат уже присутствует, его arn есть. Как я понял, сделать это можно двумя способами:
- resource "aws_acm_certificate" "cert" и затем terraform import aws_acm_certificate.cert <arn>
- data "aws_acm_certificate" "cert"
Чем отличаются эти два варианта?

В первом случае сам ingress-контроллер ругается на то, что не может найти данный сертификат (по arn, который присутствует в системе)
Во втором случае (при terraform plan) получаю ошибку, что No certificate for domain found in this region. Добавление директивы provider в data не поменяло ничего

что я делаю не так?

Заранее благодарю!
на счет второго - data лишь дает доступ на чтение ресурса, по определенным параметрам находит ресурс каждый раз. resource тип - управляет ресурсом, можно уничтожить, поменять параметры.
Если ошибка что не найден сертификат - значит не правильные параметры поиска или не тот регион
источник

VS

Vadim Sokoltsov in terraform_ru
Спасибо большое!🙌
источник

VS

Vadim Sokoltsov in terraform_ru
Victor Tur
на счет второго - data лишь дает доступ на чтение ресурса, по определенным параметрам находит ресурс каждый раз. resource тип - управляет ресурсом, можно уничтожить, поменять параметры.
Если ошибка что не найден сертификат - значит не правильные параметры поиска или не тот регион
но регион тот же, что и у сертификата
Прописывал provider в data - ошибка та же
источник

IB

Igor Bronovskyi in terraform_ru
Добрый день.
Подскажите, у вас так же когда контейнеры скейлятся вниз и дошло до минимума, то аларм не пропадает?
источник

IB

Igor Bronovskyi in terraform_ru
вот мой aws_cloudwatch_metric_alarm

# CloudWatch alarm that triggers the autoscaling down policy
resource "aws_cloudwatch_metric_alarm" "service_cpu_low" {
 alarm_name          = "${var.project}_cpu_utilization_low"
 comparison_operator = "LessThanOrEqualToThreshold"
 evaluation_periods  = "2"
 metric_name         = "CPUUtilization"
 namespace           = "AWS/ECS"
 period              = "60"
 statistic           = "Average"
 threshold           = "10"

 dimensions = {
   ClusterName = aws_ecs_cluster.main.name
   ServiceName = aws_ecs_service.main.name
 }

 alarm_actions = [aws_appautoscaling_policy.down.arn]
}
источник

IB

Igor Bronovskyi in terraform_ru
у меня должно скейлится от 1 до 5. Сейчас 1 контейнер и аларм не пропадает.
источник

KG

Kirill Galinurov in terraform_ru
Коллеги как правильно в 12+ сделать такую штуку хочу как то так определить переменные
источник

KG

Kirill Galinurov in terraform_ru
variable "sfe_nodes" {
       type = list
       default = ["sdp1sfe1"]
}

variable "sfe_profiles" {
       type = map
       default = {
               "sdp1sfe1" = {
                       "proxmox_node" = "proxmox-dc-hv06"
                       "storage" = "hv06-1700gb"
                       "template_name" = "MFSDP-SFE-main-template"
                       "vcpu" = 2
                       "memory" = 4096
               }
       }
}
источник

KG

Kirill Galinurov in terraform_ru
и использовать так
источник

KG

Kirill Galinurov in terraform_ru
name = var.sfe_nodes[count.index]
источник

KG

Kirill Galinurov in terraform_ru
storage = lookup(var.sfe_profiles[name],[storage])
источник

KG

Kirill Galinurov in terraform_ru
говорит Invalid reference
источник

AB

Anton Babenko in terraform_ru
Всем привет! Вот только что обновил Terragrunt Reference Architecture репозиторий, если кому-то будет интересно - https://github.com/antonbabenko/terragrunt-reference-architecture
источник

VT

Victor Tur in terraform_ru
Спасибо, Антон! 👍
я кстати начал использовать yaml с yamldecode вместо tfvars
источник

AB

Anton Babenko in terraform_ru
да, это удобно, если всё вокруг уже покрыто толстым слоем ямла 🙂
источник

VT

Victor Tur in terraform_ru
источник