Adlandırma Kuralları
Genel Kurallar
En azından bu kurallara uymamak için hiçbir sebep olmamalı :)
Gerçek bulut kaynaklarının genellikle izin verilen adlarda kısıtlamalara sahip olduğuna dikkat edin. Örneğin, bazı kaynaklar tire içeremez, bazıları camelCased olmalıdır. Bu kitaptaki kurallar, Terraform adlarının kendilerine atıfta bulunur.
Her yerde
-
(tire) yerine_
(alt çizgi) kullanın (kaynak adlarında, veri kaynağı adlarında, değişken adlarında, çıktılarda vb.).Küçük harf ve rakam kullanmayı tercih edin (UTF-8 desteklense de).
Kaynak ve veri kaynağı parametreleri
Kaynak adında kaynak türünü tekrar etmeyin (kısmen veya tamamen değil):
Daha fazla açıklayıcı ve genel ad yoksa veya kaynak modülü bu türde tek bir kaynak oluşturuyorsa (örneğin, AWS VPC modülünde
aws_nat_gateway
türünde tek bir kaynak varsa vetypeaws_route_table
türünde birden çok kaynak varsa) kaynak adı bu şekilde adlandırılmalıdır:aws_nat_gateway
bu şekilde adlandırılmalı veaws_route_table
daha açıklayıcı adlara sahip olmalıdır - private, public, database gibi).Mutlaka tekli isimler kullanın.
-
Çizgiyi parametre değerlerinin girildiği değişkenlerde kullanabilirsiniz.'
count
' veya 'for_each
' kullanan bir parametre veya veri kaynağı bloğu ilk parametre olmalıdır ve yeni bir satırla ayrılarak en üstte konumlanmalıdır.Mümkün olduğunca son parametrede
depends_on
,lifecycle
gibi etiketleri(tags
) kullanmaya çalışın.'
count
' veya 'for_each
' kullanırken mümkün olduğunca boolean değerleri tercih edin. Length veya başka karşılaştırmaları ikinci plana atmanız iyi olacaktır.
'Kaynak(Resource)
' kod örneği
Kaynak(Resource)
' kod örneğicount/for_each
kullanımı
count/for_each
kullanımıEtiketlerin Kullanımı (tags
)
tags
)count
içerisindeki karşılaştırmalar
count
içerisindeki karşılaştırmalarDeğişkenler
Kaynak modüllerinde tekerleği yeniden icat etmeyin: birlikte çalıştığınız kaynak için "Argüman Referansı" bölümünde tanımlandığı gibi değişkenler için
ad
,açıklama
vevarsayılan değeri
kullanın.Değişkenlerde doğrulama desteği oldukça sınırlıdır (örneğin, diğer değişkenlere erişemez veya arama yapamaz). Buna göre plan yapın çünkü çoğu durumda bu özellik işe yaramaz.
Tür
list(...)
veyamap(...)
olduğunda, değişken adında çoğul formu kullanın.'Key'leri aşağıdaki sırada olacak şekilde bir değişken bloğunda muhafaza ediniz. Tanım(
Description
), tip(type
),default
(Fabrika Ayarı), doğrulama(validation
)Açık olduğunu düşünseniz bile her zaman tüm değişkenlere açıklama ekleyin (gelecekte buna ihtiyacınız olacak).
Her bir anahtar üzerinde katı kısıtlamalarınız olması gerekmedikçe,
object()
gibi belirli türler yerine basit türleri (number
,string
,list(...)
,map(...)
, herhangi biri) kullanmayı tercih edin.map'in
tüm öğeleri aynı türe sahipse (ör.string
) veya buna dönüştürülebiliyorsa (ör.number
türü stringe dönüştürülebilirse)map(map(string))
gibi belirli türleri kullanın.Belirli bir derinlikten başlayarak veya birden çok türün desteklenmesi gerektiğinde tür doğrulamasını devre dışı bırakmak için 'any' kullanın.
{}
değeri bazen bir map, bazen de bir objedir. Map'e çevirmek içintomap(...)
kullanın çünkü bir obje yapmanın yolu yoktur.
Çıktılar
Çıktıları kapsamı dışında tutarlı ve anlaşılır hale getirin (bir kullanıcı bir modül kullanırken, döndürdüğü değerin türünü ve niteliğini açıkça belirtmelidir).
Çıktının adı, içerdiği özelliği tanımlamalı ve normalde istediğinizden daha az serbest biçimli olmalıdır.
Çıktı adı için iyi bir yapı
{name}_{type}_{attribute}
gibi görünür, burada:{name}
bir kaynak veya veri kaynağı olabilir. Tabiki sağlayıcı prefixi olmadan.aws_subnet
için{name}
'subnet'dir
,foraws_vpc
'vpc
'dir.{type}
ise kaynağın tipini belirtmektedir.{attribute}
, çıktı tarafından döndürülen bir niteliktir
Eğer çıktılar interpolation fonksiyonlarını veya çoklu kaynak barındıran bir değer döndürüyorsa
{name}
ve{type}
mümkün olduğunca genel olmalıdır. Örneği inceleyebilirsiniz.Eğer döndürülen değer bir list ise çoğul bir isme sahip olmalıdır.
Çok açık olduğunu düşündüğünüz çıktılar dahil mutlaka tüm çıktılara tanım(
description
) ekleyiniz.Tüm modüllerde bu çıktının kullanımını tamamen kontrol etmedikçe
sensetive
argüman kullanmaktan kaçının.element(concat(...))
yerinetry()
'ı (Terraform 0.13'ten beri mevcuttur) tercih edin (0.13'ten önceki sürüm için eski yaklaşım)
Çıktı(Output
) için kod örnekleri
Output
) için kod örnekleriEn fazla güvenlik grubunun bir ID'sini döndürün:
Aynı türden birden fazla kaynağa sahip olduğunda, çıktı adına bu kaçınılmalıdır:
Eğer dönen değer list ise çoğul isim kullanımı
Last updated