En el post anterior te mostré como usar Jenkis como CD para desplegar tu infraestructura EKS con terraform en AWS. El "detalle" es que usamos el secret de Jenkins de texto cifrado.
Ahora lo que usaremos es el plugin de AWS Credentials, lo puedes instalar desde el administrador de plugins de Jenkins con un par de clicks.
Aquí abajo te dejo el video para que veas la configuración en caso que tengas dudas:
Empezamos creando las credenciales, vamos a:
Dashboard -> Manage Jenkins -> Credentials -> System -> Global credentials, vas click en "Add Credentials" y en el formulario das click en kind y seleccionas AWS Credentials.
Ahora vamos al Pipeline puedes usar el anterior si quieres, ya que la configuración es la misma. Bajamos a la sección de Pipeline y el script es el siguiente:
def awsCredentials = [[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'AWS_CREDS']]
pipeline {
agent any
options {
timestamps()
withCredentials(awsCredentials)
}
stages {
stage('Checkout') {
steps {
git 'https://github.com/ahioros/terraform-aws-eks/'
}
}
stage('Terraform init'){
steps{
sh '/var/jenkins_home/terraform-bin/terraform init -no-color'
}
}
stage('Terraform plan') {
steps{
sh '/var/jenkins_home/terraform-bin/terraform plan -var="config_key=config.json" -no-color'
}
}
stage('Terraform apply') {
steps {
sh '/var/jenkins_home/terraform-bin/terraform ${action} -auto-approve -var="config_key=config.json" -no-color'
}
}
stage('kubectl test') {
steps {
script {
if (action.toString() == "apply") {
sh '/var/jenkins_home/kubectl-bin/kubectl --kubeconfig ./template/kubeconfig.yaml get all -A'
} else {
echo 'skipping kubectl test'
}
}
}
}
}
}
El código hace lo mismo y como puedes notar la diferencia es que se tuvo que definir una función y luego llamarla en options para que haga uso de las credenciales del llavero que creamos, de lo contrario en cada stage tendrías que hacer el llamado del llavero (repetir código a lo tonto).
Ahora puedes ejecutar el pipeline de la misma forma que lo hicimos en el post anterior.
Recuerda ejecutar el pipeline con destroy, no vayas a dejar corriendo el cluster si no es necesario.
Siguiente post haremos lo mismo pero ahora desde github actions.
Top comments (0)