mctl es una CLI escrita en Python que facilita y automatiza tareas de SRE/DevOps.
Usa Typer para la definición de comandos y una arquitectura modular
Para instalar la CLI mctl y poder ejecutar todos los comandos descritos en este README, sigue estos pasos:
- Clonar o copiar el repositorio en tu máquina local:
git clone https://github.com/tu-organizacion/mctl.git
cd mctl
- (Opcional) Crear y activar un entorno virtual (recomendado):
python3 -m venv .venv
source .venv/bin/activate # En macOS/Linux
- Instalar el paquete en modo editable:
pip install -e .
- Verificar que el comando mctl está disponible:
mctl --help
Descripción
Crea (o sobrescribe) un profile SSO dentro de ~/.aws/config
, usando la plantilla aws_profile.j2
. Esto te permite configurar perfiles para autenticarte con AWS CLI a través de SSO.
mctl aws config init-config \
--profile-name <nombre_del_profile> \
--sso-start-url <url_sso> \
--sso-account-id <cuenta_aws_sso> \
--region <region_aws> \
--sso-region <region_sso> \
--sso-role-name <rol_sso> \
--output <formato_salida>
Descripción
Realiza la autenticación (Device Authorization) en SSO y genera múltiples perfiles en ~/.aws/config
y ~/.aws/credentials
, basándose en la información del perfil ya existente que configuraste (por defecto [default]
).
mctl aws config create-config \
--profile-name <profile_sso_configurado>
Descripción
Guarda el archivo ~/.aws/config
actual en ~/.aws/configs/config_<organizacion>
. Sirve para preservar configuraciones distintas (por ejemplo, una para cada empresa u organización).
mctl aws config save-config <nombre_de_organizacion>
Descripción
Copia ~/.aws/configs/config_<organizacion>
a ~/.aws/config
, permitiendo cambiar rápidamente entre distintas configuraciones de ~/.aws/config
(por empresa u otro criterio).
mctl aws config switch-org <nombre_de_organizacion>
Descripción
Fuerza la migración de todos los volúmenes EBS de tipo gp2 a gp3 en la región y perfil de AWS especificados. Calcula dinámicamente el IOPS y el throughput adecuados para gp3, dependiendo del tamaño de cada volumen.
mctl aws ebs enforce-ebs-gp3 \
--profile <perfil_aws> \
--region <region_aws>
Descripción
Elimina imágenes sin tags en todos los repositorios de ECR, y además borra las imágenes antiguas (más de X días de antigüedad) conservando al menos N imágenes por repositorio. Ayuda a mantener limpio y optimizado el almacenamiento en ECR.
mctl aws ecr delete-untagged-images \
--profile <perfil_aws> \
--region <region_aws> \
--retention-days <dias_de_retencion> \
--min-images-to-keep <numero_minimo_a_conservar>
Descripción
Genera un reporte de todos los servicios ECS en los clústeres de la región indicada, mostrando la cantidad deseada y en ejecución de tareas, si tienen auto-scaling configurado, la fecha de creación y la fecha del último despliegue. Admite salida en formato tabla o CSV.
mctl aws ecs list-services-report \
--profile <perfil_aws> \
--region <region_aws> \
--format <table|csv>
Descripción
Describe en detalle un servicio ECS específico dentro de un clúster, incluyendo la definición de tareas (contenedores, puertos, logging), load balancers/target groups asociados, configuración de red y las tareas que se están ejecutando (mostrando subnets, ENIs, security groups, etc.).
mctl aws ecs describe-service-resources \
--cluster <nombre_o_arn_cluster> \
--service <nombre_o_arn_servicio> \
--profile <perfil_aws> \
--region <region_aws>
Descripción
Elimina todos los objetos (excepto “carpetas”) de un bucket de S3. Ayuda a limpiar archivos antiguos o innecesarios de forma rápida, iterando sobre cada objeto y borrándolo individualmente.
mctl aws s3 clean-bucket \
--bucket-name <nombre_del_bucket> \
--region <region_aws> \
--profile <perfil_aws>
Descripción
Busca un archivo (coincidencia parcial en el key) en todos los buckets de S3 de la cuenta, basándose en la región y el perfil indicados. Utiliza list_objects_v2 con paginación para recorrer cada bucket y sus objetos.
mctl aws s3 find-file \
--file-name <substring_del_archivo> \
--region <region_aws> \
--profile <perfil_aws>
Descripción
Lista la última actividad de cada usuario en un servidor de AWS Transfer Family, consultando sus streams de CloudWatch Logs. Permite saber cuándo fue la última conexión de cada usuario de Transfer Family.
mctl aws transfer list-last-user-activity \
--profile <perfil_aws> \
--server-id <id_servidor_transfer> \
--log-group-name <nombre_log_group_en_CloudWatch> \
--region <region_aws>
Descripción
Este comando lista todas las Network Interfaces de AWS que tienen una IP pública, basándose en el perfil y región especificados.
mctl aws networking list-public-network-interfaces \
--profile dev \
--region us-east-1
Descripción
Crea rutas bidireccionales entre dos subnets a través de un Transit Gateway. Se asume que cada subnet tiene una Route Table (RTB) asociada; el comando buscará la RTB y configurará rutas para que el tráfico de ambas subnets circule mediante el TGW.
mctl aws networking create-tgw-route \
--source-subnet-id <subnetOrigen> \
--dest-subnet-id <subnetDestino> \
--tgw-id <transitGatewayId> \
--profile <perfil_aws> \
--region <region_aws>
Descripción
Consulta las alertas abiertas de Dependabot en una organización de GitHub, cuenta las vulnerabilidades según su severidad (Critical, High, Medium, Low) y muestra los repositorios con más alertas, ordenados de mayor a menor número de vulnerabilidades críticas.
mctl github list-dependabot-alerts <nombre_organizacion> \
--token <token_github> \
--top-n <numero_de_repos>
Descripción
Lista o elimina (según se indique) todos los ReplicaSets con 0 réplicas en todos los namespaces de un clúster Kubernetes, ejecutando internamente comandos de kubectl.
mctl kubernetes clean-replicasets \
--dry-run [False|True]