Blog de Amazon Web Services (AWS)
Cómo automatizar la instalación de agentes en instancias EC2 basadas en Windows en AWS
Bruno Lopes, Sr. Solutions Architect Specialist, Microsoft Workloads en AWS
Automatizar los procesos repetitivos y rutinarios ya no es un lujo, sino una necesidad básica para cualquier equipo de administradores de sistemas. No solo por la practicidad que traen las acciones automatizadas, sino también para evitar fallas humanas, aumentar la estandarización e incluso, mejorar la postura de gobierno de TI en las organizaciones.
Estas ventajas de la automatización también son aplicables en la nube. En esta, existen varias opciones para optimizar la manera en la que se automatizan los procesos. Sin embargo, con tantas opciones disponibles, puede resultar complicado decidir cuál se adapta mejor a sus necesidades y entorno.
A continuación, podemos ver algunas de las principales opciones que AWS ofrece a sus clientes y una breve comparación:
| Servicio de AWS | Nivel de esfuerzo de uso | Ventajas | Observaciones |
| Datos de usuario (User Data) de EC2 | ⭐⭐⭐ | Nativo en el uso de instancias de EC2, a través de cloud-init. | Descentralizado, es dificil encontrar los errores y acceder a los registros. |
| AWS Systems Manager Distributor* | ⭐⭐ | Preconfigurado, a través del agente previamente instalado en las AMI de AWS. | Requiere la configuración de un rol de IAM para la instancia y las políticas de IAM para el rol. |
|
AWS CodeDeploy
|
⭐⭐⭐⭐ | Admite varios servicios y se puede integrar en el ciclo de vida de auto escalamiento de EC2. | Requiere la instalación del agente y la configuración del rol de IAM. |
|
AWS CloudFormation |
⭐⭐⭐⭐⭐ | Ideal para usar cuando se aprovisiona Infraestructura como código (IaC). | Se requiere un gran esfuerzo para lograr un escenario similar al conseguible con UserData |
| AWS OpsWorks | ⭐⭐⭐⭐⭐ | Ideal para entornos con alta complejidad de automatización y tareas de administración. Funciona con instancias de Puppet y Chef. | Para aquellos que no tienen experiencia con Ruby y el lenguaje de Chef, la curva de aprendizaje es alta. |
* Para paquetes con archivos adjuntos superiores a 1 GB y un tamaño total superior a 20 GB, se recomienda utilizar Run Command en AWS Systems Manager.
El escenario descrito aquí pretende automatizar el proceso de instalación de cualquier tipo de agentes para entornos con servidores Windows, teniendo en cuenta que el conjunto de servidores puede estar en proceso de aprovisionamiento o migración, o ya estar en un entorno productivo en AWS. Teniendo en cuenta que los agentes son recursos necesarios para la comunicación entre el cliente y el servidor en varios tipos de escenarios, como monitoreo, respaldo, seguridad, migración y muchos otros.
Descripción de la solución

De acuerdo al resultado propuesto, nos centraremos en dos soluciones: una de ellas usando EC2 UserData y la otra con el AWS Systems Manager (SSM) Distributor, ya que son las opciones que descritas en la tabla anterior como aquellas que requieren un menor esfuerzo. Estas dos opciones también cubren diferentes necesidades de los entornos, tanto en la automatización de tareas como parte del aprovisionamiento o la migración de nuevos servidores, como en la administración de los entornos existentes.
Distributor, una función de AWS Systems Manager, le ayuda a empaquetar y publicar software hacia las instancias administradas por AWS Systems Manager. Usted puede empaquetar y publicar su propio software, o utilizar el Distributor para buscar e instalar paquetes de software proporcionados por AWS, como AmazonCloudWatchAgent, o paquetes de terceros, como Trend Micro.
Al final de esta publicación, instalaremos el agente de Amazon CloudWatch, que incluso se puede usar para monitorear servidores externos a AWS, como servidores locales o alojados en otros proveedores de servicios en la nube como Azure o Google Cloud. La instalación del agente de CloudWatch amplía la capacidad de monitoreo estándar de instancias de EC2, agregando otras métricas e incluso permitiendo personalizaciones de metricas y logs de aplicaciones.
Pasos para la configuración
Para estos pasos, se requerirán algunas configuraciones previas, por ejemplo en AWS IAM, para crear las funciones y políticas específicas que se utilizarán para proporcionar los permisos necesarios correctamente.
Es importante reforzar que el enfoque siempre es actuar sobre el prencipio del Mínimo Privilegio, con el fin de mejorar la postura de seguridad dentro de cualquier arquitectura de cómputo. Para estos ejemplos, utilizamos políticas administradas de AWS, políticas IAM ya creadas y configuradas por AWS. También puede trabajar con políticas administradas por el cliente, donde la personalización de permisos puede proporcionarle un escenario aún más eficaz, con las Conditions y la granularidad que se ajustan a sus reglas de gobierno.
EC2 User Data
Cuando usted lanza una instancia de Windows en Amazon EC2, puede pasar Datos de usuario (User Data) a la instancia, ésta ultilizará esta información para realizar tareas de configuración automatizadas o ejecutar scripts después de que se inicie. La información de Datos de Usuario de la instancia se trata como datos encapsulados, es decir, depende de la instancia interpretarla. La información de los datos de usuario es procesada por EC2Launch v2 (AMI compatibles o si se ha instalado), por EC2Launch en Windows Server 2016 y posteriores, o por EC2Config en Windows Server 2012 R2 y versiones anteriores.
Para que EC2Config o EC2Launch ejecute scripts, tendrá que añadir un tag especial al script cuando añada Datos de usuario. De la tag utilizada depende si los comandos se ejecutan en una ventana del símbolo del sistema (script de batch) o usando mediante Windows PowerShell.
| Nota: Si especifica un script de batch y un script de Windows PowerShell, el script de batch se ejecuta primero y el script de Windows PowerShell se ejecuta a continuación, independientemente del orden en que aparezcan en los Datos de usuario de la instancia. |
De forma predeterminada, los scripts de Datos de Usuario se ejecutan una única vez al inicializar la instancia. Para ejecutar scripts de Datos de Usuario cada vez que se reinicie o arranque la instancia, agrega <persist>true</persist> a los datos del usuario.
A continuación se muestra un ejemplo de un script que utiliza el tag <powershell> para automatizar la instalación del agente de Amazon CloudWatch.












Bruno Lopes es arquitecto de soluciones sénior en el equipo de AWS LATAM. Lleva más de 14 años trabajando con soluciones de TI, teniendo en su cartera numerosas experiencias en cargas de trabajo de Microsoft, entornos híbridos y capacitación técnica de clientes como Technical Trainer y Evangelista. Ahora actúa como arquitecto de soluciones, combinando todas las capacidades para reducir la burocracia en la adopción de las mejores tecnologías con el fin de ayudar a los clientes en sus desafíos diarios
Gaston Lyons es arquitecto de soluciones en el equipo de Colombia. Ha estado en el mercado de técnologia durante los ultimos 12 años, trabajando con cargas de trabajo Microsoft y migraciones de infraestrucutura hacia la nube. Actualmente, ayuda a clientes en adoptar servicios de AWS en su infraestructura.