0Pricing
DevOps Bootcamp · Lekcja

Automatyzacja aktualizacji infrastruktury

Zaimplementują Państwo workflows do bezpiecznego planowania, wdrażania i usuwania zmian infrastruktury z etapami przeglądu i zatwierdzania.

Automatyzacja aktualizacji infrastruktury to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Dlaczego automatyzować aktualizacje IaC?

Ręczne zarządzanie infrastrukturą może być powolne i podatne na błędy. Infrastructure as Code (IaC) pomaga, ponieważ pozwala definiować infrastrukturę w kodzie.

Automatyzowanie aktualizacji IaC za pomocą narzędzi takich jak GitHub Actions zapewnia spójność i szybkość oraz ogranicza liczbę błędów ludzkich. Dzięki temu infrastruktura zawsze odpowiada swojej definicji.

Cykl życia przepływu pracy IaC

Automatyzacja IaC przebiega według jasno określonego cyklu życia: planowanie, zastosowanie, a czasami także usunięcie. Każdy etap można zintegrować z potokiem CI/CD.

  • Planowanie: przegląd proponowanych zmian bez ich wprowadzania.
  • Zastosowanie: wdrożenie zaplanowanych zmian w infrastrukturze.
  • Usunięcie: usunięcie zasobów infrastruktury (należy korzystać z tej operacji z najwyższą ostrożnością!).

GitHub Actions pomaga bezpiecznie zarządzać tymi etapami.

Planowanie zmian za pomocą Terraform

Przed wprowadzeniem jakichkolwiek zmian trzeba dokładnie wiedzieć, co się wydarzy. Polecenie plan narzędzia Terraform pomaga wyświetlić podgląd modyfikacji infrastruktury.

Porównuje ono stan oczekiwany (zdefiniowany w kodzie) z bieżącym stanem infrastruktury i pokazuje, które zasoby zostaną dodane, zmienione lub usunięte.

Proszę uruchomić te polecenia w prostym projekcie Terraform:

echo "Initializing Terraform..."
terraform init

echo "Running terraform plan..."
terraform plan

Przepływ pracy dla `terraform plan`

Utwórzmy przepływ pracy GitHub Actions, który automatycznie uruchamia terraform plan po każdym wypchnięciu kodu do głównej gałęzi. Zapewnia to natychmiastową informację zwrotną o proponowanych zmianach.

Wynik planu można następnie przejrzeć bezpośrednio w żądaniu ściągnięcia lub w dziennikach przepływu pracy.

name: 'Terraform Plan'

on:
  pull_request:
    branches:
      - main

jobs:
  terraform:
    name: 'Terraform Plan'
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Plan
      id: plan
      run: terraform plan -no-color

Ręczne zatwierdzanie za pomocą środowisk

Automatyczne stosowanie zmian w infrastrukturze może być ryzykowne. Środowiska GitHub umożliwiają dodanie do przepływów pracy etapów ręcznego zatwierdzania.

Można definiować środowiska (np. "staging", "production") i ustawiać reguły, takie jak wymóg zatwierdzenia przez określonych recenzentów lub okres oczekiwania przed uruchomieniem zadania wdrożeniowego.

Zapewnia to kluczowy etap weryfikacji przez człowieka przed wykonaniem wrażliwych operacji.

Przepływ pracy stosowania zmian

Aby bezpiecznie zastosować zmiany, skonfigurujemy przepływ pracy korzystający z chronionego środowiska GitHub. Zadanie zostanie wstrzymane i będzie oczekiwać na zatwierdzenie wyznaczonych członków zespołu.

Dopiero po zatwierdzeniu zostanie wykonane polecenie terraform apply, aktualizując infrastrukturę.

name: 'Terraform Apply'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy to'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Apply'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Apply
      id: apply
      run: terraform apply -auto-approve

Bezpieczne usuwanie infrastruktury

Polecenie terraform destroy trwale usuwa wszystkie zasoby zdefiniowane w konfiguracji Terraform. Jest to bardzo zaawansowana i potencjalnie niebezpieczna operacja.

Należy go używać wyłącznie w określonych, kontrolowanych sytuacjach, takich jak usuwanie tymczasowego środowiska testowego. Przed kontynuowaniem zawsze należy dokładnie sprawdzić konfigurację!

Nie wolno automatyzować `destroy` bez rygorystycznych zabezpieczeń wymagających ręcznego zatwierdzenia i wielu potwierdzeń.

echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
  echo "Destroying infrastructure..."
  terraform destroy -auto-approve
else
  echo "Destroy operation cancelled."
fi

Kontrolowane niszczenie infrastruktury

Nawet w przypadku `destroy` można wykorzystać środowiska GitHub jako dodatkową warstwę ochrony. Dzięki temu nikt nie będzie mógł przypadkowo ani złośliwie usunąć zasobów produkcyjnych bez odpowiedniego upoważnienia.

Przepływ pracy powinien wymagać zatwierdzenia i być uruchamiany wyłącznie ręcznie, najlepiej przez osoby o określonych rolach.

name: 'Terraform Destroy'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to destroy'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Destroy'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Destroy
      id: destroy
      run: terraform destroy -auto-approve

Najlepsze praktyki automatyzacji IaC

Aby utrzymać solidny i bezpieczny potok IaC:

  • Przeglądy kodu: zawsze wymagaj przeglądu kodu w przypadku zmian IaC.
  • Minimalne uprawnienia: przyznawaj tokenom przepływów pracy i kontom usługowym wyłącznie minimalny zakres niezbędnych uprawnień.
  • Blokowanie stanu: upewnij się, że narzędzie IaC (takie jak Terraform) korzysta z blokowania stanu, aby zapobiegać równoczesnym modyfikacjom.
  • Małe, przyrostowe zmiany: unikaj dużych, monolitycznych aktualizacji infrastruktury.
  • Oddzielne środowiska: używaj osobnych środowisk (dev, staging, prod) z różnymi regułami zatwierdzania.

Sprawdzian z przepływu pracy IaC

Dowiedział(a) się Pan/Pani, jak automatyzować aktualizacje IaC przez planowanie, stosowanie i usuwanie zasobów. Teraz sprawdźmy, czy rozumie Pan/Pani, jak zabezpieczać te procesy.

Podsumowanie: automatyczne aktualizacje IaC

W tej lekcji dowiedział(a) się Pan/Pani, jak automatyzować przepływy pracy Infrastructure as Code za pomocą GitHub Actions. Omówiliśmy:

  • uruchamianie terraform plan w celu bezpiecznego podglądu zmian;
  • korzystanie ze środowisk GitHub, aby dodawać ręczne etapy zatwierdzania przed zastosowaniem lub usunięciem infrastruktury;
  • wdrażanie przepływów pracy do kontrolowanego wykonywania operacji terraform apply i terraform destroy;
  • najważniejsze najlepsze praktyki zapewniające bezpieczną i niezawodną automatyzację IaC.

Automatyzacja IaC pomaga sprawnie i pewnie zarządzać zasobami chmurowymi!

Często zadawane pytania

Czy lekcja „Automatyzacja aktualizacji infrastruktury” jest bezpłatna?

Tak — pełny tekst „Automatyzacja aktualizacji infrastruktury” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Automatyzacja aktualizacji infrastruktury”?

Zaimplementują Państwo workflows do bezpiecznego planowania, wdrażania i usuwania zmian infrastruktury z etapami przeglądu i zatwierdzania. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Automatyzacja aktualizacji infrastruktury”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. IaC z Terraform i GitHub Actions
  2. Zarządzanie zasobami chmurowymi
  3. Automatyzacja aktualizacji infrastruktury
  4. Zarządzanie stanem Terraform i zdalnymi backendami
← Powrót do DevOps Bootcamp