Атау келісімдері

Жалпы келісімдер

circle-info

Ең болмағанда осы келісімдерді сақтамауға ешқандай себеп жоқ :)

circle-info

Нақты бұлттық ресурстардың рұқсат етілген атауларында жиі шектеулер болатынын ескеріңіз. Мысалы, кейбір ресурстарда дефистер болмауы керек, кейбіреулері camel-case (ТүйеӨркеш) стилінде болуы керек. Бұл кітаптағы келісімдер Terraform атауларының өздеріне қатысты.

  1. Барлық жерде (ресурс атауларында, дереккөз атауларында, айнымалылар атауларында, шығыстарда және т.б.) - (дефис) орнына _ (астын сызу белгісін) қолданыңыз.

  2. Кіші әріптер мен сандарды қолдануды жөн көріңіз (UTF-8 қолдау көрсетілсе де).

Ресурс және дереккөз аргументтері

  1. Ресурс атауында ресурс түрін қайталамаңыз (жартылай да, толықтай да):

circle-check
triangle-exclamation
triangle-exclamation
  1. Егер анағұрлым сипаттамалық және жалпы атау болмаса немесе ресурс модулі осы түрдегі жалғыз ресурсты жасаса, ресурс атауы this деп аталуы керек (мысалы, AWS VPC модуліндеarrow-up-right aws_nat_gateway түріндегі бір ресурс және aws_route_table түріндегі бірнеше ресурстар бар, сондықтан aws_nat_gateway this деп аталуы керек, ал aws_route_table анағұрлым сипаттамалық атауларға ие болуы керек — мысалы, private, public, database).

  2. Атаулар үшін әрқашан зат есімнің жекеше түрін қолданыңыз.

  3. Аргумент мәндерінде және мән адамға көрсетілетін жерлерде (мысалы, RDS данасының DNS атауында) - қолданыңыз.

  4. count / for_each аргументін ресурс немесе дереккөз блогының ішіне ең бірінші аргумент ретінде жоғарғы жағына қосыңыз және одан кейін жаңа жолмен бөліңіз.

  5. Егер ресурс қолдаса, tags аргументін соңғы нақты аргумент ретінде, қажет болса depends_on және lifecycle аргументтерінің алдына қосыңыз. Бұлардың барлығы бір бос жолмен бөлінуі керек.

  6. count / for_each аргументінде шарттарды қолданған кезде length немесе басқа өрнектердің орнына логикалық (boolean) мәндерді жөн көріңіз.

resourceкодының мысалдары

count / for_each қолданылуы

circle-check
triangle-exclamation

Орналасуы tags

circle-check
triangle-exclamation

count ішіндегі шарттар

circle-check

Айнымалылар

  1. Ресурс модульдерінде велосипед ойлап таппаңыз: сіз жұмыс істеп жатқан ресурс үшін «Аргумент анықтамалығы» (Argument Reference) бөлімінде анықталғандай айнымалылар үшін

    name, description, және default мәндерін қолданыңыз.

  2. Айнымалыларда валидацияны қолдау айтарлықтай шектеулі (мысалы, басқа айнымалыларға қол жеткізе алмайды немесе Terraform1.9-ға дейінгі нұсқаны қолдансаңыз, іздеулер жасай алмайды). Жоспарды сәйкесінше құрыңыз, өйткені көп жағдайда бұл мүмкіндік пайдасыз болып қалады.

  3. Түрі list(...) немесе map(...)болған кезде айнымалы атауында көпше түрді қолданыңыз.

  4. Айнымалы блогындағы кілттерді мына ретпен орналастырыңыз: description , type, default, validation.

  5. Айнымалылардың барлығына, тіпті айтпаса да түсінікті деп ойласаңыз да, әрқашан description қосыңыз (бұл сізге болашақта қажет болады). Мүмкін болса, ресми құжаттамадағыдай тұжырымдаманы қолданыңыз.

  6. Әр кілтте қатаң шектеулер болуы қажет болмаса, object()сияқты нақты түрден гөрі қарапайым түрлерді (number, string, list(...), map(...), any), қолданған дұрыс.

  7. Егер картаның map барлық элементтері бірдей түрде болса (мысалы, string) немесе оған түрлендіруге болатын болса (мысалы, number түрін string түріне түрлендіруге болады), map(map(string))сияқты нақты түрлерді қолданыңыз.

  8. Белгілі бір тереңдіктен бастап түрді тексеруді өшіру үшін немесе бірнеше түрлерге қолдау көрсету керек болғанда any түрін қолданыңыз.

  9. {}мәні кейде карта, кейде объект болып табылады. Карта жасау үшін tomap(...) қолданыңыз, себебі объект жасаудың жолы жоқ.

  10. Қос терістеуден аулақ болыңыз: шатасуды болдырмау үшін оң айнымалы атауларын қолданыңыз. Мысалы, encryption_enabled орнына encryption_disabled.

  11. For variables that should never be null, set nullable = false. This ensures that passing null uses the default value instead of null. If null is an acceptable value, you can omit nullable or set it to true.

  12. Ешқашан nullболмауы керек айнымалылар үшін nullable = falseдеп орнатыңыз. Бұл nullмәні берілгенде null-дың орнына әдепкі мәннің қолданылуын қамтамасыз етеді. Егер nullқабылданатын мән болса, nullable параметрін қалдырып кетуге немесе trueдеп орнатуға болады.

Шығыстар

Шығыстарды бірізді және оның ауқымынан тыс түсінікті етіңіз (пайдаланушы модульді қолданғанда, оның қандай түрді және қандай атрибутты қайтаратыны анық болуы керек).

  1. Шығыс атауы ондағы қасиетті сипаттауы керек және әдетте қалағаныңыздан гөрі еркін пішінде болмауы керек.

  2. Шығыс атауының жақсы құрылымы {name}_{type}_{attribute} сияқты болады, мұнда:

    1. {name} ресурс немесе дереккөз атауы.

      • {name} үшін data "aws_subnet" "private" бұл private

      • {name} үшін resource "aws_vpc_endpoint_policy" "test" бұл test

    2. {type}провайдер префиксінсіз ресурс немесе дереккөз түрі.

      • {type} үшін data "aws_subnet" "private" бұл subnet

      • {type} үшін resource "aws_vpc_endpoint_policy" "test" бұл vpc_endpoint_policy

    3. {attribute} шығыс қайтаратын атрибут.

  3. Егер шығыс интерполяция функцияларымен және бірнеше ресурстармен мән қайтарса, ондағы {name} және {type} мүмкіндігінше жалпылама болуы керек (префикс ретіндегі this aалынып тасталуы керек).Мысалды қараңыз

  4. Егер қайтарылатын мән тізім болса, оның атауы көпше түрде болуы керек. Мысалды қараңыз .

  5. Барлық шығыстарға, тіпті айтпаса да түсінікті деп ойласаңыз да, әрқашан description қосыңыз.

  6. Бұл шығыстың барлық модульдердегі барлық жерде қолданылуын толық бақыламасаңыз, sensitive аргументін орнатудан аулақ болыңыз.

  7. try() (Terraform 0.13 нұсқасынан бастап қолжетімді) функциясын element(concat(...)) (0.13 нұсқасына дейінгі ескірген әдіс) орнына қолданған дұрыс.

output кодының мысалдары

Қауіпсіздік тобының ең көбі бір идентификаторын қайтару:

circle-check

Бір түрдегі бірнеше ресурс болған кезде, шығыс атауында this алынып тасталуы керек:

triangle-exclamation

Егер қайтарылатын мән тізім болса, көпше атауды қолданыңыз

circle-check

Last updated