Поставлен из моего блога Отказ
Использование облачных ресурсов может быть ускорение к бизнесу, освобождая в инженерных командах и дорогостоящим на банковский счет. Если у вас есть каждый оставленный большой выпускник или экземпляр базы данных, работающих в выходные (или случайно преданные ключи API к GitHub), легко испытать большое увеличение эксплуатационных расходов на месяц. Использование метаданных ресурсов Помежки Функциональные органы ответственные стороны (1) могут проверять, отслеживать и управлять ресурсами. Можно даже вводить автоматические на основе значений тегов (или его отсутствия).
Основное использование
Основная структура тегов в террафоре достаточно проста. Если вы знакомы с форматом JSON Data Interchange, вы должны немедленно распознать это. Это Java вдохновленное объявление объекта с прокоцированными ключами ценностей пары с использованием толстой кишки в качестве сепаратора и запятой в качестве разделителя. Да, еще один DSL, чтобы узнать. #welcometowebdev.
...
"aws_resource_type" "aws_resource" {
...
tags {
"key": "value",
"Name": "Value",
"department": "engineering",
"team": "core_api",
"app": "name",
"env": "dev"
...
}
...
}Нечего сложно об этом. Большинство (не всех) ресурсов в AWS поддерживают тегирование таким образом. Прямо передние пары клавиш/значений JSON. Террафору даже позволяет нам использовать переменные вместо значений, но не ключей (2).
Странный..
...
"aws_resource_type" "aws_resource" {
...
tags {
"key": "value",
"Name": "Value",
"department": "${var.dept_name",
"team": "${var.team_name",
"app": "${var.app_name",
"env": "${var.app_env}"
...
}
...
}«Но Дэвид» вы скажете, что «Инфраструктура приложений может быть очень сложной. Должен ли я копировать/вставить атрибут «TAG» по всему месту? » Короткий ответ; Нет. Долгий ответ: …
Расширенное использование
Используя некоторые Terraform-Fu, мы можем назначить наборы по умолчанию пары клавиш/значение для переменной типа карты (локальной или импортированной) и этой переменной в качестве набора данных тегов по умолчанию. Формат немного изменяется между объектом JSON к типу данных на карте Terraform (HCl); Но не очень много.
variable "default_tags" {
type = "map"
default = {
key: "value",
Name: "Value",
department: "${var.dept_name",
team: "${var.team_name",
app: "${var.app_name",
env: "${var.app_env}"
}
}
...С тегами, абстрагированными в качестве карты, атрибут тега для ресурса — это льнин на один вкладыш.
Электрические цепи или IAC-диаграмма? Вам решать!
...
"aws_resource_type" "aws_resource" {
...
tags = var.default_tags
...
}
...Уровень мощности вверх состоит в том, чтобы объединить переменную карты тегов по умолчанию с помощью пользовательских встроенных тегов. Мы за это мы получаем моду и начнем использовать TF Merge (). Предоставление переменной карты тегов по умолчанию в виде одного аргумента функций и пользовательских тегов в качестве второго аргумента функций типа карты, мы получаем, как мы используем как данные по умолчанию, так и настраиваемые встроенные теги! Бум, магия!
...
"aws_resource_type" "aws_resource" {
...
tags = "${merge(map(
"Special_Key", "some special value",
"Special_Key_2", "some other special value",
...
), var.default_tags)}"
...
}
...Заворачивать
Hashicorp продолжает улучшать террафору с каждым выпуском. Скажите, что вы будете о том, что HCl, будучи почти JSON, но с дополнительной функциональностью; Это мощный и сюжетный инструмент для управления инфраструктурой проектов. С помощью соответствующей стратегии метки это также становится мощным способом для отслеживания этой инфраструктуры.
Примечания
- Я сделал не Скажите «менеджеры» нарочно. В истинной среде DevOps каждый разработчик, оператор, Sysadmin, на каждой команде в каждом потоке технологических ценностей должен знать о том, как и ответственность за систему в целом. Поделитесь бременем. Нет бункеров.
- Использование карты () можно использовать переменную в качестве ключа. Это потому, что карта () оценивала переменную «ключ» перед возвратом.
- Эта концепция заслала меня сначала. Но после мышления о механике это имеет смысл. Почему последняя операция в функции будет в переменной, не возвращенной?
Дополнительное чтение
- https://weidongzhou.wordpress.com/2018/12/13/how-to-do-tagging-efficiently-in-terraform/
- https://groups.google.com/forum/#!topic/terraform-tool/1yjotodsBog
- https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html
- https://blog.scottlowe.org/2018/06/11/using-variables-in-aws-tags-with-terraform/
- https://blog.scottlowe.org/2018/06/11/using-variables-in-aws-tags-with-terraform/
- https://www.terraform.io/docs/configuration/locals.html (0.12+)
Оригинал: «https://dev.to/david_j_eddy/tagging-with-terraform-5hn3»