DEV Community

Guillermo Ruiz for AWS Español

Posted on • Originally published at iaasgeek.com on

Simulando ECS Anywhere con CHATGPT

AWS ECS Anywhere es un servicio que permite ejecutar contenedores de Amazon ECS en cualquier infraestructura, ya sea en la nube, on-prem o en el edge. Ofrece una forma unificada de gestionar y orquestar contenedores, independientemente de dónde se encuentren. Ideal para arquitecturas híbridas.

A lo largo de esta entrada, simularemos una terminal de Linux para que puedas ver cómo se instala ECS Anywhere utilizando ChatGPT. La IA simplemente seguirá nuestras instrucciones y mostrará la salida que el terminal generaría (o al menos es lo que esperamos) ¡Empecemos!

DISCLAIMER: Es importante señalar que aunque en el blog podamos mostrar comandos, scripts, u otros ejemplos de código como parte de las demostraciones o discusiones, estos se ofrecen únicamente con fines educativos y de entretenimiento. No recomendamos utilizar la salida de los comandos generados por ChatGPT. El uso de código no verificado está lejos de seguir las mejores prácticas en la implementación y gestión de sistemas en cualquier otro entorno tecnológico. El autor del blog no se hacen responsables de cualquier daño o pérdida resultante del uso de información o código presentado.

Paso 1. Convertimos ChatGPT en un Terminal de Linux

Partimos de la siguiente orden:

“Quiero que actúes como una terminal de Linux. Yo escribiré comandos y tú responderás con lo que debería mostrar la terminal. Quiero que solo respondas con la salida de la terminal dentro de un único bloque de código, y nada más. No escribas explicaciones. No escribas comandos a menos que te instruya hacerlo. Cuando necesite decirte algo, lo haré colocando texto dentro de corchetes {como este}. Mi primer comando es pwd.”

/home/username
Enter fullscreen mode Exit fullscreen mode

Nota: ChatGPT puede simular un terminal de ordenador e interpretar y responder a comandos de texto de manera que imite la interacción con un sistema operativo, pero NO tiene la capacidad de ejecutar código real.

Paso 2. Instalamos AWS CLI

Descargamos e instalamos AWS CLI usando curl y unzip.

Verificamos que se ha instalado correctamente:

Paso 3. Configuramos Nuestras Credenciales AWS

Ejecutamos aws configure para configurar AWS CLI y añadimos credenciales:

Paso 4. Creamos el Rol de IAM

Creamos un rol IAM llamado ecsiaasgeek y le adjuntamos políticas de permisos que permiten el acceso a los recursos de ECS, S3 y otros servicios necesarios para las operaciones del clúster.

Paso 5. Creamos cluster ECS

Creamos un clúster ECS llamado iaasgeek-ecs-anywhere ** ** y una nueva activación en AWS Systems Manager utilizando el rol IAM ecsiaasgeek . Guardamos la información de la activación – almacenamos el código y ID de activación – en un archivo JSON llamado ssm-activation.json ** ** (nos hará falta posteriormente).

Paso 6. Instalamos ECS Anywhere

Descargamos y ejecutamos el script de instalación de ECS Anywhere en nuestro Linux donde ejecutaremos las cargas de trabajo de ECS. Registramos la instancia con SSM y el clúster ECS.

Si profundizamos en los comandos utilizados, tenemos:

  1. Se establece las variables de entorno ACTIVATION_ID y ACTIVATION_CODE con valores aleatorios (ChatGPT no genera los IDs).
  2. Descargamos el script de instalación ecs-anywhere-install.shdesde un bucket S3 de AWS y le damos permisos de ejecución.
  3. (Opcional) Verificamos la integridad del script descargado usando su valor hash SHA-256.
  4. Ejecutamos el script de instalación, especificando el clúster de ECS iaasgeek-ecs-anywhere el ID de activación, el código de activación (almancenados previamente en el fichero ssm-activation.json) y la región de AWS (us-east-1).

Paso 8. Verificamos Registro de la Instancia

Verificamos que la instancia se registró exitosamente con SSM y mostraremos una lista de las instancias de contenedor que aparece como ID único, lo que nos permitirán saber qué recursos están actualmente disponibles o en uso dentro de nuestro clúster de ECS.

Paso 9. Crear Definición de Tarea

Creamos un archivo JSON external-task-definition.json para la definición de la tarea de ECS. Esta tarea ejecuta un contenedor Nginx y expone el puerto 80 del contenedor al puerto 8080 del host.

sudo nano external-task-definition.json
{
  "requiresCompatibilities": [
    "EXTERNAL"
  ],
  "containerDefinitions": [
    {
      "name": "nginx",
      "image": "nginx:latest",
      "memory": 256,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 8080,
          "protocol": "tcp"
        }
      ]
    }
  ],
  "networkMode": "bridge",
  "family": "nginx"
}
Enter fullscreen mode Exit fullscreen mode

Paso 10. Registramos y Ejecutamos la Tarea

Registramos la definición de la tarea y ejecutamos dicha tarea de ECS usando la definición del Paso 9.

#Registramos la tarea
aws ecs register-task-definition --cli-input-json file://external-task-definition.json

#Ejecutamos la tarea
aws ecs run-task --cluster iaasgeek-ecs-anywhere --launch-type EXTERNAL --task-definition nginx

#Obtenemos el ID de la tarea
TEST_TASKID=$(aws ecs list-tasks --cluster iaasgeek-ecs-anywhere | jq -r '.taskArns[0]')

#Verificamos que la tarea se está ejecutando
aws ecs describe-tasks --cluster iaasgeek-ecs-anywhere --tasks $TEST_TASKID
Enter fullscreen mode Exit fullscreen mode

Paso 11. Verificamos el Estado de la Tarea

Comprobamos el estado en ejecución de la tarea de ECS.

Como podéis comprobar, tenemos un Nginx corriendo en nuestro cluster de ECS Anywhere.

Conclusión

Aunque parece que la implementación se realiza correctamente, es necesario ajustar y afinar la configuración para obtener los resultados esperados. La realidad es que ChatGPT no deja de ser un loro vitaminado que simplemente escupe información, pero ha sido entretenido probar este modelo. En futuros episodio nos adentraremos en otro servicio de IA generativa, Amazon Bedrock. Bedrock es un servicio totalmente gestionado que permite que los modelos fundacionales (FM) de las principales startups de IA estén disponibles a través de una API, de modo que podemos elegir entre varios FMs para encontrar el que mejor se adapte a nuestro caso de uso. Pasaremos de la simulación, a la realidad! Va a ser entretenido!

Top comments (0)