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 planPrzepł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-colorRę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-approveBezpieczne 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."
fiKontrolowane 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-approveNajlepsze 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 planw 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 applyiterraform 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
- IaC z Terraform i GitHub Actions
- Zarządzanie zasobami chmurowymi
- Automatyzacja aktualizacji infrastruktury
- Zarządzanie stanem Terraform i zdalnymi backendami