Skip to content

proxyfail/Desafio1-boorcamp_devops

Repository files navigation

Desafio1-boorcamp_devops

En el diagrama "altaDeUsuario.excalidraw", graficamos la creacion de un usuario de Linux con los datos: id unico, nombre y apellido, departamento. Estos datos una vez creados son resguardados para posteriormente ser enviados al usuario final.

Para poder realizar este desafio inicialmente tendremos que realizar los siguientes puntos en el orden que se indica a continuacion:

1- Crear una cuenta de Github en el siguiente link: https://github.com/ Crear un nuevo repositorio del tipo publico para esta prueba.

2- Instalar Git, para lo cual utilizaremos el comando 'sudo apt install git' En el siguiente link: https://github.com/proxyfail/git encontramos una guia de configuracion de git.

3- Instalar Jenkins En el siguiente enlace tenemos una guia de instalacion y configuracion: https://www.jenkins.io/doc/book/installing/linux/

4- Instalar Ngrok Crear una cuenta en el sitio: https://ngrok.com/ A continuacion tenemos una guia de instalacion y configuracion de Ngrok: https://ngrok.com/downloads/linux

5 -En el siguiente video tenemos un ejemplo de como poder utilizar el archivo 'altaDeUsuarios.groovy' dentro de Jenkins para poder crear un pipeline con este y ademas configurar las herramientas vincular las herramientas del punto 1, 2, 3 y 4: https://www.youtube.com/watch?v=oJsIib4FVt8

Script de alta de usuario:

El archivo "altaDeUsuarios.groovy" es un script de pipeline de Jenkins escrito en Groovy. Su propósito es crear un nuevo usuario en un sistema Linux, generar una contraseña temporal para el usuario, mostrar la contraseña temporal y enviarla por correo electrónico. A continuación, se explica el funcionamiento del archivo:

  1. Definición del pipeline:
    pipeline {
        agent any}

El pipeline se ejecuta en cualquier agente disponible.

  1. Parámetros de entrada:
    parameters {
        string(name: 'LOGIN', defaultValue: '', description: 'Login del usuario')
        string(name: 'NOMBRE', defaultValue: '', description: 'Nombre del usuario')
        string(name: 'APELLIDO', defaultValue: '', description: 'Apellido del usuario')
        string(name: 'DEPARTAMENTO', defaultValue: '', description: 'Departamento del usuario')
    }

Se definen cuatro parámetros de entrada: LOGIN, NOMBRE, APELLIDO y DEPARTAMENTO, que son necesarios para crear el usuario.

  1. Etapas del pipeline:

    • Crear Usuario:

      stage('Crear Usuario') {
          steps {
              script {
                  def login = params.LOGIN
                  def nombre = params.NOMBRE
                  def apellido = params.APELLIDO
                  def departamento = params.DEPARTAMENTO
                  def password = UUID.randomUUID().toString().substring(0, 8)
                  
                  // Crear el usuario en Linux
                  sh """
                  sudo useradd -m -c "${nombre} ${apellido}, ${departamento}" -s /bin/bash ${login}
                  echo "${login}:${password}" | sudo chpasswd
                  sudo chage -d 0 ${login}
                  """
                  
                  // Guardar la contraseña temporal
                  writeFile file: "${login}_password.txt", text: password
              }
          }
      }

      En esta etapa, se crean variables para los parámetros de entrada y se genera una contraseña temporal. Luego, se ejecuta un comando shell para crear el usuario en Linux, asignarle la contraseña temporal y forzar el cambio de contraseña en el próximo inicio de sesión. Finalmente, se guarda la contraseña temporal en un archivo.

    • Mostrar Contraseña Temporal:

      stage('Mostrar Contraseña Temporal') {
          steps {
              script {
                  def login = params.LOGIN
                  def password = readFile("${login}_password.txt").trim()
                  echo "La contraseña temporal para el usuario ${login} es: ${password}"
              }
          }
      }

      En esta etapa, se lee la contraseña temporal desde el archivo y se muestra en la consola de Jenkins.

  2. Post-actions:

    post {
        always {
            script {
                def login = params.LOGIN
                // Enviar la contraseña temporal por correo electrónico
                emailext subject: "Contraseña temporal para ${login}",
                         body: "La contraseña temporal para el usuario ${login} es: ${readFile("${login}_password.txt").trim()}",
                         to: '[email protected]'
            }
        }
    }

Después de que el pipeline se ejecuta, siempre se envía un correo electrónico con la contraseña temporal al usuario especificado.

Este pipeline automatiza el proceso de creación de usuarios en un sistema Linux, asegurando que cada usuario reciba una contraseña temporal de manera segura.

En la carpeta de "Evidencias" se guardaron las capturas de pantalla que evidencian el correcto funcionamiento del pipeline, ademas se encuentra tambien un log de la ejecucion del pipeline.

Por ultimo, dentro del archivo "log.txt", se encuentra la evidencia de la salida por consola del pipeline corriendo por Jenkins. Adjunto ademas capturas de pantalla de la ejecucion.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages