Integracja IaC z pipeline'ami CI/CD

Automatyzacja wdrożeń na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Najpierw kod, infrastruktura później

kod najpierw

  • Kod wdraża się przez CodePipeline; infrastrukturę aktualizuje się ręcznie
  • Deweloperzy skalują Lambdę; zespół ops zmienia rozmiar kolejki SQS
  • Rozjazd między kodem a infrastrukturą powoduje awarie
  • Podłącz CloudFormation do tego samego pipeline'u
Automatyzacja wdrożeń na AWS

CloudFormation jako akcja w pipeline

akcja w pipeline

  • CodePipeline obsługuje akcję wdrożenia CloudFormation
  • Pipeline przekazuje do akcji artefakt szablonu
  • Tryby: CREATE_UPDATE, DELETE_ONLY, REPLACE_ON_FAILURE, CHANGE_SET_REPLACE / EXECUTE
  • Działa równolegle z akcjami source, build i app-deploy
Automatyzacja wdrożeń na AWS

Typowy pipeline od początku do końca

typowy

  • Source: push do Gita uruchamia pipeline
  • Build: tworzy szablon i artefakt aplikacji
  • Deploy infra: CloudFormation tworzy lub aktualizuje stos
  • Deploy app: CodeDeploy wdraża nową wersję
Automatyzacja wdrożeń na AWS

Automatyczny rollback po błędzie stosu

  • Nieudane aktualizacje automatycznie wracają do ostatniego stabilnego stanu
  • Etap pipeline'u kończy się błędem, zatrzymując kolejne etapy
  • Mechanizm alertów o błędach z rozdziału 1 uruchamia się automatycznie

automatyczny

Automatyzacja wdrożeń na AWS

Zagnieżdżone stosy dla modułowych szablonów

  • Zagnieżdżony stos deklarujemy jako typ AWS::CloudFormation::Stack
  • Podziel szablon liczący 2000 linii na moduły do ponownego użycia
  • Stos nadrzędny przekazuje parametry i odczytuje wyniki
  • Każdy moduł wdraża się niezależnie w ramach stosu nadrzędnego

zagnieżdżony

Automatyzacja wdrożeń na AWS

StackSets dla wielu kont i regionów

  • StackSet wdraża jeden szablon w wielu kontach i regionach
  • Przydatny dla standardów bezpieczeństwa, zabezpieczeń i wspólnej infrastruktury
  • Dodawaj lub usuwaj instancje stosu bez zmiany szablonu
  • Zarządzanie centralne, wdrażanie lokalne

stackset

Automatyzacja wdrożeń na AWS

Jak wybrać właściwą formę?

właściwa forma

  • Single stack: mała aplikacja, jedno środowisko
  • Nested stacks: duży szablon, modułowe komponenty
  • StackSets: ten sam szablon, wiele kont i regionów
  • Wszystkie trzy dobrze współpracują z CodePipeline
Automatyzacja wdrożeń na AWS

Czas na praktykę!

Automatyzacja wdrożeń na AWS

Preparing Video For Download...