დასახელების კონვენცია
Last updated
Last updated
გამოიყენეთ _
(underscore) -
(dash) მაგიერ ყველგან (რესურსების დასახელებაში, მონაცემთა წყაროს სახელებში, ცვლადების სახელეში და ა.შ.).
უკეთესია გამოიყენოთ lowercase ასოები და ციფრები (მიუხედავად UTF-8 მხარდაჭერისა).
ნუ გამოიყენებთ რესურსის ტიპს რესურსის სახელში (ნაწილობრივ თუ სრულად):
რესურსის სახელს უნდა ერქვას this
იმ შემთხვევაში თუ არ არის მეტი აღწერითი და ზოგადი სახელი ხელმისაწვდომი, ან თუ რესურსის მოდული ქმნის მხოლოდ ერთ ასეთი ტიპის რესურსს (მაგალითად, -ში არის მხოლოდ ერთი aws_nat_gateway
ტიპის რესურსი და რამოდენიმე typeaws_route_table
ტიპის რესურსი, ამიტომ aws_nat_gateway
-ს უნდა დაერქვას this
და aws_route_table
-ს უნდა ჰქონდეს მეტი აღწერითი სახელები - როგორიცაა private
, public
, database
).
დასახელებებში ყოველთვის გამოიყენეთ მხოლობითი არსებითი სახელები.
გამოიყენეთ -
არგუმენტების მნიშვნელობებსა და იმ ადგილებში სადაც ეს მნიშვნელობები იქნება გამოტანილი საჯაროდ (მაგალითად, RDS instance-ის DNS სახელში).
გამოიყენე არგუმენტი nclude argument count
/ for_each
რესურსში ან მონაცემთა წყაროს ბლოკში პირველ არგუმენტად დასაწყისში და გამოყავით ახალი ხაზით.
გამოიყენეთ არგუმენტი tags,
თუ რესურსს აქვს ამის მხარდაჭერა, depends_on
და lifecycle
ბლოკებამდე, თუ არსებობს ამის საჭიროება. ყველა ბლოკი უნდა გამოიყოს ცარიელი ხაზით.
count
/ for_each
არგუმენტებში კონდიციების გამოყენებისას, უპირატესობა მიანიჭეთ boolean მნიშვნელობს ვიდრე length
ან სხვა ტიპის expression-ებს.
resource
) კოდის მაგალითებიcount
/ for_each
U-ის გამოყენებაtags
) განთავსებაcount
-შინუ გამოიგონებთ ველოსიპედს რესურსის მოდულებში, გამოიყენეთ: name
, description
, და default
მნიშვნელობები ცვლადებისთვის ისე როგორც "Argument Reference" სექციაში არის განსაზღვრული.
ცვლადებში ვალიდაციის მხარდაჭერა არის საკმაოდ შეზღუდული (მაგალითად არ აქვს წვდომა სხვა ცვლადებზე). ძირითად შემთხვევბში მიზანშეწონილია გამოიყენოთ Plan-ი, რადგაც ვალიდაციის ოფცია ხშირ შემთხვევაში არის უშედეგო.
ცვლადის სახელებში გამოიყენეთ მრავლობითი ფორმა როდესაც მისი ტიპი არის list(...)
ან map(...)
.
ცვლადის ბლოკში დაიცავით ელემენტების შემდეგი მიმდევრობა: description
, type
, default
, validation
.
ყოველთვის გამოიყენეთ description
ყველა ცვლადზე (სამომავლოდ აუცილებლად გამოგადგებათ)
უმჯობესია გამოიყენოთ მარტივი ცვლადის ტიპები (number
, string
, list(...)
, map(...)
, any
) ვიდრე სპეციფიური ტიპები როგორიცაა object()
იმ შემთხვევაში თუ არ გჭირდებათ მკაცრი შეზღუდვები key-ებზე.
გამოიყენეთ სპეციფიური ცვლადის ტიპები როგორიცაა map(map(string))
იმ შემთხვევაში თუ ყველა ელემენტს map-ზე ერთი და იგივე ცვლადის ტიპი (მაგალითად string
) ან შესაძლოა დაკონვერტირდეს მასში (მაგალითად number
შესაძლოა დაკონვერტირდეს string
-ში).
გამოიყენეთ ცვლადის ტიპი any
რათა გამოტოვოთ ვალიდაცია როდესაც კონკრეტულ შრეზე ან როდესაც რამოდენიმე ცვლადის ტიპი უნდა იქნას მხარდაჭერილი.
მნიშვნელობა(Value) {}
ზოგჯერ არის map ტიპისა მაგრამ ხანდახან არის object ტიპის. გამოიყენეთ tomap(...)
რათა შექმნა map იმ შემთხვევაში თუ შეზღუდულია object-ის შექმნა.
Make outputs consistent and understandable outside of its scope (when a user is using a module it should be obvious what type and attribute of the value it returns).
The name of output should describe the property it contains and be less free-form than you would normally want.
Good structure for the name of output looks like {name}_{type}_{attribute}
, where:
{name}
is a resource or data source name without a provider prefix. {name}
for aws_subnet
is subnet
, foraws_vpc
it is vpc
.
{type}
is a type of a resource sources
{attribute}
is an attribute returned by the output
Always include description
for all outputs even if you think it is obvious.
Avoid setting sensitive
argument unless you fully control usage of this output in all places in all modules.
Prefer try()
(available since Terraform 0.13) over element(concat(...))
(legacy approach for the version before 0.13)
output
კოდის მაგალითიდააბრუნეთ security group მხოლოდ ერთი ID:
ერთი და იმავე ტიპის მრავალი რესურსის არსებობისას, this
უნდა იყოს გამოტოვებული Output სახელით:
.
If the output is returning a value with interpolation functions and multiple resources, {name}
and {type}
there should be as generic as possible (this
as prefix should be omitted). .
If the returned value is a list it should have a plural name. .