Умови найменувань
Загальні умови
Використовуйте
_(підкреслення) замість-(тире) всюди (імена ресурсів, імена джерел даних, імена змінних, вихідні дані тощо).Віддавайте перевагу використанню малих літер і цифр (навіть якщо підтримується UTF-8).
Аргументи ресурсів і джерел даних
Не повторюйте тип ресурсу в назві ресурсу (ні частково, ні повністю):
resource "aws_route_table" "public" {}resource "aws_route_table" "public_route_table" {}resource "aws_route_table" "public_aws_route_table" {}Ім'я ресурсу повинно називатись
this,якщо немає більш описової та загальної назви, або якщо модуль ресурсів створює один ресурс цього типу (наприклад, у AWS VPC module існує єдиний ресурс типуaws_nat_gatewayі декілька типів ресурсівaws_route_table, так щоaws_nat_gatewayмає бути названийthisіaws_route_tableповинен мати більш описову назву - наприклад - приватний, публічний, база даних).Завжди використовуйте іменники в однині для назв.
Використання - всередині значень аргументів і в місцях, де значення буде доступне для людини (наприклад, всередині імені DNS екземпляра RDS).
Включайте аргумент
count/for_eachвсередині блоку ресурсу або джерела даних як перший аргумент угорі та розділяйте новим рядком після нього.Включайте аргумент
tags,якщо це підтримується ресурсом, як останній реальний аргумент, наступний заdepends_onтаlifecycle, якщо необхідно. Всі вони повинні бути розділені одним порожнім рядком.При використанні умов в аргументі
count/for_eachвіддавайте перевагу логічним значенням замість використанняlengthабо інших виразів.
Приклади коду ресурсів
Використання count / for_each
count / for_eachРозміщення тегів
Умови вcount
countЗмінні
Не винаходьте велосипед у ресурсних модулях: використовуйте
name,description, іdefaultзначення для змінних, як зазначено в розділі «Довідник аргументів» для ресурсу, з яким ви працюєте.Підтримка перевірки змінних досить обмежена (наприклад, не можна отримати доступ до інших змінних або виконати пошук). Плануйте відповідно, тому що в багатьох випадках ця функція не корисна.
Використовуйте форму множини в імені змінної, якщо тип є
list(...)абоmap(...).Упорядковуйте ключі у змінному блоці, як описано далі:
description,type,default,validation.Завжди включайте
descriptionдля всіх змінних, навіть якщо ви думаєте, що це очевидно (це знадобиться вам у майбутньому).Віддавайте перевагу використанню простих типів (
number,string,list(...),map(...),над спеціальними, як наприкладobject(),якщо вам не потрібні жорсткі обмеження для кожного ключа.Використовуйте спеціальні типи, наприклад
map(map(string))якщо всі елементи у map мають одинаковий тип (наприклад,string) або можна конвертувати в нього (наприклад типnumberможна конвертувати уstring).Використовуйте тип
anyщоб відключити перевірку типу, починаючи з певної глибини або коли має підтримуватися декілька типів.Значенння
{}це іноді map, а іноді - object. Використовуйтеtomap(...)щоб зробити map, тому що немає можливості зробити об'єкт.
Вихідні дані
Робіть вихідні дані узгодженими і зрозумілими за межами їх області (коли користувач використовує модуль, має бути очевидним, який тип і атрибут значення він повертає).
Ім’я виводу має описувати властивість, яку він містить, і бути менш вільною формою, ніж ви зазвичай хотіли б.
Хороша структура назви виводу виглядає так
{name}_{type}_{attribute}, де:{name} -це ім’я ресурсу або джерела даних без префікса постачальника.{name}дляaws_subnet- цеsubnet, дляaws_vpc- цеvpc.{type}є різновидом джерела ресурсів.{attribute}є атрибутом, який повертає вихідні дані.
Якщо вихідні дані повертають значення з функціями інтерполяції та кількома ресурсами,
{name}і{type},вонимають бути якомога загальнішими (це як префікс слід пропустити). Перегляньте приклади.Якщо повертається значення у вигляді списка, воно повинно мати назву у множині. Перегляньте приклади.
Завжди включайте
descriptionдля всіх результатів, навіть якщо ви думаєте, що це очевидно.Уникайте налаштування
чутливихаргументів, якщо ви повністю не контролюєте використання цього виводу в усіх місцях і у всіх модулях.Віддавайте перевагу
try()(доступний з Terraform 0.13) надelement(concat(...))(застарілий підхід для версій до 0.13)
Приклади коду вихідних даних
Повертає щонайбільше один ідентифікатор із групи безпеки:
Якщо є декілька ресурсів одного типу, це слід пропустити в назві виводу:
Використовуйте назви у множині, якщо повернене значення є списком
Last updated