jueves, 21 de julio de 2016

Pinceladas de Docker (II) - Docker HUB

La comunidad Docker es enorme, y crece cada día que pasa.
Sólo pásate por
https://hub.docker.com

para comprobar la cantidad de imágenes que hay, ya no sólo oficiales sino de gente que las sube para compartirlas.

Una de las ventajas principales que tiene docker sobre los entornos virtuales y que no comenté en el primer artículo que con Docker se acaba eso de "es que en mi local funciona!" que tantas veces hemos escuchado; todo el mundo podrá trabajar sobre el mismo entorno ya que docker permite la distribución de contenedores idénticos que los programadores podrán utilizar en local. Ahorran así tiempo en configuración y mantenimiento, además de unificar criterios.

En el próximo artículo intentaré recopilar todas las ventajas que yo veo que aporta Docker y que te pueden aportar mucho en tu día a día


Un saludo!

miércoles, 29 de junio de 2016

Pinceladas de Docker (I)

A estas alturas de la película, quien más y quien menos ha escuchado hablar de Docker, esa tecnología que ya lleva tiempo entre nosotros y que cada vez está más presente. De la misma manera, esta entrada no busca ser un tutorial o una guía muy exhaustiva, pero sí dar cuatro pinceladas a este producto que tanto está revolucionando.

Si habéis buscado en internet, habréis visto que la idea de fondo de los contenedores es similar a la de las máquinas virtuales; la gran diferencia es que las máquinas virtuales emplean recursos asignados en correr un segundo sistema operativo sobre el host que corren, mientras que los contenedores se aprovechan del sistema operativo subyacente y comparten algunas librerías y recursos con él, de manera que nos ahorramos recursos que podemos dedicar a levantar más contenedores.

En esta imagen se ve bastante claro lo que os decía

(fuente)
En el caso de las máquinas virtuales, sobre el SO tenemos el hipervisor que nos permite virtualizar el hardware e instalar diferentes instancias, cada una con sus sistema operativo propio, binarios, librerías y las aplicaciones que deseamos correr sobre ellas. De esta manera se hace un uso intensivo de los recursos del hardware que tenemos.
El caso de los contenedores es similar, pero nos permite aprovechar mejor los recursos; sobre el sistema operativo instalamos el motor de Docker, y encima desplegamos los contenedores y nuestras aplicaciones. Estos contenedores son imágenes relativamente pequeñas comparadas con un sistema operativo (llegando a unos pocos MB), y a nivel de recursos no tienen el mismo gasto que si fuera un sistema operativo completo.

Otra de las ventajas de docker sobre máquinas virtuales es que no requiere del gasto que implica la compra o alquiler de hardware para poder virtualizar instancias, sino que se puede desplegar tanto en entornos físicos como virtuales.


Un saludo!

lunes, 2 de mayo de 2016

Alta de usuarios en MySQL (|II)

Esta es una actualización de mi chuleta, y para el que lo necesite



A estas alturas ya sabemos que podemos definir los permisos que un usuario tiene a una base de datos (o tabla, o donde sea) usando GRANT; hay muchos tipos de privilegios pero los los más típicos que yo me encuentro son estos
  • SELECT: acceso sólo de lectura
  • INSERT: se permiten hacer inserts en la(s) tabla(s) seleccionada(s)
  • UPDATE: se permiten hacer updates en la(s) tabla(s) seleccionada(s)
  • DELETE: se permiten hacer delete de las filas que hay en la(s) tabla(s) seleccionada(s)
  • USAGE: no se permite nada, es un sinónimo para "sin privilegios".
  • ALL PRIVILEGES: todos los privilegios (no sólo incluye estos cuatro; aquí podéis encontrar un listado más completo)
Y para qué todo esto? Pues porque quiero actualizar ms notas

Esto es suficiente para dar de alta un nuevo usuario

 GRANT xxxxx on database.table to 'user'@'host' identified by 'password';

donde xxxxx son los permisos de los que os hablaba arriba.
Si además, queremos limitar el número de conexiones de ese usuario, añadimos al final la limitación, y quedaría de esta manera

 GRANT xxxxx ON database.table TO 'user'@'host' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS #;

El cambio de contraseña para un usuario, queda así

SET PASSWORD FOR 'user'@'host' = PASSWORD('yyyyyyyyyyyy');

Y qué hago si quiero saber qué privilegios tiene un usario, sobre qué y cómo esan definidos? Pues con este comando, que últimamente estoy utilizando bastante

SHOW GRANT FOR 'user'@'host';

que nos devolverá todos los permisos de ese usuario concreto; si  no le pasas el usuario (sólo "SHOW GRANT") te devolverá los privilegios del usuario con el que estás conectado.

lunes, 11 de enero de 2016

Píldora: Instalar y configurar un site con SSL en NetScaler VPX

Hola! Hoy te voy a dejar cómo configurar un SSL en un balanceador Netscaler VPX de Citrix; en concreto, este es la versión 9.3. Mucha suerte!


1 - Generar .key y .csr

2 - Instalar el certificado (CSR) con los intermediates correspondientes

3 - Configurar la parte de balanceo entre el LB y los servidores [ Load Balancing ]


-       Primero creo los servidores que formarán parte del pool. Lo hago desde ‘SERVERS’; sólo necesito el nombre y la IP que les doy:


-       (OPCIONAL) Puedo definir los servicios que correrán sobre estas máquinas y sobre los que quiero balancear. En ‘SERVICES’ puedes definir un único servicio cada vez:

 
y después puedes definir los monitores que quieres añadirle a este servicio



  




Después defino los servidores que formarán parte de este poll, el puerto y su peso en el balanceo
 



No es necesario añadir nada más al resto de pestañas

-       (OPCIONAL) También puedo definir grupos de servicios que actuarán como un balanceo real (por ejemplo, el puerto 80 en todos los servidores dados de alta en Servers). Lo hago desde ‘SERVICE GROUPS’. Primero defino el nombre y el protocolo de entrada
  
 
  
 y después defino los servidores que formarán parte de este poll, el puerto y su peso en el balanceo

 

En la pestaña ‘Advanced’, habilita ‘Client IP’ y en el box Header añade: “X-Forwarded-Proto” (sin comillas)
 

 
 
y sí, si sólo se pone un servidor equivale a añadir un sólo servicio desde la pestaña SERVICES

-       Para configurar el virtual server definimos el nombre, protocolo (que será HTTP) y dirección IP. La dirección IP no servirá para nada en nuestro caso, se puede poner una privada para no malgastarlas. De las pestañas “Services” y “Service Groups” selecciona los servicios que necesites añadir
 

En la pestaña ‘Method and Persistence’ asegúrate que tienes estas opciones
 
  


Y el resto lo dejas como está.


4 - Configurar la parte entre el cliente y el LB [ Content Switching ]
Es muy importante recordar que para cada nuevo SSL necesitaremos una IP dedicada
 

 
En VirtualHost creamos dos entradas.
-       La primera será la HTTP que simplemente haga de bypass del puerto 80 al balanceo general (en Target he puesto BalanceoOpenShopen-ALL)




No hace poner nada en otras pestañas
-       La segunda será el HTTPs será todo igual excepto por el protocolo con el que traba- jamos, que será SSL en lugar de HTTPS. En Target lo apuntaremos al virtualhost que acabamos de crear
 


En la pestaña “SSL Settings” añadimos el certificado que acabamos de instalar


y creamos la nueva entrada. Tendrás que cerrar la ventana después


PARTE DEL EQUIPO DE DESARROLLO

-       Modificar el index.php según este post:



     mucho cuidado al crear los Servicios o los grupos de Servicios nuevos, no olvidar el “X-Forwarded-Proto” en especial al olvidarlo en los polls ‘admin’