Mostrando entradas con la etiqueta Virtualización. Mostrar todas las entradas
Mostrando entradas con la etiqueta Virtualización. Mostrar todas las entradas

miércoles, 29 de mayo de 2019

Docker en Debian 9 Stretch



Docker:

Docker es un proyecto de código abierto con el cuál podemos crear contenedores.

Un contenedor es un prisma rectangular de gran tamaño que suelen utilizar los barcos para transportar mercaderías y suele tener dentro distintos tipos de productos. Docker vendría a ser como el transportador de esos containers, es decir el barco.

Llevado a la informática se utiliza para que aplicaciones de software puedan ejecutarse en cualquier máquina, independizandose del sistema operativo.

Es una especie de empaquetado de sofware que se puede llevar de un lado a otro.

Docker permite meter todo lo que se necesite para que una aplicación funcione y se ejecute correctamente.
Por ejemplo debe contener algo como: java, tomcat, nginx, la aplicación en si misma, librerias, binarios y todo lo que necesite para funcionar.

Si llevo ese contenedor a otro servidor donde esté docker instalado debería funcionar correctamente.


Docker Hub:

Es un repositorio donde los usuarios de docker y los partners crean, testean, guardan y distribuyen imagenes de contenedores.

Es un lugar de donde me puedo bajar contenedores ya armados y listos para usar. Por ejemplo un debian oficial, un linux customizado, un ubuntu con paquetes ya instalados, un webserver ya listo para usarse, etc.


Docker Files:

Se pueden crear imágenes a partir de un archivo llamado Dockerfile.


Instalando docker:
apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
apt-get update
apt-get install docker-ce 


Verificamos que Docker se este ejecutando:
/etc/init.d/docker status




Vemos todas las imágenes de debian en dockerhub:
docker search debian



Si quiero descargar una imagen utilizo el docker pull:
docker pull debian



Para ver las imagenes que tengo ya descargadas:
docker images



Ver contenedores ejecutando:

No tenemos contenedores corriendo, por ahora solo lo descargamos.

docker ps



Ejecutar un contenedor:

Utilizaremos la imagen de debian oficial que bajamos anteriormente con el comando pull:

Utilizaremos losbparámetros -t de tty y el -i de interactivo y le decimos que ejecute un bash. Vemos como nos cambió el prompt:

docker run -t -i debian /bin/bash



Instalamos paquetes en el container:

Hacemos un update de los repositorios e instalamos nginx, wget y vim.

root@1363037a2fad:/# apt-get update && apt-get -y install wget vim nginx



Tener en cuenta que puedo salir del contenedor con exit ó Ctrl+d pero dejará de ejecutarse el contenedor.

Si quisiera volver a tener el mismo container corriendo tendría que volver a instalar todo lo que instalé antes ya que no guarde los cambios en una imagen.

Para guardar esos cambios en una imagen primero debo salir sin matar el contenedor, para eso ejecutamos Ctrl+p+q y veremos que vuelve el prompt.



Si ahora ejecutamos el comando docker ps veremos que sigue corriendo ese container:

docker ps



Crear una imagen:

Ahora voy a guardar la imagen modificada, pero con otro nombre.

Primero obtenemos el ID del contenedor en ejecución (f5b9be35915d) con el comando "docker ps".

Guardaremos los cambios en una nueva imagen llamada nginx-debian:1.0. Esto lo hacemos con "docker commit [id-del-contenedor] [nombre-nueva-imagen] por ejemplo:

docker commit f5b9be35915d nginx-debian:1.0



Verificamos la creacion de la imagen:

root@debian:~# docker images



Salimos de un contenedor sin que quede en ejecución:

Primero verificamos que no hay contenedor corriendo:

docker ps

Verificamos que imagenes podemos usar para crear un contenedor:

docker images 

Iniciar un contenedor interactivo con la imagen que guardamos previamente llamada nginx-debian versión 1.0:

docker run -it nginx-debian:1.0

Salimos del contenedor con exit ó con Ctrl+d:

root@8c80b4f2c09e:/# exit

Verificamos que el contenedor no está corriendo:

docker ps



Si quiero borrar una imagen hacemos lo siguiente:

Vemos las imágenes disponibles:

docker images

Eliminamos la imagen nginx-debian v1.0:

docker rmi -f nginx-debian:1.0

Volvemos a ver que fue eliminada:

docker images




Creando una imagen con Dockerfile:

Creamos la carpeta y archivo Cockerfile y lo editamos:
mkdir -p /var/Dockerfile/nginx
vi /var/Dockerfile/nginx/Dockerfile

Dentro ponemos lo siguiente, este archivo debería utilizar un contenedor debian, indica que Hernan es el que la mantiene, actualiza los repo, instala en nginx lo expone en el puerto 8888 e inicia el demonio del nginx:
FROM debian
MAINTAINER HERNAN
RUN apt-get update && apt-get install -y nginx && apt clean
EXPOSE 8888
RUN /etc/init.d/nginx start

Ejecutamos el build posicionandonos donde está el docker file:
cd /var/Dockerfile/nginx/
docker build . 



Verificamos las imagenes:

root@debian:~# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
debian-apache                        latest              af0593cb85eb        59 seconds ago      225MB
debian                               latest              8d31923452f8        3 weeks ago         101MB

Vemos que no hay nada corriendo, ejecutamos la imagen debian-apache y verificamos que ahora corre:

root@debian:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

root@debian:~#
root@debian:~# docker run -p 8181:80 debian-apache-bis /usr/sbin/apache2ctl -D FOREGROUND
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message



Si ingresamos a la ip del docker, no la del contenedor, deberíamos ingresar al puerto 8181 y nos reenviaría al apache 80 del contenedor:

http://debian:8181/


Matamos el contenedor que habia quedado corriendo:

root@debian:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                                                          STATUS              PORTS                          NAMES
68c121179ab3        debian-apache-bis   "/usr/sbin/apache2ct…"   12 minutes ago                                                   Up 12 minutes       81/tcp, 0.0.0.0:8181->80/tcp   vigorous_benz
root@debian:~# docker kill 68c121179ab3

jueves, 15 de marzo de 2018

Monitorear si una maquina virtual tiene snapshots en VMware ESXi



Este script corre con el usuario nagios, el ESXServer lo cambian por el hostname de su ESX ó por la ip del mismo, Storage-01 es el nombre del datastore del vmware en mis servidores.

Va a llegar una alarma de nagios en caso que exista alguna virtual con al menos un snapshot en cualquier máquina virtual.

Script: /usr/local/apps/nagios/libexec/check_VM_snapshots


 # Autor Hernan Tirado
 # blog: redes-seguridad.blogspot.com
 # Creado el: 15-03-2018
 #
 # Uso: /usr/local/apps/nagios/libexec/check_VM_snapshots

CANT_SNAP=`ssh root@ESXserver-x ls -latR /vmfs/volumes/Storage-01/|grep -i snap |awk '{ print $6" "$7" "$9}'|sort|uniq|wc -l`

if [ $CANT_SNAP = 0 ];then
 echo "OK - Virtuales SIN Snapshots en Storage-01."
 exit 0
else
 echo "CRITICAL - Virtuales con Snapshots en Storage-01: $CANT_SNAP"
 ssh root@ESXserver -x ls -latR /vmfs/volumes/Storage-01/|grep -i snap |awk '{ print $6" "$7" "$9}'|sort|uniq
 exit 2
fi

fi
Tener en cuenta que tiene que tener habilitado el SSH en el server ESXi y también copiar la key de nagios en el autorized_key del server ESX.

miércoles, 17 de agosto de 2016

PBM error occurred during PreCloneCheckCallback

Al intentar clonar una máquina virtual me encontré con el siguiente error:

Se produjo un error general del sistema: PBM error occurred during PreCloneCheckCallback: No connection could be made because the target machine actively refused it:



Nos logueamos al VCenter a ver si estaban todos los servicios habilitados y efectivamente había uno bajo, el: "VMware vSphere Profile-Driven Storage Service"


Lo inicié manualmente y dejé de tener el error al clonar la virtual.

Fuente: https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2118551


miércoles, 13 de julio de 2016

Instalar VMware vSphere Update Manager (VUM)

Qué es el VMware vSphere Update Manager ó VUM?

VUM permite actualizar parches críticos, no críticos ó hacer un upgrade de versión de VMware, por ejemplo de ESX 5.1 a ESX 6.0.

No sólo permite hacer actualizaciones de hosts, sino también de máquinas virtuales y aplicaciones virtuales.

Se agrega un plug-in en el vSphere Client en el cuál nos permite cargar imágenes y actualizaciones directamente desde el cliente de vmware, no es necesario poner el CD en el servidor para actualizarlo.

Una vez instalado lo veremos acá:



Comenzamos la instalación:

Nos dirigimos a la ruta donde tenemos instalado el vCenter y damos click derecho sobre el autorun y ejecutamos como administrador:


Nos dirigimos al apartado "vSphere Update Manager" y luego hacemos click sobre "Server" (1 en rojo en la imagen), luego tildamos la opción 2 (en rojo) y damos install. Esto obviamente si necesitamos utilizar un SQL Express, si tenemos un sql en otro server utilizamos ese, en este caso voy a explicar usando el express en este mismo equipo:


Elegimos el idioma:


Destildamos la opción para que actualice y siguiente:


Ingresamos la direción ip del servidor donde instalamos el vCenter, luego usuario y password y damos siguiente:


Y listo, finalizar la instalación:


Nos logueamos en el vSphere Client y vamos a la solapa "Plug-ins" y seleccionamos "Manage Plug-ins...":


Buscamos en los Plug-ins disponibles el que dice: "Extensión de VMware vSphere Update Manager" y luego clickeamos sobre: "Download and Install..."


Ejecutar:


Seleccionamos el idioma deseado:


Siguiente:


Aceptamos la lic y siguiente:


Instalar:


Si:


Y finalmente vamos al "Home" del vSphere Cliente y vemos que nos aparece ahora "Update Manager":


Y vemos que nos da una breve explicación:


Listo, finalizada la instalación del VUM

También vemos en el vSphere que aparece una nueva solapa: "Update Manager":




lunes, 5 de octubre de 2015

Extender Disco LVM Oracle Linux en VMware

Verificamos el espacio en disco de /datos1 que tiene 500G y 89% disponible con el comando df -h:



Ejecutamos un fdisk -l para ver los discos antes de agregar el nuevo disco e identificar el nombre una vez agredado:



Agregamos el disco a la maquina virtual desde el vSphere Client de VMware. Editamos el host donde queremos agregar el disco, vamos a Virtual Machine Properties y luego Add como indica la imagen:



Seleccionamos que tipo de hardware queremos agregar, en este caso un disco y Next:



Create a new virtual disk, Next:



Indicamos el tamaño y seleccionamos la opción "Thin Provision" y luego Next:



Agregamos el disco en el siguiente SCSI disponible, en mi caso el (0:8), Next:



Finish:



Damos Ok:



Supuestamente haciendo el fdisk luego de agregar el disco debemos ver cambios, en caso de no encontrar diferencia entre ambos archivos:



Para que tome los cambios sin reiniciar es posible que tenga que poner "0 0 0" ó "- - -" en los archivos /sys/class/scsi_host/hostX/scan donde reemplaza la X por 0, 1, 2, .... hasta los que tenga, por ejemplo:



Ahora si vemos los cambios en los .txt antes y después de agregado el disco:



En la imagen anterior vemos el disco identificado como /dev/sdf. Creamos el volumen físico con el pvcreate especificando el disco. Luego ejecutamos un vgdisplay para obtener el nombre del volumen group (VG Name), en nuestro caso es el "DATOS-DB-PD" y vemos que tiene como tamaño 599.98GiB (VG Size):



Utilizamos el comando vextend para agregar el disco nuevo /dev/sdf al volumen group, el comando sería el siguiente de la imagen, donde DATOS-DB-PD es el nombre del volumen group y el siguiente parámetro es el nombre del disco:



Volvemos a ejecutar un df -h y vemos que sigue sin aumentar el tamaño del /datos1, lo que nos falta es extender el volumen lógico con el comando lvextend: 

# lvextend -L+299 Filesytem reemplazamos el filesystem por el que tenemos, en mi caso es el que está resaltado en negro, en el primer caso no me dejó con 300Gb, lo hice con 299 para que funcione:



Una vez agregado el disco al volumen lógico falta hacer la redimension del filesystem, ejecutando lo siguiente:



Vemos que nos dejó extenderlo correctamente de 591G a 885G.