martes, 17 de julio de 2018

Laboratorio - Integración Contínua (I)

Iniciamos una serie de entradas donde expondremos la forma de crear un entorno de Integración Continua en nuestro ordenado, a modo de laboratorio.

Estos serán los pasos:
  1. Instalación de Ubuntu en VMWare Player en Windows 7
  2. Instalación de Jenkins en Ubuntu
  3. Instalación GitLab en Ubuntu
  4. Instalación de Docker y Minikube en Ubuntu
  5. Desarrollo de un microservicio en Eclipse Windows (1) y (2)
    1. Angular 6 frontend
    2. SpringBoot 2.x backend
    3. Mongo Replicaset (3 replicas)
  6. Despliegue CI en Minikube utilizando la infraestructura configurada
    1. Pipeline - Jenkinsfile
    2. GitLab webhook
    3. Dockerfile
    4. Deploy y Service yaml
    5. Secret
    6. Ingress
En esta primera entrada instalaremos Ubuntu en VMWare Player.


Ubuntu
Nos descargamos la imagen ubuntu completa, con desktop incluido. En estos momentos la versión disponible es la 18.04 TLS (ubuntu-18.04-desktop-amd64.iso).

Una vez descargada, arrancamos VMWare Player. Pulsamos sobre "Create a New Virtual Machine"


A continuación seleccionamos la iso descargada y pulsamos "next":


Informamos el usuario de que se creará con la instalación. En Ubuntu habitualmente no usaremos root, usaremos este usuario definido, y cualquier acción que necesite permisos de administrador lo haremos con "sudo comando...."



En el siguiente paso indicamos el nombre de la máquina virtual y la ubicación de los ficheros de dicha máquina virtual.


En el siguiente paso sólo modificamos el tamaño del disco a usar por la máquina virtual. En nuestro caso indicamos 40 GB.


En el siguiente paso aparece un resumen de la instalación. Pulsaremos "Customize Hardware" para cambiar algunos valores.

En Memory asignamos 6 GB de RAM si nuestro equipo tiene 12 GB. Si disponemos de 8 GB, asignaremos la mitad, 4 GB.

En el apartado de "Processors" asignamos dos cores y marcamos el checkbox "Virtualice Intel VT..." (esto nos permitirá instalar Docker y Minikube, en otro caso nos daría error)


El adaptador de red lo dejamos como NAT (por defecto). Aceptamos y volvemos a la pantalla de resumen:


Pulsamos sobre "Finish", comenzando el proceso de instalación:


Tras unos minutos acaba presentándonos la pantalla de login. Introducimos las credenciales configuradas más arriba y accedemos a nuestro Ubuntu.


Lo más probable es que nos indique que tiene que actualizaciones pendientes. Aceptamos para que las instale. Nos pedirá password ya que las actualizaciones requieren permisos de administrador.

En todo caso, si no nos pide actualizar el sistema lo haremos de forma manual. Abrimos un terminal (será nuestro compañero en el resto de entradas) y ejecutamos "sudo apt update" (para actualizar la lista de paquetes). No puede devolver algo como lo siguiente:

    userblog@ubuntu:~$ sudo apt update
    [sudo] password for userblog: 
    Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
    Hit:2 http://us.archive.ubuntu.com/ubuntu bionic InRelease                              
    Get:3 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
    Get:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
    Fetched 247 kB in 1s (232 kB/s)                               
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    15 packages can be upgraded. Run 'apt list --upgradable' to see them.

En este caso, ejecutamos "sudo apt upgrade".  

    userblog@ubuntu:~$ sudo apt upgrade
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Calculating upgrade... Done
    The following packages will be upgraded:
      evolution-data-server evolution-data-server-common gnome-disk-utility gnome-initial-setup    libcamel-1.2-61
      libebackend-1.2-10 libebook-1.2-19 libebook-contacts-1.2-2 libecal-1.2-19 libedata-book-1.2-25 libedata-cal-1.2-28 libedataserver-1.2-23 libedataserverui-1.2-2 squashfs-tools unattended-upgrades
    15 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 0 B/3,770 kB of archives.
    After this operation, 37.9 kB of additional disk space will be used.
    Do you want to continue? [Y/n] 

  introducimos "Y" y pulsamos intro


Configuración adicional
Antes de tener el entorno base deberemos instalar algún software adicional o realizar alguna configuración extra.


Idioma

Si en el terminal introducimos el guión "-" y nos presenta la barra "/" deberemos actualizar manualmente la configuración de idioma en "Settings/Region & Language":



    En la pestaña "Language" arrastramos hacia arriba el idioma "Español" instalado como primera opción:

    Y en la pestaña "Regional Formats" seleccionamos "Español"


Tras finalizar será necesario reiniciar el sistema para que los cambios surten efecto. Tras dicho reinicio, si abrimos el terminal (es aconsejable ponerlo añadirlo a Favoritos para que aparezca en la barra lateral) ya encontraremos las teclas habituales en su sitio.


curl

Para poder lanzar peticiones http a través de la línea de comandos instalaremos curl. Nos será necesario para lazar de forma rápida peticiones a servicios rest que hayamos creado y necesitemos probar.

Instalamos desde el terminal lanzando:
    sudo apt install curl

Validamos con "curl -v http://www.google.es". Nos tiene que devolver el contenido html de la página de google


ifconfig

Para poder lanzar el comando ifconfig (y otros) necesitaremos instalar el paquete "net-tools". Lanzamos en el terminal:
    sudo apt install net-tools

ahora ya podremos lanzar "ifconfig" obteniendo algo parecido a

    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.153.138  netmask 255.255.255.0  broadcast 192.168.153.255
    ...
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    ...

La que nos interesa es la interfaz "ens33". Más adelante fijaremos la ip para evitar cambios imprevistos.


Fijación de ip

Fijamos una ip para nuestro ubuntu virtualizado. En la vesión 18.04 se puede hacer mediante netplan. En nuestro caso creamos el fichero "sudo vi /etc/netplan/01-netcfg.yaml" e introducimos la siguiente configuración:


Actualizamos la configuración con 
    sudo netplan apply

y revisamos con "ifconfig"
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.153.201  netmask 255.255.255.0  broadcast 192.168.153.255
    ....

Volvemos a validar con "curl -v http://www.google.es" para verificar que la configuración es correcta y tenemos salida a internet.


ssh

Es posible que queramos acceder a nuestro Ubuntu vía ssh (putty, etc..) para poder subir ficheros (sftp), o simplemente para lanzar comandos sin necesidad de acceso al desktop. Para poder hacerlo nesitamos instalar openssh
    sudo apt install openssh-server

Tras su instalación se instala un daemon que podemos ver arrancado:
    userblog@ubuntu:~$ ps -ef | grep sshd
    root      11308      1  0 11:44 ?        00:00:00 /usr/sbin/sshd -D

Probamos el acceso con "ssh userblog@192.168.153.201" desde un terminal cygwin de nuestro windows (o con putty, etc...)




Final

De momento esto es todo. En las siguientes entradas iremos instalando y configurando todos los elementos necesarios para poder disponer de un entorno de laboratorio con Integración Continua.

No hay comentarios:

Publicar un comentario