Skip to content

macuartin/mctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mctl

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

Instalacion

Para instalar la CLI mctl y poder ejecutar todos los comandos descritos en este README, sigue estos pasos:

  1. Clonar o copiar el repositorio en tu máquina local:
  git clone https://github.com/tu-organizacion/mctl.git
  cd mctl
  1. (Opcional) Crear y activar un entorno virtual (recomendado):
  python3 -m venv .venv
  source .venv/bin/activate  # En macOS/Linux
  1. Instalar el paquete en modo editable:
  pip install -e .
  1. Verificar que el comando mctl está disponible:
  mctl --help

AWS Config

init-config

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>

create-config

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>

save-config

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>

switch-org

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>

AWS EBS

enforce-ebs-gp3

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>

AWS ECR

delete-untagged-images

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>

AWS ECS

list-services-report

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>

describe-service-resources

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>

AWS S3

clean-bucket

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>

find-file

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>

AWS Transfer Family

list-last-user-activity

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>

AWS Networking

list-public-network-interfaces

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

create-tgw-route

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>

GitHub

list-dependabot-alerts

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>

Kubernetes

clean-replicasets

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]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published