Dieser Blogbeitrag führt Sie durch die Erstellung einer Jenkins-Pipeline zur Automatisierung von AWS ECS- (Elastic Container Service) und RDS- (Relational Database Service) Vorgängen. Das Pipeline-Skript ist in Groovy geschrieben, der Sprache, die in Jenkins häufig verwendet wird.
Heute demonstrieren wir eine der besten Vorgehensweisen für die Automatisierung des Prozesses der Initiierung eines ECS-Containers und einer RDS-Instanz, einschließlich einer E-Mail-Benachrichtigung im Falle eines Job-Fehlers. Wir werden die Schritte einzeln untersuchen und mit dem besten Ansatz abschließen.
Die Pipeline stellt sicher, dass Ihre ECS-Service-Updates und RDS-Instanzprüfungen konsistent ausgeführt werden, wodurch manuelle Fehler vermieden und ein nahtloser Bereitstellungsprozess gefördert wird.

Hier finden Sie den vollständigen Pipeline-Code und die Erklärung der einzelnen Schritte, die Sie ausführen werden:
pipeline {
agent any
environment {
AWSRegion='ca-central-1'
}
stages {
stage('Starting --> ') {
steps{
script {
sh "aws ecs update-service --cluster my-ecs-cluster-name --service my-ecs-service-name --profile my-aws-profile-name --region ${AWSRegion} --desired-count 1 | grep desiredCount"
sh(script: '''#!/bin/bash
aws rds describe-db-instances --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep available
if [ $? == 0 ];then
echo "RDS instance has already started!"
else
aws rds start-db-instance --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep DBInstanceStatus
fi
'''.stripIndent())
}
}
}
}
}
post{
failure{
mail to: 'my-email-address@email.com',
subject: "Jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}",
body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore info can be found here: ${env.BUILD_URL}"
}
}
}
Tipps: Wenn Sie den ECS und RDS stoppen möchten, ersetzen Sie einfach " -desired-count 1" anstelle von 1, um auf 0 gesetzt zu werden, und für den RDS anstelle von "start-db-instance" ersetzen Sie es durch "stop-db-instance"
Lassen Sie uns nun die einzelnen Schritte der Pipeline aufschlüsseln:
- Die Pipeline ist so konfiguriert, dass sie auf jedem verfügbaren Agenten läuft.
pipeline {
agent any
- Verwendung von Umgebungsvariablen:
Die AWS-Region wird zur einfachen Konfiguration als Umgebungsvariable festgelegt.
environment {9
AWSRegion='ca-central-1' (you can replace it with the region you want)
}
- Die Pipeline hat eine einzige Stufe mit der Bezeichnung "Start" und entsprechenden Schritten.
stages {
stage('Starting --> ') {
steps {
// Pipeline steps go here
}
}
}
- Aktualisieren Sie die Anzahl der ECS-Dienste:
Die Pipeline beginnt mit der Aktualisierung eines ECS-Dienstes, indem die Anzahl der gewünschten Aufgaben auf 1 gesetzt wird (was bedeutet, dass der Container gestartet wird).
Hierfür werden AWS CLI-Befehle verwendet:
sh "aws ecs update-service --cluster my-ecs-cluster-name --service my-ecs-service-name --profile my-aws-profile-name --region ${AWSRegion} --desired-count 1 | grep desiredCount"
- Starten Sie die RDS-Instanz:
Als nächstes prüft die Pipeline den Status einer RDS-Instanz. Wenn die Instanz bereits verfügbar ist, gibt sie eine Meldung aus. Andernfalls startet sie die RDS-Instanz mithilfe der AWS-CLI.
sh(script: '''
aws rds describe-db-instances --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep available
if [ $? == 0 ];then
echo "RDS instance has already started!"
else
aws rds start-db-instance --profile my-aws-profile-name --db-instance-identifier my-db-name --region ${AWSRegion} | grep DBInstanceStatus
fi
'''.stripIndent())
- Aktionen nach dem Bau:
Im Falle eines Build-Fehlers wird eine E-Mail-Benachrichtigung an die angegebene E-Mail-Adresse gesendet:
post {
failure {
mail to: 'my-email-address@email.com',
subject: "Jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}",
body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore info can be found here: ${env.BUILD_URL}"
}
}
Beispiel für eine E-Mail:
Thema: Jenkins build:FAILURE: OPERATIONS/Multi-Instanz-Stop
FEHLER: Job OPERATIONS/Multi-Instanz-Stop
Weitere Informationen finden Sie hier: https://X.X.X.X/job/PATH/TO/THE/JOB/Start-my-instances
Tipps: Einer der besten Aspekte eines solchen Jobs ist, dass Sie das Ausführungsdatum/die Ausführungszeit und die Dienste, die gestartet oder gestoppt werden können, beeinflussen können. Durch die Einstellung des Cron in Jenkins können Sie den Arbeitsablauf minimieren, um Ihre monatlichen Ausgaben nicht zu erhöhen.
Zusammenfassend lässt sich sagen, dass das Groovy-Skript und die AWS CLI-Befehle leicht anpassbar sind, sodass Sie die Pipeline an Ihre AWS-Umgebung und Ihre spezifischen Anforderungen anpassen können.
Im Grunde genommen ist diese Pipeline Ihre Eintrittskarte zu einer stressfreien und festlichen AWS-Bereitstellung.
Überlassen Sie Jenkins die Routineaufgaben der Aktualisierung von ECS-Diensten und der Überprüfung von RDS-Instanzen.
Kein manuelles Eingreifen erforderlich - einstellen und vergessen!
Entdecken Sie die Dienstleistungen von ITGix und erfahren Sie mehr über unser Know-how.