Умови найменувань
Загальні умови
Не повинно бути ніяких причин не дотримуватися принаймні цих умов :)
Майте на увазі, що реальні хмарні ресурси часто мають обмеження у дозволених іменах. Деякі ресурси, наприклад, не можуть містити тире, деякі мають бути у формі camel-cased стилю. Умови в цій книзі посилаються на самі імена Terraform.
Використовуйте
_
(підкреслення) замість-
(тире) всюди (імена ресурсів, імена джерел даних, імена змінних, вихідні дані тощо).Віддавайте перевагу використанню малих літер і цифр (навіть якщо підтримується 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