Herramientas de usuario

Herramientas del sitio


clase:daw:daw:2eval:tema09

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:daw:daw:2eval:tema09 [2020/12/18 09:27]
admin
clase:daw:daw:2eval:tema09 [2025/02/13 09:33] (actual)
admin [Ejercicio 1]
Línea 7: Línea 7:
   * [[https://devopsti.wordpress.com/2014/09/26/integracion-continua-ci-entrega-continua-cd-y-despliegue-continuo-cd/|Integración continua (CI), Entrega continua (CD) y Despliegue Continuo (CD)]]   * [[https://devopsti.wordpress.com/2014/09/26/integracion-continua-ci-entrega-continua-cd-y-despliegue-continuo-cd/|Integración continua (CI), Entrega continua (CD) y Despliegue Continuo (CD)]]
   * [[https://geeks.ms/jorge/2019/02/25/integracion-entrega-y-despliegue-continuo-diferencias-y-similitudes/|Integración, entrega y despliegue continuo. Diferencias y similitudes]]   * [[https://geeks.ms/jorge/2019/02/25/integracion-entrega-y-despliegue-continuo-diferencias-y-similitudes/|Integración, entrega y despliegue continuo. Diferencias y similitudes]]
 +
 +Es despliegue continuo es desplegar las aplicaciones web lo más pronto posible.
 +
 +Hay varias formas de hacer eso, las 2 que vamos a comentar son:
 +  * [[https://www.jenkins.io/|Jenkins]]
 +  * [[https://github.com/features/actions|GitHub Actions]]
  
  
Línea 24: Línea 30:
 {{:clase:daw:daw:2eval:jenkins-is-the-way.png?100|}} {{:clase:daw:daw:2eval:the_mandalorian.jpg?100|}} {{:clase:daw:daw:2eval:jenkins-is-the-way.png?100|}} {{:clase:daw:daw:2eval:the_mandalorian.jpg?100|}}
  
-En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins  en la máquina real. 
  
-==== root por SSH ==== +===== GitHub Actions ===== 
-Antes que nada debemos permitir que se pueda acceder por SSH como root desde la máquina real. Esto lo vamos a necesitar ya que desde Jenkins vamos a ejecutar "npm run deploy" en la máquina real y para ello necesitamos ser root.+GitHub Actions que son acciones que se ejecutan cuando hay algún cambio en el repositorio o que incluso se pueden ejecutar como queramos (Al estilo de Jenkins) 
 + 
 + 
 +Para ello en el código fuente del proyecto Java , hay que añadir el fichero ''.github/workflows/desplegar.yml'' con el siguiente contenido:
  
-Para permitirlo hay que lanzar las siguientes órdenes:+<sxh yml> 
 +nameDesplegar
  
-  sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config +on: 
-  sudo systemctl restart ssh.service+  workflow_dispatch: 
 +  push: 
 +    branches: 
 +      - master
  
-Despues habrá que cambiar la contraseña a root con la siguiente orden:+jobs: 
 +  vpn_job: 
 +    runs-on: ubuntu-latest 
 +    steps: 
 +      - name: Checkout repo 
 +        uses: actions/checkout@v3 
 + 
  
-    sudo passwd root+      - name: Configurar la VPN 
 +        working-directory: .github/workflows 
 +        run: | 
 +          sudo apt-get update && sudo apt-get install -y openvpn openvpn-systemd-resolved 
 +          echo "${{ secrets.VPN_CA }}" | base64 --decode > ca.crt 
 +          echo "${{ secrets.VPN_USERNAME }}" > credenciales.txt 
 +          echo "${{ secrets.VPN_PASSWORD }}" >> credenciales.txt 
 +          sed -i "s/REPLACE_VPN_IP/${{ secrets.VPN_IP }}/" vpn-pve.conf 
 +          sed -i "s/REPLACE_VPN_PORT/${{ secrets.VPN_PORT }}/" vpn-pve.conf 
  
-<note warning> +      - name: Connect to VPN 
-En un entorno real o sin que haya un cortafuegos delante de la máquina, nunca deberíamos permitir que con root se pueda acceder a la máquina realSin embargo lo vamos nosotros a permitir ya que estamos en un entorno educativo. +        working-directory: .github/workflows       
-</note>+        run: sudo openvpn --config vpn-pve.conf --daemon --log openvpn.log 
  
-==== SSH2 Easy ==== +      - name: Wait for VPN to establish 
-Otra cosa que necesitamos hacer es instalar y configurar el plugin "SSH2 Easy" para poder acceder por SSH a la máquina real y así lanzar las órdenes en la máquina real.+        run: sleep 10
  
-  * Instalar en Jenkis el plugin "SSH2 Easy"+      - nameTest Connection 
-    * En Jenkins pulsa "Administrar Jenkins" ,  "Administrar Plugins" y "Todos los plugins" +        working-directory: .github/workflows 
-    * En el campo de búsqueda, escribe "SSH2 Easy" +        run: sudo cat openvpn.log 
-    * Marca el plugin "SSH2 Easy" y pulsa "Instalar sin reiniciar" +
-    * Espera unos segundos y pulsa en "Volver al inicio de la página" +
-\\ +
-\\+
  
 +      - name: Test Connection
 +        run: ping -c 2 192.168.59.104
  
-  * Configurar el plugin "SSH2 Easy"+      - nameRun remote script 
-    * Vuelve a "Administrar Jenkins" y pulsa en "Configurar el sistema" +        working-directory: .github/workflows       
-    * Ves al apartado de "Server Groups Center" +        env
-    * En el apartado "Server Group List" pulsa en Añadir y rellena lo siguiente +          SSH_PRIVATE_KEY${{ secrets.SERVER_ID_RSA }} 
-      * Group NameMáquina Real +        run: | 
-      * PasswordLa contraseña de root de tu máquina real+          echo "$SSH_PRIVATE_KEY./id_rsa 
-    * Pulsa en el botón "Guardarque hay al final de la página+          chmod 600 ./id_rsa 
-    * Vuelve a "Administrar Jenkins" y pulsa en "Configurar el sistema" +          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo rm -rf DesplegarFacturasDocker'         
-    * Ves al apartado de "Server Groups Center" +          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t  ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo git clone https://github.com/lgonzalezmislata/DesplegarFacturasDocker.git' 
-    * En el apartado "Server List" pulsa en Añadir y rellena lo siguiente: +          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t  ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo chmod 777 -R ./DesplegarFacturasDocker' 
-      * Server Group: Máquina real+          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t  ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'cd DesplegarFacturasDocker && sudo ./deploy.sh 2>&1' 
-      * Server Name: maquina-real +</sxh>
-      * Server IP: La IP de la máquina real.+
  
-==== Crear un Job ==== +Ahora al hacer cualquier cambio en la rama ''master'' se ejecutará nuestro script de despliegue
-Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real.+
  
-  * Pulsa en "Nueva Tarea" , escribe "Tarea de Prueba" , selecciona "Crear un proyecto de estilo libre" y luego pulsa  el botón "OK" +Puedes ver un ejemplo en [[https://github.com/lgonzalezmislata/Facturas/tree/master/.github/workflows]]
-  * Ves al apartado de "Ejecutar"en el desplegable de "Añadir una acción", selecciona "Remote shell". +
-  * El el campo "shell" , escribe+
  
-  mkdir /carpeta_desde_docker+===== Ejercicios =====
  
-  * Pulsa el botón de "Guardar". +===== Ejercicio 1 ===== 
-  * Pulsa en "Construir ahora" +Añade al repositorio de tu código fuente de Java una acción de //GitHhub Actions/que sea para desplegar.
-  * Si todo ha ido bien, en tu máquina real ahora tendrás la carpeta ''/carpeta_desde_docker''. Ya puedes borrarla.+
  
 +Se ejecutará:
 +  * Manualmente
 +  * Cuando haya un cambio en ''master''
  
clase/daw/daw/2eval/tema09.1608280079.txt.gz · Última modificación: 2020/12/18 09:27 por admin