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:
- Jak automatycznie uruchomić EC2 w chmurze AWS?
- Jak w AWS automatycznie wykonać polecenie na EC2
- Session Manager w AWS
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.
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.
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
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.