Przejdź do treści

Co to State Manager i jak bardzo go potrzebujesz w AWS?

How to keep configuration constant on AWS EC2 - State Manager

Jeśli używasz AWS, a jeszcze nie wiesz, co to State Manager, to zachęcam do zapoznania się z artykułem. Jeśli kiedykolwiek zadawałeś sobie jedno z poniższych pytań i jeszcze nie znalazłeś na nie odpowiedzi, to ten artykuł jest zdecydowanie dla Ciebie:)

  • Co zrobić, gdy użytkownicy muszą mieć dostęp do maszyny EC2, ale lubią zmieniać na niej ustawienia?
  • Jak utrzymać niezmienną konfigurację na EC2?
  • Jak dbać o to by określone usługi były cały czas włączone, a inne wyłączone?
  • Co zrobisz, jeśli użytkownik wyłączy ssh? Jak się wtedy zalogujesz do serwera?
  • Jak utrzymać taką samą wersję usług na wszystkich maszynach?
  • Jak mieć zawsze aktualną wersję usług?

AWS posiada bardzo fajne, jak by to nazwać centrum operacyjne dla platformy nazwane AWS Systems Manager. Pozwala ono na wiele rzeczy np. na automatyzację zadań, aktualizację usług, wymuszanie stosowania odpowiednich polityk oraz o wiele więcej. Ogólnie bardzo rozbudowane i obszerne centrum operacyjne, które pozwala wiele rzeczy automatyzować.

Pisałem już trochę na jego temat w poniższych artykułach:

To jest mój pierwszy artykuł w 2022 roku i mam nadzieję, że pomoże Ci dobrze rozpocząć rok z chmurą AWS.

AWS State Manager

Dzisiaj chciałem zająć się kolejną częścią AWS System Manager i przybliżyć Ci usługę State Manager. Usługa pozwala na utrzymanie odpowiedniego stanu EC2. Pozwala także na cykliczne uruchamianie skryptów albo maszyn.

aws state manager 2022 cloud

Automatyczna aktualizacja Agenta SSM

Dla łatwiejszego zrozumienia tematu pokażę na praktycznym przykładzie, krok po kroku, jak za pomocą AWS State Manager wykonać automatyczną aktualizację Systems Manager Service Agenta na maszynach EC2.

  • Wystarczy przejść do AWS Systems Manager i z menu po lewej z sekcji Node Management wybrać ‘State Manager‘.
  • Teraz kliknij na ‘Create association‘.
  • Nie jest to wymagane, ale dobrze jest nadać nazwę np. “SSMAgent-Update”.
  • Teraz należy wybrać typ dokumentu – ‘AWS-UpdateSSMAgent‘.
  • Sekcje Parameters możesz zostawić bez zmian.
  • W sekcji Targets określasz, na których maszynach chcesz uruchomić automatyczną aktualizację Agenta SSM. Ja zaznaczyłem “Choose all instances” ponieważ chcę to powiązać ze swoimi wszystkimi instancjami.
  • Teraz ustalasz harmonogram. Ja wybrałem interwał 14 dni. Co 2 tygodnie będzie sprawdzana wersja SSM Agenta i w razie potrzeby aktualizowana.
  • Do aktualizacji Agenta nie są potrzebne żadne zaawansowane opcje, więc zostawiam tą sekcję bez zmian.
  • Rate Control też zostawiam bez zmian. Zadanie może być wykonywane na 50 maszynach naraz i w przypadku wystąpienia błędów na więcej niż 10% instancji zostanie przerwane.
  • Nie potrzebuję informacji na temat wykonania tego zadania więc nie będę zapisywał logów do S3.
  • Wystarczy kliknąć Save Changes i automatyzacja dotycząca aktualizacji Agenta SSM zostanie zapisana, a proces zaplanowany według ustalonego harmonogramu.
state manager ssm agent update

Automatyczny start EC2

Na maszynie EC2 można ustawić w crontabie, żeby się automatycznie zrestartowała, albo wyłączyła. Zaplanowanie startu o określonej godzinie nie będzie takie proste. Na szczęście, dzięki funkcji State Manager bez problemu możesz zaplanować start dowolnej maszyny o określonej godzinie.

  • Przejdź do AWS Systems Manager i z menu po lewej z sekcji Node Management wybierz State Manager.
  • Teraz kliknij na Create association.
  • Nie jest to wymagane, ale dobrze jest nadać nazwę np. “Start-EC2-test”.
  • Teraz wybierz typ dokumentu – AWS-StartEC2Instance.
  • Execution zostaw na ‘Simple execution’, uprości to konfigurację.
  • W sekcji ‘Input parameters’ możesz zaznaczyć ‘Show interactive instance picker’ i wybrać z listy maszyny, te które chcesz uruchamiać automatycznie. Następnie wybierz rolę pozwalającą na uruchamianie EC2. Najlepiej jeśli stworzysz do tego dedykowaną rolę. O tworzeniu ról pisałem już w innych artykułach np. Jak automatycznie uruchomić EC2 w chmurze AWS?, więc nie będe się powtarzał.
  • W sekcji ‘Specify schedule‘ ustalasz harmonogram. Ponieważ ja chcę żeby maszyny uruchamiały się codziennie o 8:00 dlatego wybrałem opcję ‘Every Day at 08:00’.
  • To już wszystko, wystarczy kliknąć Save Changes
state manager start ec2 config 2022
state manager start ec2 targets 2022

Jeśji chcesz, by wszystkie EC2 o określonym tagu się uruchamiały w wybranym czasie, to w sekcji Execution wybierz ‘Rate control’ zamiast ‘Simple execution’.

Podsumowanie

Zamiast aktualizować agenta SSM, albo uruchamiać EC2 możesz np uruchamiać codziennie rano skrypt, który będzie przywracał ustawienia. Jest to dobre na wypadek, gdyby ktoś je zmieniał w ciągu dnia a Ty, chaiałbyś zachować odpowiednią konfigurację. Uruchamianie skryptu jest chyba jedną z najczęściej wybieranych opcji. Za jej pomocą możesz w prosty sposób wykonać to, co tylko Ci przyjdzie do głowy na wybranych maszynach i w określonym czasie a dodatkowo wszystkim zarządzać z jednego miejsca.

Tutaj znajdziesz dokumentację na temat AWS System Manager.

Jeśli planujesz automatyzację za pomocą chmury AWS, to dobrze jest znać AWS Systems Manager i jego komponenty takie jak np State Manager.