Article in English can be found on dev.to/arxeiss/custom-providers-for-terraform-1j6l
Nastavit infrastrukturu bez Terraformu znamená přihlásit se do Console daného poskytovatele a vše si tam naklikat. Jenže takové nastavení nelze jednoduše zálohovat, verzovat či replikovat pro vývojové a staging prostředí. Navíc se špatně budou hledat chyby, bude potřeba vše pečlivě prohledat. A přesně proto je zde Terraform. Tento článek ale má být o psaní vlastního providera. Proto pro pochopení základů Terraformu doporučuji video Terraform in 100s.
Behind the scenes
Než někdo začne psát vlastní provider, měl by chápat, jak vše na pozadí funguje. Terraform prvně načte všechny *.tf
soubory a vytvoří graf závislostí – plán. Na základě plánu lze pak provádět samotné operace - Create, Read, Update, Delete. Tyto metody musí již definovat provider a Terraform Core je pouze volá. Samotná komunikace s backend API je zodpovědnost právě providera. Je tedy jedno, jestli to bude REST, gRPC nebo SOAP API či úplně vlastní řešení.
Terraform Core se tedy postará pouze o parsování a validaci konfiguračních souborů. Dále načtení providera a volání jeho CRUD funkcí. Provider se stará o komunikaci s danou službou přes konfigurační API. Přes Terraform by šly psát i články na blog, ale nevím, kdo by to dělal.
Prezentace
Vlastní provider pro Terraform jsem vytvářel v rámci projektu, na kterém aktuálně pracuji. Proto jsem měl v rámci firmy malou prezentaci o této technologii. Spustitelná ukázka je na Githubu.
Ukázkový projekt
Pro ukázku jsem vytvořil jednoduchý HTTP server s REST API a také vlastní provider. Lze si tak vše vyzkoušet od konfiguračních souborů Terraform souborů až po zápis do databáze. Vše je na github.com/arxeiss/sample-terraform-provider včetně popisu, jak vše spustit.
# Spuštění backend serveru, vypíše také Access Token do konzole
make start_server
# Kompilace Terraform providera make terraform_build
# Spouštění terraform příkazů je nutné provádět ve složce s *.tf soubory cd provider/config terraform plan terraform apply
# A mnoho dalších terraform příkazů
Psaní vlastního Terraform providera bude nejspíše rarita. Kdo ale zkušenosti s tímto úkole má, může je sdílet v komentářích s ostatními čtenáři.
K tomuto článku již není možné přidávat další komentáře