Diferencia entre revisiones de «Servidor 16/17»

De Wiki de EGC
Saltar a: navegación, buscar
(Cosas a preguntar)
(Aspectos de gestión)
 
(No se muestran 25 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 +
= Enlaces relacionados =
 +
* https://github.com/AgoraUS-G1-1617/continuous-integration-agoraus_g1
 +
 +
= Aspectos de gestión =
 +
* Existe un solo rol (docker manager) y por lo tanto nombre de usuario y contraseña para cambiar la configuración de la máquina.
 +
* Lo ideal es que para poder tener desplegado el proyecto, el grupo haga una prueba en local del entorno que quiere desplegar y haga un pull request sobre el repositorio de integración continua que será probado por el docker manager a través de Jenkins y, si no hay problema, aceptado.
 +
* Eventualmente, cuando haya que desplegar una nueva versión estable de un subproyecto, el docker manager, a través de jenkins, manualmente, comprobará que la beta está bien desplegada y acto seguido desplegará la estable.
 +
 
= Cosas a preguntar =
 
= Cosas a preguntar =
 
* ¿Accceso a cualquier sitio dentro de egc.us.es mediante clave? No supondría mucho trabajo usar la misma clave para todos
 
* ¿Accceso a cualquier sitio dentro de egc.us.es mediante clave? No supondría mucho trabajo usar la misma clave para todos
Línea 4: Línea 12:
 
** Mediante http://www.duckdns.org -> http://egc.duckdns.org
 
** Mediante http://www.duckdns.org -> http://egc.duckdns.org
 
** Pedir cambio en el dns de la facultad (que resuelva los dominios *.egc.us.es como egc.us.es)
 
** Pedir cambio en el dns de la facultad (que resuelva los dominios *.egc.us.es como egc.us.es)
 
= Próximos pasos =
 
# Como desplegar proyectos tomcat en un docker que se genere automáticamente
 
# Como lanzar pruebas de un proyecto maven en un docker que se genere automáticamente
 
 
  
 
= Aplicando seguridad a la máquina =
 
= Aplicando seguridad a la máquina =
Línea 60: Línea 63:
 
La idea a seguir sería la plasmada en este artículo pero necesita modificaciones: https://blog.philipphauer.de/tutorial-continuous-delivery-with-docker-jenkins/
 
La idea a seguir sería la plasmada en este artículo pero necesita modificaciones: https://blog.philipphauer.de/tutorial-continuous-delivery-with-docker-jenkins/
  
== Idea inicial ==
+
Toda la info en el '''REPO''': https://github.com/ManuelLR/continuous-delivery-integration
# Desplegar proxy-inverso
 
# Desplegar Let's Encrypt
 
# ¿Desplegar registry?
 
# Desplegar jenkins master
 
# Configurar proyecto en jenkins (varios y tal)
 
-- Tras cada modificación --
 
# Desplegar dockers necesarios para pasar los tests
 
# Ejecutar scripts preparación dockers
 
# Pasar los tests
 
# Si los pasa, desplegar dockers de despliegue (docker beta)
 
# Ejecutar scripts preparación dockers
 
# Desplegar en dockers beta un war (que sea una copia del war así evitamos problemas mientras se lanzan test del anterior)
 
-- Para despliegue estable --
 
# Se despliegan los dockers estables
 
# Ejecutar scripts preparación dockers
 
# Desplegar en dockers estable un wat (que sea una copia del war del docker beta)
 
 
 
== Posibilidades ==
 
* Es posible desplegar y eliminar contenedores desde dentro del contenedor jenkins.
 
 
 
== Configuración jenkins master ==
 
=== Plugins ===
 
* docker-plugin -> https://github.com/jenkinsci/docker-plugin
 
 
 
==== Configuración para usar docker-plugin ====
 
Para configurar dicho plugin habría que conectarse a "unix:///var/run/docker.sock" pero, puesto que existe algún fallo en java, este método no es posible. Por ello se ha tenido que habilitar un puerto al que conectarse. En el host crear el archivo y carpeta "/etc/systemd/system/docker.service.d/docker.conf" y añadir:
 
  
 +
= Otras herramientas =
 +
== Ampliar partición ==
 +
Las particiones usadas son de tipo lvm por lo que se pueden agrandar en caliente. Actualmente en la máquina se están usando 25G de 65G disponibles por lo que se puede ampliar. Para ello es necesario ejecutar el siguiente comando:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
[Service]
+
sudo lvextend -L +10G -r /dev/centos_pruebasprocura/root
ExecStart=
 
ExecStart=/usr/bin/dockerd --tls=false -H tcp://192.168.20.84:4243 -H unix:///var/run/docker.sock
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Posteriormente ejecutar "sudo systemctl daemon-reload" y "sudo systemctl restart docker" con el fin de que cargue la configuración.
 
 
Está configuración no es totalmente segura puesto que no requiere autenticación pero al limitarlo solo al equipo local el riesgo se minimiza aunque no se disipa.
 
 
(Fuente: https://docs.docker.com/engine/admin/#centos--red-hat-enterprise-linux--fedora)
 
 
=== Docker ===
 
* Administrar Jenkins > Configurar el sistema > Añadir una nueva nube (abajo) > Docker
 
** Docker Name: docker_on_localhost
 
** Docker URL: tcp://192.168.20.84:4243
 
** Probamos la configuración en el botón "test configuration" y anotamos correctamente el "Docker API Version"
 
** Connection Timeout: 5
 
** Read Timeout: 5
 
 
= Otras herramientas =
 
 
== Varias sesiones con una misma conexión ==
 
== Varias sesiones con una misma conexión ==
 
Para ello usaremos el programa screen.
 
Para ello usaremos el programa screen.
Línea 131: Línea 94:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
== Autocompletado en bash para comandos docker [no funciona] ==
 +
curl -L https://raw.githubusercontent.com/docker/docker/$(docker version --short)/contrib/completion/bash/docker > /etc/bash_completion.d/docker
  
 +
https://docs.docker.com/compose/completion/
  
 +
= Configuraciones proyectos =
 +
== Deliberations ==
 +
* docker para make: https://hub.docker.com/r/mzagar/jenkins-slave-jdk-maven-git/
  
 
= Tiempo empleado =
 
= Tiempo empleado =
Línea 160: Línea 129:
 
|-
 
|-
 
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 31/10/2016 || 21:00 || 21:35 || 10:25 || Decisión cambio de plugin de docker a "Docker Slaves Plugin" (Dockins)
 
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 31/10/2016 || 21:00 || 21:35 || 10:25 || Decisión cambio de plugin de docker a "Docker Slaves Plugin" (Dockins)
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 02/11/2016 || 10:42 || 11:33 || 11:16 || Intentando configurar plugin "Docker Slaves Plugin" (Dockins)
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 02/11/2016 || 15:48 || 17:24 || 12:52 || Vuelta a plugin docker-jenkins y buscando alternativas al problema
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 02/11/2016 || 17:55 || 18:33 || 13:30 || Vuelta a plugin docker-jenkins y buscando alternativas al problema
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 02/11/2016 || 19:30 || 21:05 || 15:05 || Vuelta a plugin docker-jenkins y buscando alternativas al problema
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 02/11/2016 || 21:45 || 22:13 || 15:33 || Vuelta a plugin docker-jenkins y buscando alternativas al problema
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 03/11/2016 || 11:16 || 12:42 || 16:59 || Buscando y configurando docker jenkins_slave
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 03/11/2016 || 13:04 || 13:58 || 17:53 || Buscando y configurando docker jenkins_slave
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 08/11/2016 || 13:04 || 13:41 || 18:30 || Buscando y configurando docker jenkins_slave
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 08/11/2016 || 14:44 || 15:26 || 19:12 || Configurando maven y conectando al slave
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 08/11/2016 || 16:50 || 17:39 || 20:01 || Creación scripts beta.sh para G1-Deliberations
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 09/11/2016 || 15:09 || 17:04 || 21:56 || Creación scripts beta.sh para G1-Deliberations
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 09/11/2016 || 19:26 || 21:31 || 24:01 || Buscando solución https tomcat
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 10/11/2016 || 07:43 || 10:06 || 26:24 || Buscando solución https tomcat
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 10/11/2016 || 13:33 || 14:58 || 27:49 || Buscando solución https tomcat
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 10/11/2016 || 16:55 || 18:15 || 29:09 || Buscando solución https tomcat
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 12/11/2016 || 17:43 || 18:43 || 30:09 || Configurando tomcat y mysql sin https
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 12/11/2016 || 22:50 || 24:21 || 31:40 || Corrigiendo errores provocados en contenedores por https tomcat
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 13/11/2016 || 08:44 || 10:40 || 33:36 || Realizar documentación del proyecto realizado
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 13/11/2016 || 11:00 || 11:43 || 34:19 || Apuntar horas trabajadas desde toggl
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 16/11/2016 || 10:00 || 10:20 || 34:39 || Ampliar particiones servidor
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 19/11/2016 || 18:24 || 19:46 || 36:01 || Realización presentación para explicar el funcionamiento
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 21/11/2016 || 17:44 || 19:21 || 37:38 || Realización presentación para explicar el funcionamiento
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 21/11/2016 || 22:00 || 23:31 || 39:09 || Realización presentación para explicar el funcionamiento
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 22/11/2016 || 00:00 || 01:16 || 40:25 || Realización presentación para explicar el funcionamiento
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 22/11/2016 || 12:40 || 14:40 || 42:25 || Reunión con integradores
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 22/11/2016 || 16:00 || 20:21 || 46:46 || Integración Cabina de votaciones
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 23/11/2016 || 16:20 || 20:05 || 50:31 || Integración Autenticación_B y ADMCensos
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 28/11/2016 || 09:00 || 15:00 || 55:31 || Integración ADMCensos, CadminVotaciones y Autenticación_B
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 28/11/2016 || 19:30 || 21:00 || 57:01 || Integración Autenticación_B (solucionado problema conexión con db)
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 07/12/2016 || 17:50 || 18:13 || 57:24 || Integración Recuento
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 09/12/2016 || 11:00 || 12:00 || 58:24 || Integración Autenticación_B
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || 14/12/2016 || 15:00 || 16:07 || 59:31 || Integración Autenticación_A
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || ?¿ || ?¿ || ?¿ || ?¿ || Solución Issue conexión entre las aplicaciones desplegadas
 +
|-
 +
| [[Usuario:Manloprui1|Manuel López Ruiz]] || ?¿ || ?¿ || ?¿ || ?¿ || Solución Issue hora servidor
 
|-
 
|-
 
|}
 
|}

Revisión actual del 13:24 24 mar 2017

Enlaces relacionados

Aspectos de gestión

  • Existe un solo rol (docker manager) y por lo tanto nombre de usuario y contraseña para cambiar la configuración de la máquina.
  • Lo ideal es que para poder tener desplegado el proyecto, el grupo haga una prueba en local del entorno que quiere desplegar y haga un pull request sobre el repositorio de integración continua que será probado por el docker manager a través de Jenkins y, si no hay problema, aceptado.
  • Eventualmente, cuando haya que desplegar una nueva versión estable de un subproyecto, el docker manager, a través de jenkins, manualmente, comprobará que la beta está bien desplegada y acto seguido desplegará la estable.

Cosas a preguntar

  • ¿Accceso a cualquier sitio dentro de egc.us.es mediante clave? No supondría mucho trabajo usar la misma clave para todos
  • Limitación de subdominios, Propuestas de mejora

Aplicando seguridad a la máquina

Creación de usuarios y dando permisos sudo

Con el fin de securizar el sistema se creará un usuario distinto de root con permisos de sudo:

useradd -m -g users -G sudo,docker -s /bin/bash egcuser

y asignamos una clave:

passwd egcuser


Securizando SSH

Para ello lo más importante es cerrar el acceso para el usuario root con el fin de evitar que, con ataques de fuerza bruta, se consiga acceder puesto que ya se sabe el usuario con antelación.

Modificaremos el archivo /etc/ssh/sshd_config cambiando el siguiente valor:

PermitRootLogin no

Eliminación elementos innecesarios

Al encontrar elementos innecesarios se eliminaron (esta orden no se ejecuta directamente si no se va eliminado paquete a paquete):

yum groups remove gnome-desktop Xfce

yum remove xfce4-* xorg-x11* xfwm4* libreoffice* alsa-* pulseaudio-* gtk* adwaita-* desktop-file-utils* gnome-* cups-* anaconda-*

Ayudado por sudo yum list installed | less


NetworkManager ModemManager anaconda avahi bacula bluez bzip2 colord cracklib dejavu glib*

Con todo esto conseguí reducir el espacio ocupado a 4'5 G quedando libres 11 G. Inicialmente el espacio libre no llegaba a 2 G

Eliminar antiguos dockers

Se encontrarón imágenes antiguas que ocupaban espacio innecesario y se decidieron eliminar según lo indicado en esta fuente: http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/

Uso básico docker

  • Listart dockers: docker ps -a
  • Listar imágenes locales: docker images

Despliegue continuo

La idea a seguir sería la plasmada en este artículo pero necesita modificaciones: https://blog.philipphauer.de/tutorial-continuous-delivery-with-docker-jenkins/

Toda la info en el REPO: https://github.com/ManuelLR/continuous-delivery-integration

Otras herramientas

Ampliar partición

Las particiones usadas son de tipo lvm por lo que se pueden agrandar en caliente. Actualmente en la máquina se están usando 25G de 65G disponibles por lo que se puede ampliar. Para ello es necesario ejecutar el siguiente comando:

sudo lvextend -L +10G -r /dev/centos_pruebasprocura/root

Varias sesiones con una misma conexión

Para ello usaremos el programa screen.

Uso básico:

  • Conexión: screen -S tuSesion
  • Reconexión: screen -R tuSesion
  • Desconexión: [ctrl + A] + D
  • Crear sesión virtual: [ctrl + A] + C

Editor de texto

El usado habitualmente es vim

Monitor del equipo

El usado habitualmente es htop

Espacio usado por las subcarpetas de la carpeta actual

sudo bash -c "du -shc --time *" | sort -h -r

Autocompletado en bash para comandos docker [no funciona]

curl -L https://raw.githubusercontent.com/docker/docker/$(docker version --short)/contrib/completion/bash/docker > /etc/bash_completion.d/docker

https://docs.docker.com/compose/completion/

Configuraciones proyectos

Deliberations

Tiempo empleado

Alumno Dia Inicio Fin Acumulado Motivo
Manuel López Ruiz 28/10/2016 16:10 18:15 02:05 Eliminación y securización máquina
Manuel López Ruiz 28/10/2016 21:35 22:00 02:30 Eliminación y securización máquina
Manuel López Ruiz 29/10/2016 15:15 16:00 03:15 Creación scripts Let's Enccryot y proxy inverso
Manuel López Ruiz 29/10/2016 16:30 17:35 04:10 Prueba de contenedores y detección de errores
Manuel López Ruiz 30/10/2016 19:45 20:45 05:10 Prueba compilación proyectos y prueba despliegue contenedores
Manuel López Ruiz 31/10/2016 07:30 08:20 06:00 Búsqueda información lanzar pruebas en docker distinto a jenkins master
Manuel López Ruiz 31/10/2016 14:35 16:00 07:25 Creación script "Acceptance-test-stage"
Manuel López Ruiz 31/10/2016 16:56 19:21 09:50 Problema plugin docker-jenkins con la conexión docker.sock (NO SOLUCIONADO)
Manuel López Ruiz 31/10/2016 21:00 21:35 10:25 Decisión cambio de plugin de docker a "Docker Slaves Plugin" (Dockins)
Manuel López Ruiz 02/11/2016 10:42 11:33 11:16 Intentando configurar plugin "Docker Slaves Plugin" (Dockins)
Manuel López Ruiz 02/11/2016 15:48 17:24 12:52 Vuelta a plugin docker-jenkins y buscando alternativas al problema
Manuel López Ruiz 02/11/2016 17:55 18:33 13:30 Vuelta a plugin docker-jenkins y buscando alternativas al problema
Manuel López Ruiz 02/11/2016 19:30 21:05 15:05 Vuelta a plugin docker-jenkins y buscando alternativas al problema
Manuel López Ruiz 02/11/2016 21:45 22:13 15:33 Vuelta a plugin docker-jenkins y buscando alternativas al problema
Manuel López Ruiz 03/11/2016 11:16 12:42 16:59 Buscando y configurando docker jenkins_slave
Manuel López Ruiz 03/11/2016 13:04 13:58 17:53 Buscando y configurando docker jenkins_slave
Manuel López Ruiz 08/11/2016 13:04 13:41 18:30 Buscando y configurando docker jenkins_slave
Manuel López Ruiz 08/11/2016 14:44 15:26 19:12 Configurando maven y conectando al slave
Manuel López Ruiz 08/11/2016 16:50 17:39 20:01 Creación scripts beta.sh para G1-Deliberations
Manuel López Ruiz 09/11/2016 15:09 17:04 21:56 Creación scripts beta.sh para G1-Deliberations
Manuel López Ruiz 09/11/2016 19:26 21:31 24:01 Buscando solución https tomcat
Manuel López Ruiz 10/11/2016 07:43 10:06 26:24 Buscando solución https tomcat
Manuel López Ruiz 10/11/2016 13:33 14:58 27:49 Buscando solución https tomcat
Manuel López Ruiz 10/11/2016 16:55 18:15 29:09 Buscando solución https tomcat
Manuel López Ruiz 12/11/2016 17:43 18:43 30:09 Configurando tomcat y mysql sin https
Manuel López Ruiz 12/11/2016 22:50 24:21 31:40 Corrigiendo errores provocados en contenedores por https tomcat
Manuel López Ruiz 13/11/2016 08:44 10:40 33:36 Realizar documentación del proyecto realizado
Manuel López Ruiz 13/11/2016 11:00 11:43 34:19 Apuntar horas trabajadas desde toggl
Manuel López Ruiz 16/11/2016 10:00 10:20 34:39 Ampliar particiones servidor
Manuel López Ruiz 19/11/2016 18:24 19:46 36:01 Realización presentación para explicar el funcionamiento
Manuel López Ruiz 21/11/2016 17:44 19:21 37:38 Realización presentación para explicar el funcionamiento
Manuel López Ruiz 21/11/2016 22:00 23:31 39:09 Realización presentación para explicar el funcionamiento
Manuel López Ruiz 22/11/2016 00:00 01:16 40:25 Realización presentación para explicar el funcionamiento
Manuel López Ruiz 22/11/2016 12:40 14:40 42:25 Reunión con integradores
Manuel López Ruiz 22/11/2016 16:00 20:21 46:46 Integración Cabina de votaciones
Manuel López Ruiz 23/11/2016 16:20 20:05 50:31 Integración Autenticación_B y ADMCensos
Manuel López Ruiz 28/11/2016 09:00 15:00 55:31 Integración ADMCensos, CadminVotaciones y Autenticación_B
Manuel López Ruiz 28/11/2016 19:30 21:00 57:01 Integración Autenticación_B (solucionado problema conexión con db)
Manuel López Ruiz 07/12/2016 17:50 18:13 57:24 Integración Recuento
Manuel López Ruiz 09/12/2016 11:00 12:00 58:24 Integración Autenticación_B
Manuel López Ruiz 14/12/2016 15:00 16:07 59:31 Integración Autenticación_A
Manuel López Ruiz  ?¿  ?¿  ?¿  ?¿ Solución Issue conexión entre las aplicaciones desplegadas
Manuel López Ruiz  ?¿  ?¿  ?¿  ?¿ Solución Issue hora servidor

Referencias