Zmienne terraform

Zmienne terraform
Terraform stał się jednym z wiodących narzędzi do rozwoju wielu chmur. Używa własnego języka opartego na składni o nazwie - HCL (język konfiguracyjny Hashicorp), chociaż sam jest opracowany w Golang.

Terraform jest używany do automatyzacji i zarządzania infrastrukturą, platformami i usługami przy użyciu języka deklaratywnego. Zbudowany w celu rozwiązania infrastruktury jako Code (IAC), Terraform obsługuje wielu dostawców usług w chmurze. Jest to narzędzie open source opracowane przez Hashicorp. Korzystając z IAC, możemy zarządzać konfiguracją infrastruktury za pomocą plików konfiguracyjnych. Za e.G., Możemy wdrażać, aktualizować i zarządzać naszą infrastrukturą, definiując wymagane zasoby.

Co obejmiemy?

W tym przewodniku dowiemy się o zmiennych terraform. Zobaczymy, dlaczego zmienne terraform są ważne i jak powinniśmy je zdefiniować i używać.

Dlaczego miałbyś dbać o zmienne terraformowe?

W Terraform możemy przypisać wartości argumentom za pośrednictwem literałów, takich jak liczby całkowite i sznurki. Może to być dobre podejście do konfiguracji małych infrastruktury, ale wraz ze wzrostem wielkości infrastruktury, podejście to staje się bardzo nieefektywne. W takich przypadkach możemy użyć zmiennych wejściowych Terraform, w których deklarujemy wartość tylko w jednym miejscu, a następnie używamy tej wartości w innych częściach kodu i plików, odwołując się do nich. Takie podejście jest bardziej wydajne, ponieważ sprawia, że ​​kod jest wielokrotnego użytku i kompozytowy.

Zauważ, że Terraform używa terminu „zmienne” lub „zmienne terraform” do odniesienia zmiennych wejściowych.

Definiowanie zmiennej

W Terraform zmienne są zdefiniowane w „zmiennej” o nazwie blok, który ma następujący typ składni:

Zmienna nazwa_nazowa argumenty

Samo słowo kluczowe „zmienna” deklaruje blok jako typ bloku „zmiennej”. „Nazwa_zmienna zmiennej”, po słowie kluczowym zmiennej, to nazwa zmiennej, którą zamierzamy zdefiniować. Ta nazwa musi być charakterystyczna od innych zmiennych w tym samym module. Za pomocą tej nazwy zmienną przypisuje się wartość z zewnątrz. Podobnie, używając nazwy zmiennej, możemy odwoływać się do jej wartości w module.

Należy zauważyć, że następujących zastrzeżonych identyfikatorów nie może być używane dla nazwy zmiennej: źródło, wersja, dostawcy, hrabia, for_each, cykl życia, zależnie.

Argumenty dotyczące bloku zmiennego

Poniższe argumenty można zadeklarować wewnątrz bloku typu zmiennego:

Domyślnie - ustawia domyślną wartość dla bloku. Zmienna jest opcjonalna, jeśli jest obecna wartość domyślna. Ta wartość zostanie użyta, jeśli nie zostanie określona żadna inna wartość podczas wywoływania modułu.

Typ - określa typy wartości, które można użyć ze zmienną.

Opis - jest to rodzaj komentarza na temat samej zmiennej.

Walidacja - jest to blok do zdefiniowania warunków/kontroli dla zmiennej.

wrażliwe - ukrywa dane poufne do wyświetlania podczas uruchamiania polecenia „plan” lub „zastosuj”.

Nullable - kontroluje, czy zmiennej można przypisać wartość w module.

Dostęp do wartości zmiennej

Aby uzyskać dostęp do wartości zmiennej z modułu, użyj formatu:

var.

Gdzie „var” jest prefiksem i jest etykietą po słowach kluczowych „zmienna”. Tę przypisaną wartość zmiennej można uzyskać tylko w wyrażeniach w module, w którym została zdefiniowana. Jako przykład rozważ zmienną „klucz” zdefiniowany jako:

zmienna „instance_type”
Domyślnie = „T2.mikro ”


Możemy odwołać się do powyższej zmiennej w następujący sposób:

Zasób „aws_instance” „przykład”
instance_type = "var.instance_type "
ami = var.image_id

Zmienne wiersza poleceń

Aby przypisać wartość do zmiennej w wierszu poleceń, Terraform używa opcji „-VAR”. Za e.G., Po wykonywaniu planu Terraform i Terraform Zastosuj, możemy zrobić w następujący sposób:

1. Przekazanie instancji AMI-ID

$ terraform Apply -var = "image_id = ami -xyz123"


2. Przekazywanie listy instancji AMI-IDS

$ terraform Apply -var = 'image_id_list = ["ami -xyz123", "ami -ABC456"]' -var = "instance_type = t2.mikro "


3. Przekazywanie wartości typu mapy

$ terraform Apply -var = 'image_id_map = „us-east-1”: „ami-xyz123”, „us-east-2”: „AMI-ABC456”'

Pliki z definicji zmiennych (.TFVARS)

Gdy istnieje wiele zmiennych, dobrym pomysłem jest umieszczenie ich wszystkich w pliku definicji zmiennej (a .plik tfvars lub .TFVARS.plik JSON). Następnie możemy przekazać ten plik w wierszu poleceń w następujący sposób:

$ terraform Apply -var -file = "przykład.TFVARS "


Ten plik zostanie przeanalizowany automatycznie, jeśli nazywa się „Terraform.tfvars '.

Zauważ, że nie umieszczamy tego pliku w żadnym systemie kontroli źródłowej, aby uniknąć narażenia na jakiekolwiek poufne dane.

Również jeśli dodamy '.Auto „do nazwy pliku przed”.na przykład tfvars.automatyczny.TFVAR, ten plik zostanie załadowany automatycznie bez określenia flagi „var-plik”. To jest to samo co „Terraform.plik tfvars.

Zmienne środowiska

Zmienne środowiskowe, z nazwami poprzedzonymi TF_VAR, można użyć do definiowania zmiennych wejściowych. Za e.G., „TF_VAR_MYKEY” będzie odnosić się do wartości zmiennej Terraform o nazwie „Mykey”. Aby ustawić pojedynczą wartość dla tej zmiennej środowiskowej na Unix/Linux, użyj formatu:

$ Tf_var_mykey = „FHJ7-47DD-HLL02-PJU8”


Podobnie w przypadku systemu systemu Windows użyj formatu:

Ustaw tf_var_mykey = „FHJ7-47DD-HLL02-PJU8”


Alternatywnie możemy również użyć Terraform.plik TFVARS.

Owinięcie

W końcu w końcu zamykamy ten artykuł, chociaż istnieje wiele innych rzeczy do omówienia. Przedstawiliśmy wysoki poziom zmiennych terraform. Oprócz Terraform istnieją również inne narzędzia, takie jak AWS Cloudformation, szef kuchni, marionetka, ansible i tak dalej. Każde narzędzie ma własne zalety i ograniczenia. Zaletą korzystania z Terraform jest to, że nie jest ono związane z konkretnym dostawcą usług.