Jeśli używasz chmury AWS, to na pewno ucieszy cię wiadomość, że możesz tam automatycznie wykonywać komendy na maszynach EC2 bez logowania się do nich. Jeśli nie używasz jeszcze narzędzi do automatyzacji takich jak np. Ansible albo Cheff, to żaden problem. Za pomocą AWS System Manager możesz instalować usługi, wykonywać polecenia i automatyzować swoją pracę.
Uprawnienia dla AWS System Manager
Żeby automatycznie wykonywać komendy na swoich maszynach EC2 musisz dodać do nich odpowiednie uprawnienia. Opis jak dodać uprawnienia, które pozwolą, aby AWS Systems Manager mógł wykonywać polecenia, znajdziesz w tym artykule.
Wydawanie poleceń maszynom EC2
Gdy już przypiszesz odpowiednią rolę do swoich maszyn możesz przejść do wydawania poleceń 😉
Otwórz AWS System Manager i z menu po lewej wybierz “Run Command”.
1) Command document
Teraz możesz kliknąć Run Command, a z listy komend wybrać “AWS-RunShellScript”.
2) Command parameters
Poniżej znajdziesz 2 przykłady, które powinny ułatwić Ci zrozumienie tego, co się dzieje.
Przykład 1 – CentOS
W tym przykładzie zostanie dodana uruchomiona komenda, która wykona aktualizację systemu CentOS i zainstaluje Apache web server.
Dla ułatwienia wklejam kod, żebyś nie musiał przepisywać 😉
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
Przykład 2 – Ubuntu
W drugim przykładzie na maszynie Ubuntu zostanie automatycznie zainstalowany agent CloudWatch i utworzony jego config. Na koniec Agent zostanie uruchomiony i będzie mógł zacząć wysyłać metryki do CloudWatch. Jeśli interesuje Cię ten temat, to dokładnie go opisałem w innym artykule. Jak monitorować użycie pamięci RAM na AWS EC2.
Dla ułatwienia wklejam kod, żebyś nie musiał przepisywać 😉
sudo wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
sudo cat <<'EOF' > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
"metrics":{
"metrics_collected":{
"mem":{
"measurement":[
"mem_used_percent"
],
"metrics_collection_interval":320
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
EOF
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
3) Targets
Teraz wybierasz maszyny EC2, na których chcesz uruchomić polecenia. Możesz wybrać je po TAGu. Ja jednak na pierwsze uruchomienie zalecam, żeby wybrać je ręcznie i sprawdzić, czy wszystko uruchamia się poprawnie.
4) Other parameters
Jeśli potrzebujesz, możesz tu dodać dodatkowe parametry. Przy prostych poleceniach zazwyczaj nie ma takiej potrzeby.
5) Rate control
Możesz tu określić na ilu maszynach jednocześnie mają być wykonane polecenia. Dodatkowo można zlecić przerwanie wykonywania poleceń przy określonej liczbie błędów. Zazwyczaj nie trzeba tu nic zmieniać.
6) Output options
Jeśli chcemy, to możemy wynik zapisać do S3. Jeśli nie, to odznaczamy “Enable an S3 bucket”
7) SNS notifications
W tym miejscu możesz włączyć otrzymywanie powiadomień za pomocą SNS. Nie trzeba tu nic zmieniać, jeśli nie chcesz ich otrzymywać.
8) AWS command line interface command
Tutaj znajdziesz polecenie, które możesz skopiować i wykonać za pomocą CLI. Zawiera ono wszystko to, co do tej pory ustawiłeś zapisane tak, żeby można uruchomić to w CLI.
Teraz przeszedłeś przez wszystkie ustawienia “Run a command” w AWS. Gdy klikniesz RUN, to na maszynach EC2, które wybrałeś, wykonają się polecenia z sekcji Command parameters.
Ponowne uruchamianie poleceń na maszynach EC2
Jeśli chcesz jeszcze raz uruchomić tą samą komendę, a nie chcesz wpisywać wszystkiego od początku, to przejdź do “Command history”. Znajdziesz tam komendy, które uruchamiałeś. Zaznacz tą, którą potrzebujesz i kliknij “Copy to new”.
Podsumowanie
Podsumowując, jeśli nie automatyzujesz jeszcze swojej pracy, to za pomocą AWS System Manager możesz to nadrobić. AWS System Manager pozwoli na automatyczne wykonywanie poleceń i instalację usług na maszynach EC2. Dzięki automatyzacji możesz zaoszczędzić sobie dużo powtarzalnej pracy i czasu potrzebnego na jej ręczne wykonanie.
Pod tym linkiem znajdziesz dokumentację AWS dotycząca system managera.