Artículos recientes

Instalación y configuración de Windows Terminal y Powershell

Microsoft se está poniendo un poco las pilas, y entre otros muchos proyectos, lanzó hace unos meses Windows Terminal, una nueva terminal en Windows con unas funcionalidades que eran necesarias desde hace mucho tiempo (pestañas, perfiles, integración con WSL, soporte Unicode y UTF-8, temas, estilos, etc.).

Aunque no uso mucho Windows, en ocasiones tengo que iniciarlo, y determinadas tareas de consola se hacen bastante pesadas. Con Windows Terminal, la verdad es que la sensación a la hora de trabajar es bastante cómoda. Por eso, he decidido crear este post para futuras referencias, así como con instrucciones para instalar utilidades útiles a la hora de usar Windows Terminal.

En primer lugar, para instalar Windows Terminal, simplemente ejecutaremos este comando desde una consola de Powershell estándar, con permisos de administrador (teniendo el gestor de paquetes Chocolatey instalado previamente):

choco install microsoft-windows-terminal

Como alternativa, si no podemos instalar Windows Terminal porque el sistema no cumple los requisitos (es necesaria una compilación de Windows Windows 10 1903, build 18362, o posterior), podemos optar por usar ConEmu o Cmder:

choco install conemu
choco install cmder

También instalaremos gsudo, que será necesario en pasos posteriores:

choco install gsudo

Leer más...

Obtener la fecha de creación de las instancias de AWS EC2

AWS, al listar las instancias de EC2, no devuelve ninguna propiedad que diga cuándo se creó una instancias; esto puede sernos útil en determinadas ocasiones. Podríamos pensar que nos podría valer la propiedad “LaunchTime”, pero eso en realidad nos indica cuándo se encendió por última vez la instancia, no cuándo se creó.

Aunque directamente este dato no lo proporciona directamente AWS, podemos deducirlo indirectamente a través de otros parámetros:

  • La fecha más antigua de vinculación de las tarjetas de red
  • La fecha más antigua de vinculación de los discos

Esto debe ser válido, ya que por ejemplo, la tarjeta de red principal no se puede desvincular de la instancia (You cannot detach a primary network interface from an instance), y su fecha de vinculación permanece siempre igual, aún entre reinicios. También suele ser válido que normalmente, el disco principal de una instancia no suele cambiar, aunque esto no siempre es cierto.

Con estos datos, podemos lanzar una consulta de la CLI de AWS y mediante el parámetro query (que es una expresión JMESPath), obtener dichos valores:

aws ec2 describe-instances --output table --query 'sort_by(Reservations[].Instances[?State.Name!=`terminated`][].{Name: Tags[?Key==`Name`].Value | [0], InstanceId: InstanceId, CreationTime: min([min(NetworkInterfaces[].Attachment.AttachTime), min(BlockDeviceMappings[].Ebs.AttachTime)]), State: State.Name, InstanceType: InstanceType, PublicIpAddress: PublicIpAddress, PrivateIpAddress: PrivateIpAddress}, &CreationTime)'

Leer más...

Configurar Microk8s para usar repositorios de AWS ECR

Continuando con un post anterior de cómo probar Ansible AWX con Microk8s (en AWS EC2). Bueno, pues resulta que me creé una imagen personalizada para el contener awx_task para instalar una serie de librerías y comandos que necesitaba para lanzar unos playbooks; el fichero Dockerfile es similar a éste:

FROM ansible/awx_task:9.1.1

# Switch user to become root
USER 0

# Additional software
RUN cd && \
    set -x && \
    dnf install -y nmap-ncat htop && \
    dnf clean all

# Ansible venv additional dependencies
RUN cd && \
    source /var/lib/awx/venv/ansible/bin/activate && \
    umask 0022 && \
    pip install --upgrade pypsrp pysocks && \
    deactivate

# Restore the original user
# https://github.com/ansible/awx/blob/devel/installer/roles/image_build/templates/Dockerfile.task.j2
USER 1000

Leer más...

Monitorizar memoria y errores de funciones Lambda

A la hora de monitorizar estadísticas sobre la ejecución de nuestras funciones Lambda, Cloudwatch ya nos ofrece algunas builtin como:

  • Cantidad de throttles
  • Número de invocaciones
  • Número de errores “genéricos”
  • Duración (media y total)

Pero si queremos ver estadísticas sobre memoria o errores según sean por consumo excesivo de memoria o por timeout, no los tenemos disponibles por defecto.

Leer más...

Usando caddy para desarollo local en PHP

Durante el desarrollo en local de nuestra aplicación en PHP (con el framework CakePHP) solíamos usar el servidor que venía por defecto:

bin/cake server

El problema de esto (que por debajo usa el servidor embedido de PHP), es que es mono-hilo, es decir, que sirve sólo una petición a la vez, por lo que a veces la carga de la web se hacía bastante pesada.

Leer más...