Rocket Chat super rápido con Vagrant

Rocket Chat es un excelente sistema corporativo de chat completamente software libre (clientes y servidores), con todo el glamour de un sistema de chat moderno (canales, integración, componentes embebitos, chatbots, etc. etc.)

En este Vagrantfile es posible levantarlo de forma tan simple como escribir vagrant up

[pastacode lang=»ruby» path_id=»aX3qrbgr» highlight=»» lines=»» provider=»pastebin»/]

Publicar la llave pública SSH

Los principales repositorios (Gitlab y Github) exponen las llaves públicas SSH de sus usuarios de forma que están accesibles para descarga:

https://(gitlab|github).com/<usuario>.keys

Es la URL de donde se obtienen, y aquí las mías:

La ventaja es tener un sitio disponible donde está nuestra clave (y la de nuestros colegas) para usar en automatismos como esta task de Ansible:

- name: Enable pilasguru root access
  authorized_key:
    user: root
    state: present
    key: https://gitlab.com/pilasguru.keys
    validate_certs: False

Fundamentos y doctrinas de la Guerra Fría

Tuve el gusto de presentar ante dos sextos años de la Escuela Elbio Fernandez un análisis de los fundamentos y las doctrinas de la Guerra Fría, con la idea de complementar el estudio que previamente ellos habían hecho sobre ese período histórico, pero acercando una visión desde la «academia», gracias a Von Neumann, claro.

Me divertí muchísimo contándoles cómo explota una bomba nuclear y explicando cómo la Teoría de Juegos de John Von Neumann y Oskar Morgenstern podía responder por qué la Guerra Fría fue, precisamente, fría.

Hasta nos hicimos tiempo para representar el dilema del prisionero y el equilibrio de Nash.

Agradezco a las maestras Irene y Annie que me permitieron estar frente a sus alumnos.

Enviar correo SMTP por telnet

Nada nuevo, esto está por todo internet explicado en muchas formas, tamaños y colores. Pero sucede que lo utilizo mucho y lo que siempre hago es entrar a mi blog y hacer una búsqueda por el término «telnet» y ahi me doy cuenta que tengo todas las formas de telnet para correo, menos la común y corriente. Eso motiva este artículo.

Como enviar un correo electrónico al puerto 25 por telnet:

# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.mydomain.com ESMTP

HELO yourdomain.com
250 mail.mydomain.com

MAIL FROM: you@server.com
250 2.1.0 Ok

RCPT TO: rpilas@mydomain.com
250 2.1.5 Ok

DATA
354 End data with <CR><LF>.<CR><LF>
From: "Some One" <you@server.com>
To: "Rodolfo Pilas" <rpilas@mydomain.com>
Subject: Testing
MIME-Version: 1.0
Content-Type: multipart/alternative;
        boundary="boundary-type-1234567892-alt"
--boundary-type-1234567890
--boundary-type-1234567892-alt
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


Testing the text to see if it works!

--boundary-type-1234567892-alt
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


<html>Does this actually work?</html>

--boundary-type-1234567892-alt--
--boundary-type-1234567890
Content-Transfer-Encoding: base64
Content-Type: text/plain;name="Here2.txt"
Content-Disposition: attachment;filename="Here2.txt"

KiAxMyBGRVRDSCAoQk9EWVtURVhUXSB7NjU5fQ0KLS1fZjZiM2I1ZWUtMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KDQoNCkp1c3Qgc2VlaW5nIHdoYXQgdGhpcyBhY3R1
YWxseSBjb250YWlucyEgCQkgCSAgIAkJICA9DQoNCi0tX2Y2YjNiNWVlLTIwN2EtNGQ3Yi04NDU4LTQ2OWJlZTQ5MThkYV8NCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KDQo8aHRtbD4NCjxoZWFkPg0KPHN0eWxlPjwhLS0N
Ci5obW1lc3NhZ2UgUA0Kew0KbWFyZ2luOjBweD0zQg0KcGFkZGluZzowcHgNCn0NCmJvZHkuaG1tZXNzYWdlDQp7DQpmb250LXNpemU6IDEwcHQ9M0INCmZvbnQtZmFtaWx5OlRhaG9tYQ0KfQ0KLS0+PC9zdHlsZT48L2hlYWQ+DQo8Ym9keSBjbGFzcz0zRCdobW1lc3NhZ2UnPjxkaXYgZGlyPTNEJ2x0cic+DQpKdXN0IHNlZWluZyB3aGF0IHRo
aXMgYWN0dWFsbHkgY29udGFpbnMhIAkJIAkgICAJCSAgPC9kaXY+PC9ib2R5Pg0KPC9odG1sPj0NCg0KLS1fZjZiM2I1ZWUtMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXy0tDQopDQpmbHlubmNvbXB1dGVyIE9LIEZFVENIIGNvbXBsZXRlZA


--boundary-type-1234567890--


.
QUIT
250 2.0.0 Ok: queued as 1EDE71400DE

221 2.0.0 Bye
Connection closed by foreign host.

(esto lo he extraido de internet)

fingerprint de certificados ssh

Con el tiempo uno va coleccionando muchos certificados, algunos dedicados a un determinado proyecto, otros dedicados a algun cliente y, por supuesto los propios. En ese repositorio de certificados que suele ser la carpeta ~/.ssh/ hay que agregar los certificados que por algun motivo distribuimos en algunos servidores… en fin, llegará el día que necesitemos identificar algun certificado privado.

Así que estos son los comandos para obtener el fingerprint (huella dactilar) de certificados privados.

Certificado ssh

$ openssl rsa -in id_rsa -pubout -outform DER | openssl md5 -c
Enter pass phrase for .ssh/id_rsa:
writing RSA key
a2:d7:19:27:fa:89:43:aa:59:fd:ac:eb:71:3f:fb:a8

Como ven, mi certificado privado tiene passphrase y, para leerlo se require que la escriba.

Certificado pem (AWS)

openssl pkcs8 -in .ssh/proyectoX  -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
d3:ff:c0:cf:6f:25:a1:88:b5:c7:9e:9b:ba:b9:57:a4:bb:45:62:68

Los certificados que creamos en AWS se suelen guardar sin passphrase y el fingerprint se muestra inmediatamente.

FIX AWS cli «An error occurred (AuthFailure)»

Uno de los deployments que estoy automatizando con aws-cli funcionaba perfectamente cuando utilizaba recursos RDS, por ejemplo:

$ aws rds describe-db-snapshots --db-instance-identifier production
{
    "DBSnapshots": []
}

lo que significa que estaban correctamente configuradas las credenciales y los permisos dentro de IAM.

Pero al ejecutar comandos sobre EC2 obtenía un error, en algo tan sencillo como listar las instancias

$ aws ec2 describe-instances

An error occurred (AuthFailure) when calling the DescribeInstances operation: 
AWS was not able to validate the provided access credentials

y es un poco desconcertante, porque algunos comandos/servicios funcionan y otros no.

Una prueba que hice fue dar de alta las variables

export AWS_ACCESS_KEY_ID="AKIAIW......A"
export AWS_SECRET_ACCESS_KEY="GOvDvOPvjBW0n.........."

pero el error continúaba.

El problema es que la máquina local necesita tener una hora correctamente configurada:

$ date
Sat Sep 15 16:12:01 UTC 2018

$ sudo apt install -y ntp

$ date
Sat Sep 15 16:23:57 UTC 2018

Esos 9 minutos de retraso que tenía mi máquina local evitaba el uso de EC2.

Hay muchas formas de ajustar la hora, el servicio NTP no es la única solución y puede no ser la mejor. Tal vez un simple

$ sudo date 091516232018

hubiera sido una solución más adecuada; pero la idea es la misma, poner el host local en hora

Deepin

Ya hace tiempo que vengo utilizando Deepin como mi distribución de escritorio de Linux. Es algo que podemos cambiar, pero hace tiempo que Deepin es mi distribución preferida a la hora de montar un desktop.

Se trata de una distribución para desktop que busca ser elegante y fácil de utilizar para el usuario promedio.

No solo viene out-of-the-box con el software que uno espera (navegador Chrome, Correo Thunderbird, etc.) sino que trae algunas aplicaciones propias que buscan seguir la misma idea de sencillez y elegancia como un centro de aplicaciones (Deepin Store), Deepin ScreenShot y multimedia con Deepin Music y Deepin Movie.

Para ofimática viene ya pre-instalado todo el WPS Office que busca seguir la estética de los ciéntos de íconos y sub-menúes del MS-Office.

La base es GNU/Debian Linux, por lo que esta todo, todo lo demás que quieras instalar para personalizar tu deepin.

Hay una barra de aplciaciones preferidas donde puedes anclar tus aplicaciones más usadas y un launcher para buscar y lanzar tus aplciaciones.

El Centro de Control es un panel que se despliegua a la derecha y permite hacer tus configuraciones.

Es lindo, me gusta y lo uso y recomiendo y aquí está el enlace al sitio en español.

Tabla periódica del DevOps

La empresa XebiaLabs mantiene una tabla periódica de las herramientas para DevOps que es una forma muy interesante de tener tanto nombre y herramientas ordenados en una forma visual y comprensible.

Las herramientas listadas tiene cada una un enlace que lleva a información adicional.

Fuente: PERIODIC TABLE OF DEVOPS TOOLS