Рубрики
Uncategorized

Теги с террафом

Использование облачных ресурсов может быть ускорение к бизнесу, освобождая в инженерных командах и дорогостоящим на банковский счет. Используйте теги, чтобы управлять своими ресурсами! Теги от AWS, DEVOPS, TERRAFORM, HOWTO.

Поставлен из моего блога Отказ

Использование облачных ресурсов может быть ускорение к бизнесу, освобождая в инженерных командах и дорогостоящим на банковский счет. Если у вас есть каждый оставленный большой выпускник или экземпляр базы данных, работающих в выходные (или случайно преданные ключи 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://dev.to/david_j_eddy/tagging-with-terraform-5hn3»