Cómo almacenar la clave de acceso de usuario de AWS y la clave secreta en Jenkins
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 AWS IAM de forma segura en Jenkins en lugar de usar las claves abiertamente 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).
- S3 Bucket (Haga clic aquí para aprender a crear un S3 Bucket en AWS).
- Servidor Jenkins (Busque «¿Cómo instalar Jenkins usando un archivo war en una instancia de AWS EC2 Ubuntu?» para aprender a crear un servidor Jenkins)
¿Que haremos?
- Instalar Credenciales de AWS de Cloudbees enchufar.
- Almacene las claves secretas y de acceso de AWS en las credenciales de Jenkins.
- Instalar Complemento de pasos de AWS.
- Crea un Pipeline y prueba la credencial que creamos.
Instale el complemento de credenciales de Cloudbees AWS
Inicie sesión en Jenkins en http://:8080/jenkins
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 requerido.
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.
Almacene las claves secretas y de acceso de AWS en las credenciales de Jenkins
Ahora estamos listos para almacenar las credenciales de AWS.
Regrese al tablero 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.
Instale el 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, verá el mensaje de éxito de la siguiente manera.
Crea un Pipeline y prueba 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 nuestro nombre secreto aquí. 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 con éxito nuestra clave secreta y la clave de acceso usando 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 tubería anterior, vaya a la tubería y haga clic en «Crear ahora». Esto ejecutará la tubería.
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 Credenciales de AWS de Cloudbees y Complemento de pasos de AWS Complementos 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 S3.