Cómo conectar Jenkins Master con Slave vía SSH
Clase 14 de 15 • Curso Básico de Jenkins
Contenido del curso
Clase 14 de 15 • Curso Básico de Jenkins
Contenido del curso
Adan Virrey
Geovanny Javier Páez García
Nelson David Acevedo Osorio
Diego Andrés Beltrán Garavito
Augusto Gonzalez
Juan David Cajamarca Acuña
Paúl Terán
Usuario anónimo
david carvajal
Paul Vazquez Cervantes
Hector Eduardo Alarcon Sanchez
Diego Andrés Beltrán Garavito
Germain Rafael Bueno Taguariparo
Diego Forero
Hector Fabio Granada Romero
Aaron Contreras Garibay
Jose Elver Arturo Tirado
Bryan Antonio Alvarado Villalobos
Juan Jose Vega
Cristobal Vega
Alejandro León Mora
Sleyder Zuleta
Alejandro León Mora
Victor Muchica Farfan
Sebastián Córdoba
NAHUEL GABIOUD FERNANDEZ
Paul Vazquez Cervantes
Tanisha Salazar
Jonathan Fernando Santana Quispillo
Nicolas Lopez
Victor Muchica Farfan
Jorge Ricardo SILVA ZUÑIGA
Sergio Sanchez
cat .ssh/id_rsa.pub copy key adduser jenkins apt-getupdate apt-get install openjdk-8-jdk wget gnupg git vim mkdir /var/jenkins/ chown jenkins:jenkins /var/jenkins sudo su jenkins cd mkdir .ssh vim .ssh/authorized_keys paste key
gracias
Les recuerdo que las nuevas versiones de Jenkins requieren Java 11 o Java 17, en la instalacion inicial deje mi comentario del articulo que lo indica, por si les falla cuando intenten con java 8, saludos
Tuve un problema con la carpeta .ssh tanto en el usuario root como en el usuario jenkins.
En mi caso particular fue porque lo hice en una instancia de AWS que ya tiene la carpeta .ssh por ende no tenia permisos.
Asi que tuve que darle permisos necesarios con los siguientes comandos:
sudo chown -R jenkins:jenkins .ssh chmod 700 .ssh
Y ya con eso pude agregar mi nueva llave ssh.
Dato a tener en cuenta.
Respondiendo la duda de @david carvajal y algunos compañeros que están interesados en hacer la conexión entre el server y slave (con Docker); aquí les comparto un tutorial que de seguro les servirá:
1.- (Levantar Jenkins Server con Docker) => tutorial-jenkins-ngrok-github_webhook
2.- (Levantar Jenkins Server y Slave (agent)):
Pueden crear otro docker-compose o sobrescribir el que ya tienen con esta nueva implementación:
NOTA: El Dockerfile sigue siendo el mismo del tutorial.
version: '3.8' services: jenkins: container_name: jenkins restart: always build: . ports: - "8080:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home agent: container_name: agent image: jenkins/ssh-agent:latest-jdk11 privileged: true user: root expose: - 22 environment: # Aqui pueden crear un .env en donde pasarán su clave pública del jenkins-agent (generada en la máquina anfitriona) o pueden pasarla directamente (sin comillas) JENKINS_AGENT_SSH_PUBKEY: ${SSH_PUB_KEY} volumes: jenkins_home: driver: local
Levantar los servicios $ docker-compose up -d
Comprobar si el agente y el master se escuchan entre sí $ localhost:50000
Si tienen un error al dar un $ docker-compose down $ docker-compose down --remove-orphans
yo lo hice con docker :) funciona igual
Seria genial que pudieras ayudar a los que traramos de hacerlo en Dcoker
no pos chido bro.
Terminal Jenkins
cat .ssh/id_rsa.pub
ver clave pública en el archivo id_rsa.pub copiar la clave pública sin el usuario del final para ponerla en el Slave
Terminal slave pegar la clave pública de jenkins para conservarla
adduser jenkins
indicar password la demás info en blanco confirmar que la info es correcta Y/n
apt-getupdate apt-get install openjdk-8-jdk wget gnupg git vim
similar a la instalación previa instalar java 8 vim para modificar algunos files
mkdir /var/jenkins/
creamos un directorio donde Jenkins va a trabajar cuando máster se conecta a slave, es el workspace
chown jenkins:jenkins /var/jenkins
decimos que el dueño de ese directorio es Jenkins no el root con el que estamos creando el directorio usuario:grupo
sudo su jenkins
nos metemos en el usuario Jenkins
cd
vamos a root directory
ls -al
verificamos si está creado el folder ssh
mkdir .ssh
creamos el folder
vim .ssh/authorized_keys
dentro de ssh se añade el documento con la public key es el que le permite a Jenkins autenticarse en la instancia con su public y private key pegar el key que habíamos copiado previamente Con esto se termina la configuración del Slave
los scripts no están dsiponibles como dice el video
Gracias vamos a revisar y publicar los enlaces y archivos lo más pronto posible.
los scripts a un no estan disponibles
Mostro su llave privada :o que rudo
Tengo un servidor en una laptop vieja y voy a conectarla a una imagen de jenkins que tengo en docker desktop
Me podrías explicar como lo hiciste Quiero hacer algo parecido?
Si creamos otra máquina en DigitalOcean o AWS para el slave, en un caso práctico, ¿está máquina solamente servirá para hacerla de slave?, ¿será posible darle otro uso? /hablando de un caso real) :thinking:
La idea es tener los agente solo para realizar construcción. En el caso de AWS no es nesario tener la instancia creada previamente, estos se pueden crear a demanda con el plugin https://plugins.jenkins.io/ec2/
no se debe instalar jenkins en el slave?
Jenkins copia los jar necesario para que corran en el slave, por lo cual solo sería necesario tener Java instalado en el agente. Hoy en dia puedes tener otro tipo de agentes como docker, instancias ec2 creadas a demanda por ejemplo
no es necesario, solo con los paquetes minimos indicados corren los jobs
Repositorio del Curso:
Hola! Estoy teniendo un problema para lanzar el agente desde el master. Estoy haciendo la conexión con usuario y contraseña.
Este es el error que me tira:
[09/07/21 10:59:37] [SSH] Remote file system root /var/jenkins does not exist. Will try to create it... Failed to create /var/jenkins [09/07/21 10:59:37] [SSH] Copying latest remoting.jar... java.io.IOException: Could not copy remoting.jar into '/var/jenkins' on agent
Alguien sabe por qué puede ser? Los permisos del puerto de SSH están habilitados. El directorio está creado y asignado con los permisos al usuario jenkins.
Algo que me parece raro es que en el log no muestra el usuario con el que se conecta
[SSH] The remote user's environment is:
Muchas gracias!
Como se puede hacer eso desde un docker-compose ?
Hola, a manera de ejercicio quería configurar el slave en la misma máquina pero no me funciona, no se conecta. ¿Qué tuviera que hacer?
Se haría el mismo proceso con java 11?. Por lo que mencione en otra clase que jenkins si reconoce java 11 ahora.
Disculpen, me aparece cat: .ssh: No such file or directory, donde es que se instala jenkins predeterminado? como puedo buscar la carpeta?
No existe el archivo cat .ssh/id_rsa.pub
En las clases anteriores Yamil explica como generar la llave
gracias por el curso esta interesante sin embargo estoy bloqueado en dos puntos:
1) Debo de crear el usuario jenkins tanto en el master como en el node?
2) la creacion del archivo .ssh deben de crearse en /home/jenkins/.ssh tanto en el master como en el node ?
gracias
Ahora un "slave" se llaman "agent", info aca: