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:
[root@prt53ws1 ~]
# mkdir /tmp/ssm
[root@prt53ws1 ~]# cd /tmp/ssm
[root@prt53ws1 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!
[root@prt53ws1 ssm]# systemctl enable amazon-ssm-agent
[root@prt53ws1 ssm]# systemctl start amazon-ssm-agent
[root@prt53ws1 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.
[root@prt53ws1 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.
En primer lugar, vamos a la consola EC2 y al menú «Run Command» de la sección Systems Manager.

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
[root@ip-10-0-4-252 ~]# 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»
}
}
[root@ip-10-0-4-252 ~]#
Si nos conectamos al servidor remoto, veremos que ha ejecutado el comando:
[root@prt53ws1 ~]# 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
[root@prt53ws1 ~]#
Te puede interesar
Tutorial de shell script en Linux