Wielu inżynierów zapomina, że narzędzia, z których korzystają, można w prosty sposób łączyć. Ja w ten sposób w projektach łączę często Terraform i Makefile. Pozwala mi to zautomatyzować proces wykonywania czynności oraz uniknąć prostych błędów, takich jak choćby literówki czy odwoływanie się do nieistniejących plików. Pokażę Ci teraz jakie to banalnie proste!
Czym jest Makefile?
Makefile to nic innego jak plik reguł dla programu make. Sam program make znany jest developerom, szczególnie jęz`yków kompilowalnych, ale nie tylko. Jest to na tyle elastyczna formuła, że sprawdza się w wielu zastosowaniach. W uproszczeniu jego działanie sprowadza się do wykonania zaplanowanego scenariusza składającego się z sekwencji komend. W tym procesie wykorzystywane są reguły, pomiędzy którymi programista tworzy sieć zależności. Jedna reguła może zależeć od jednej lub więcej innych reguł. Cały skrypt zaś może być dość dowolnie parametryzowany.
Plikiem definicji tak utworzonego scenariusza jest plik Makefile, który przetwarza program make
. Tak, jego składnia może być dość skomplikowana i zagmatwana w przypadku większych projektów. Natomiast gdy łączymy ze sobą Terraform i Makefile będziemy zazwyczaj operowali na bardzo prostych scenariuszach.
Jak połączyć Terraform i Makefile?
Gdy łączymy ze sobą Terraform i Makefile to zazwyczaj chcemy zautomatyzować przeprowadzenie takich operacji jak init
, plan
, apply
oraz destroy
. Wywołując te czynności z linii poleceń często musimy pamiętać o podaniu właściwych dodatkowych parametrów. Za pomocą narzędzie make czynności te sobie ułatwimy.
Poniżej przykładowy plik Makefile, którego używam w swoich projektach
all: plan apply plan: terraform get -update terraform plan -var-file terraform.tfvars -out terraform.tfplan destroy: terraform plan -destroy -var-file terraform.tfvars -out terraform.tfplan terraform apply terraform.tfplan apply: terraform apply -var-file terraform.tfvars clean: rm -f terraform.tfplan rm -f terraform.tfstate rm -fR .terraform/
Dzięki tak przygotowanemu skryptowi mogę teraz operować poleceniami make plan
oraz make apply
aby zbudować opisane w skryptach Terraform środowisko. Zamiast tych dwóch poleceń mogę też wydać polecenie make all
, które wykona obie czynności. Usunięcie środowiska uzyskuję przez wydanie polecenia make destroy
, zaś za pomocą make clean
czyszczę wszystkie pliki stanu.