Inicio » Amazon AWS » Mantenimiento automático de servidores con AWS Systems manager

Mantenimiento automático de servidores con AWS Systems manager

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

AWS Systems Manager es una herramienta que se utiliza para ejecutar tareas de mantenimiento en los servidores de manera automática. Por ejemplo, podemos parchear todos nuestros servidores al mismo tiempo, o realizar un snapshot, o ejecutar un comando shell script, etc.

Lo primero de todo es instalar el agente Systems Manager. En mi caso, lo voy a hacer en un servidor Centos 7 y la guía de instalación es muy sencilla.

Instalación del agente Systems Manager

En el caso del servidor CentOS 7, utilizaremos el comando yum para instalar Systems Manager, tal y como podemos ver a continuación:

[[email protected] ~]
# mkdir /tmp/ssm
[[email protected] ~]# cd /tmp/ssm
[[email protected] ssm]# yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Loaded plugins: fastestmirror
amazon-ssm-agent.rpm | 12 MB 00:00:01
Examining /var/tmp/yum-root-tSOyn6/amazon-ssm-agent.rpm: amazon-ssm-agent-2.3.13.0-1.x86_64
Marking /var/tmp/yum-root-tSOyn6/amazon-ssm-agent.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package amazon-ssm-agent.x86_64 0:2.3.13.0-1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================
Package Arch Version Repository Size
Installing:
amazon-ssm-agent x86_64 2.3.13.0-1 /amazon-ssm-agent 40 M
Transaction Summary
Install 1 Package

Installed size: 40 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : amazon-ssm-agent-2.3.13.0-1.x86_64 1/1
Created symlink from /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service to /etc/systemd/system/amazon-ssm-agent.service.
Verifying : amazon-ssm-agent-2.3.13.0-1.x86_64 1/1
Total size: 40 M
Installed:
amazon-ssm-agent.x86_64 0:2.3.13.0-1
Complete!
[[email protected] ssm]# systemctl enable amazon-ssm-agent
[[email protected] ssm]# systemctl start amazon-ssm-agent
[[email protected] ssm]# systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2018-09-10 16:35:44 CEST; 32s ago
Main PID: 6185 (amazon-ssm-agen)
CGroup: /system.slice/amazon-ssm-agent.service
└─6185 /usr/bin/amazon-ssm-agent
Sep 10 16:35:46 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [OfflineService] Starting message polling
Sep 10 16:35:46 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [OfflineService] Starting send replies to MDS
Sep 10 16:35:46 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [LongRunningPluginsManager] starting long running plugin manager
Sep 10 16:35:46 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [LongRunningPluginsManager] there aren't any long running plugin to execute
Sep 10 16:35:46 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [LongRunningPluginsManager] There are no long running plugins current...lthcheck
Sep 10 16:35:47 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [StartupProcessor] Executing startup processor tasks
Sep 10 16:35:47 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [StartupProcessor] Write to serial port: Amazon SSM Agent v2.3.13.0 is running
Sep 10 16:35:47 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [StartupProcessor] Write to serial port: OsProductName: CentOS Linux
Sep 10 16:35:47 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:35:45 INFO [StartupProcessor] Write to serial port: OsVersion: 7
Sep 10 16:36:06 prt53ws1 amazon-ssm-agent[6185]: 2018-09-10 16:36:06 INFO [MessagingDeliveryService] [Association] No associations on boot. Req...seconds.
Hint: Some lines were ellipsized, use -l to show in full.
[[email protected] ssm]#

Ejecución de un comando en remoto con Systems Manager

Una vez que hemos instalado el agente, vamos a ejecutar un comando en remoto en uno de nuestros servidores a modo de prueba para entender su funcionamiento.

Samsung LF27T352FHRXEN - Monitor Plano de 27", Full HD (1080p, Panel IPS), Freesync, HDMI,...
  • Monitor 27 pulgadas con panel IPS y ángulo de visión de 178º para una calidad de visionado superior e imágenes cristalinas
  • Pantalla sin marcos en tres bordes, que facilita el montaje de varios monitores
  • AMD Freesync y Game mode, experiencia gaming inmersiva

En primer lugar, vamos a la consola EC2 y al menú «Run Command» de la sección Systems Manager.

Samsung LF27T352FHRXEN - Monitor Plano de 27", Full HD (1080p, Panel IPS), Freesync, HDMI,...
  • Monitor 27 pulgadas con panel IPS y ángulo de visión de 178º para una calidad de visionado superior e imágenes cristalinas
  • Pantalla sin marcos en tres bordes, que facilita el montaje de varios monitores
  • AMD Freesync y Game mode, experiencia gaming inmersiva

Definimos los detalles del comando que queremos ejecutar.

Lo ejecutamos y vemos su resultado:

Como soy un tío muy responsable, en este caso no tenía ningún paquete a actualizar.

Ahora ya nos hemos hecho una idea de cómo funciona Systems Manager pero la idea de esto es poder realizar el mantenimiento automático de cientos de servidores e ir programando tareas, por ejemplo, para los servidores de desarrollo y luego para los de producción.

Enviar un comando a un servidor remoto mediante AWS Systems Manager

[[email protected] ~]# aws ssm send-command –document-name «AWS-RunShellScript» –parameters commands=[«ls -la > /tmp/ls.txt«] –targets «Key=instanceids,Values=i-0093481eeaab71526»
{
«Command»: {
«Comment»: «»,
«Status»: «Pending»,
«MaxErrors»: «0»,
«Parameters»: {
«commands»: [
«ls -la > /tmp/ls.txt»
]
},
«ExpiresAfter»: 1536851337.126,
«ServiceRole»: «»,
«DocumentName»: «AWS-RunShellScript»,
«TargetCount»: 0,
«OutputS3BucketName»: «»,
«NotificationConfig»: {
«NotificationArn»: «»,
«NotificationEvents»: [],
«NotificationType»: «»
},
«CompletedCount»: 0,
«Targets»: [
{
«Values»: [
«i-0093481eeaab71526»
],
«Key»: «instanceids»
}
],
«StatusDetails»: «Pending»,
«ErrorCount»: 0,
«OutputS3KeyPrefix»: «»,
«RequestedDateTime»: 1536844137.126,
«CommandId»: «cc0faa41-bbb8-4ad2-9dfd-055f7bac9f63»,
«InstanceIds»: [],
«MaxConcurrency»: «50»
}
}
[[email protected] ~]#

Si nos conectamos al servidor remoto, veremos que ha ejecutado el comando:

[[email protected] ~]# head /tmp/ls.txt
total 229424
dr-xr-xr-x. 2 root root 28672 Sep 11 17:21 .
drwxr-xr-x. 13 root root 155 May 14 16:08 ..
-rwxr-xr-x 1 root root 41480 Apr 11 06:35 [
-rwxr-xr-x 1 root root 107856 Aug 2 2017 a2p
-rwxr-xr-x 1 root root 52720 Jun 27 15:49 ab
-rwxr-xr-x 2 root root 36734 Jun 10 2014 aclocal
-rwxr-xr-x 2 root root 36734 Jun 10 2014 aclocal-1.13
-rwxr-xr-x 1 root root 29200 Jun 27 15:26 addr2line
-rwxr-xr-x 1 root root 29 Apr 11 02:53 alias
[[email protected] ~]#

Te puede interesar

Tutorial de shell script en Linux

About Author

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Contenido Relacionado

Artículos Recientes

Deja un comentario