Przejdź do treści

Błąd w terraform: failed running terraform init

terraform init error

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

git 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *