Jeśli kiedykolwiek pracowałeś z dużymi repozytoriami GitHub i używałeś Terraforma, mogłeś natrafić na frustrujący problem z wydajnością podczas fazy inicjalizacji (terraform init
). Prędkość pobierania z GitHub potrafi być zaskakująco wolna, co w niektórych przypadkach może prowadzić do błędów w procesie automatyzacji infrastruktury. W moim przypadku kilkukrotnie otrzymałem błąd:
Operation failed: failed running terraform init (exit -1)
Dlaczego to się dzieje?
Ten problem często wynika z faktu, że Terraform podczas inicjalizacji (faza terraform init
) musi pobrać całe repozytorium na przykład z GitHub. Jeśli repozytorium jest duże i posiada długą historię zmian, pobieranie wszystkich commitów i plików może zająć sporo czasu.
Sytuacja komplikuje się jeszcze bardziej, jeśli połączenie z GitHub jest wolniejsze niż zwykle – czasami GitHub może działać wolniej z powodu dużego obciążenia serwera, problemów z siecią, czy innych czynników. Problem pojawia się ponieważ faza init
musi zakończyć się w ciągu 10 minut. Jeżeli to się nie stanie, proces ulega awarii i pojawia się wspomniany błąd.
Rozwiązanie: Użycie parametru -depth
Aby rozwiązać ten problem, zamiast pobierać pełną historię zmian repozytorium, można ograniczyć ilość pobieranych commitów za pomocą parametru -depth
Git – git-clone Documentation (git-scm.com). Użycie tej opcji pozwala na kontrolowanie, ile warstw historii git pobieramy – w praktyce można ograniczyć się do ostatnich kilku commitów, co znacznie przyspiesza proces.
W moim przypadku, dodanie parametru -depth=100
do komendy rozwiązało problem. Pozwoliło to na pobranie jedynie ostatnich 100 commitów, co wystarczyło do kontynuowania pracy z Terraformem bez błędów. Przykład użycia wygląda następująco:
module "module01" {
source = "git::https://github.com/example/terraform-aws.git//modules/big?ref=v7.0.345&depth=100"
}
Jak działa -depth
?
Opcja -depth
w git ogranicza liczbę commitów pobieranych podczas klonowania repozytorium. Zamiast pobierać pełną historię od momentu utworzenia repozytorium, można skupić się na bardziej aktualnych zmianach. To sprawdza się szczególnie w sytuacjach, gdy interesują nas najnowsze zmiany, a nie pełna historia repozytorium. Bardziej dociekliwi znajdą więcej informacji w dokumentacji git.
Korzyści z użycia -depth
:
- Skrócenie czasu pobierania – ograniczenie liczby commitów znacznie przyspiesza proces inicjalizacji.
- Mniejsza ilość danych – pobierane jest mniej danych, co odciąża zarówno twoje połączenie, jak i serwery GitHub.
- Eliminacja błędów związanych z czasem trwania inicjalizacji – ponieważ proces jest szybszy, ryzyko przekroczenia 10-minutowego limitu w Terraformie maleje.
Podsumowanie
Jeśli podczas pracy z Terraformem napotykasz na problemy z inicjalizacją, zwłaszcza przy dużych repozytoriach i wolnym połączeniu z GitHub, użycie parametru -depth
może okazać się szybkim i skutecznym rozwiązaniem. Ograniczenie liczby pobieranych commitów pozwoli na sprawniejsze działanie narzędzia, a ty unikniesz frustrujących błędów i przestojów w pracy.