Puede almacenar sus claves de AWS de forma segura en las credenciales de Jenkins. Si desea interactuar con AWS desde su servidor Jenkins, puede almacenar sus claves de usuario de IAM de AWS de forma segura en Jenkins en lugar de utilizar abiertamente las claves en su canalización de Jenkins. El complemento de Jenkins "CloudBees AWS Credentials" permite almacenar las credenciales de usuario de AWS IAM dentro de la API de credenciales de Jenkins. Luego, podemos usar estas credenciales en nuestra canalización e inyectarlas en la canalización con el paso "withAWS". Para usar el paso "withAWS", necesitamos instalar el complemento "AWS Steps Plugin".
En este artículo, instalaremos el complemento "CloudBees AWS Credentials" y almacenaremos la clave secreta y la clave de acceso del usuario de AWS IAM en Jenkins usando este complemento. Instalaremos el "Complemento de pasos de AWS" para que podamos usar "awsStep" para inyectar la credencial que creamos. Realizaremos la operación Cargar objeto y Descargar objeto de S3 desde dentro de la canalización para probar la credencial que creamos.
Requisitos previos
- Usuario de AWS IAM con su clave de acceso y clave secreta con acceso de lectura/escritura a S3 Buckets (haga clic aquí para obtener información sobre cómo crear un usuario de IAM en AWS).
- Cubo de S3 (haga clic aquí para aprender a crear un cubo de S3 en AWS).
- Jenkins Server (Busque "¿Cómo instalar Jenkins usando un archivo war en una instancia de AWS EC2 Ubuntu?" para aprender a crear un Jenkins Server)
¿Qué haremos?
- Instale el complemento de credenciales de AWS de Cloudbees.
- Almacene las claves secretas y de acceso de AWS en las credenciales de Jenkins.
- Instalar complemento de pasos de AWS.
- Cree una canalización y pruebe la credencial que creamos.
Instalar el complemento de credenciales de Cloudbees AWS
Inicie sesión en Jenkins en http://
Aquí tengo http://52.87.233.129:8080/jenkins/
Verá el tablero de la siguiente manera. Haga clic en "Administrar Jenkins" en el panel izquierdo.
Aquí, en "Configuración del sistema", haga clic en "Administrar complementos" para instalar el complemento necesario.
Verá 4 pestañas, Actualizaciones, Disponible, Instalado y Avanzado. Haga clic en la pestaña "Disponible" para buscar el complemento.
Busque "administrador secreto de cloudbees" en el cuadro de búsqueda debajo de la pestaña "Disponible". Marque la casilla de verificación del resultado del complemento "Cloudbees AWS Credentials" que obtiene y haga clic en "Instalar sin reiniciar" para instalar el complemento sin reiniciar Jenkins.
Una vez que el complemento esté instalado, recibirá el mensaje "Éxito" de la siguiente manera.
Almacenar las claves secretas y de acceso de AWS en las credenciales de Jenkins
Ahora estamos listos para almacenar las credenciales de AWS.
Vuelva al panel principal y haga clic en "Administrar Jenkins".
Ahora, haga clic en "Administrar credenciales" en "Seguridad" para almacenar la clave secreta y la clave de acceso de AWS.
Haga clic en "global" en "Tiendas en el ámbito de Jenkins" --> "Agregar credenciales".
En esta página, podrá almacenar los secretos. Haga clic en el menú desplegable Tipo y seleccione AWS. Especifique un nombre para los secretos, descripción, ID de clave de acceso y clave de acceso secreta. Haga clic en Aceptar para almacenar los secretos.
Puede ver que el Secreto ya está disponible.
Instalar complemento de pasos de AWS
El siguiente paso es instalar el complemento "Pipeline AWS Steps". Vuelva al panel principal, haga clic en Administrar Jenkins --> Administrar complementos.
En la pestaña "Disponible", busque "AWS Steps". Seleccione el complemento "Pipeline:AWS Steps" y haga clic en "Instalar sin reiniciar". Esto instalará el complemento sin reiniciar Jenkins.
Una vez que el complemento se haya instalado correctamente, aparecerá el siguiente mensaje de éxito.
Cree una canalización y pruebe la credencial que creamos.
Ahora, vamos a crear un nuevo trabajo. En este trabajo, intentaremos usar el secreto que creamos.
Vuelva al panel principal, haga clic en "Nuevos elementos".
Asigne un nombre al trabajo y seleccione "Pipeline" como tipo de trabajo. Haga clic en "Aceptar", esto creará un trabajo de tipo Pipeline.
Haga clic en "Crear disparadores", desplácese hacia abajo hasta "Pipeline", seleccione "Script de Pipeline" y agregue el siguiente código en el cuadro de texto.
Esta es una canalización con 1 etapa "probar las credenciales de AWS". En este paso, usaremos "withAWS" y especificaremos aquí nuestro nombre secreto. Dentro de él, crearemos un archivo de muestra "hello.txt" con un mensaje "hello Jenkins". Luego, este archivo se cargará en el depósito S3 "devopslee" en mi cuenta.
Debe especificar el nombre de su depósito en lugar de devopslee.
Para ver si el archivo está cargado, intentaremos descargarlo como "downloadedHello.txt" e imprimirlo usando el comando "cat".
Si todos estos pasos fueron exitosos, significa que pudimos usar correctamente nuestra clave secreta y nuestra clave de acceso con la credencial que creamos.
pipeline { agent any stages { stage('test AWS credentials') { steps { withAWS(credentials: 'jenkins-test-user', region: 'us-east-1') { sh 'echo "hello Jenkins">hello.txt' s3Upload acl: 'Private', bucket: 'devopslee', file: 'hello.txt' s3Download bucket: 'devopslee', file: 'downloadedHello.txt', path: 'hello.txt' sh 'cat downloadedHello.txt' } } } } }
Ahora, para probar la canalización anterior, vaya a la canalización y haga clic en "Crear ahora". Esto ejecutará la canalización.
Haga clic en Historial de compilación --> Salida de la consola.
Aquí, en la salida de la consola, puede ver que el archivo se creó, cargó, descargó y leyó correctamente.
Esto significa que pudimos autenticar con éxito el depósito S3 usando la clave de acceso y el secreto que almacenamos en las credenciales.
Conclusión
En este artículo, instalamos los complementos Cloudbees AWS Credentials y AWS Steps Plugin en Jenkins. Almacenamos el secreto del usuario de AWS IAM y las claves de acceso en Jenkins usando las Credenciales de Jenkins. También creamos una canalización de Jenkins donde probamos la credencial que creamos cargando y descargando un objeto en el depósito de S3.