So speichern Sie den AWS-Benutzerzugangsschlüssel und den geheimen Schlüssel in Jenkins

Sie können Ihre AWS-Schlüssel sicher in Jenkins-Anmeldeinformationen speichern. Wenn Sie über Ihren Jenkins-Server mit AWS interagieren möchten, können Sie Ihre AWS IAM-Benutzerschlüssel sicher in Jenkins speichern, anstatt die Schlüssel offen in Ihrer Jenkins-Pipeline zu verwenden. „CloudBees AWS Credentials“ Jenkins-Plugin ermöglicht das Speichern von AWS IAM-Benutzeranmeldeinformationen innerhalb der Jenkins Credentials API. Wir können diese Anmeldeinformationen dann in unserer Pipeline verwenden und sie mit dem „withAWS“-Schritt in die Pipeline injizieren. Um den Schritt „withAWS“ zu verwenden, müssen wir das Plugin „AWS Steps Plugin“ installieren.

In diesem Artikel installieren wir das „CloudBees AWS Credentials“-Plugin und speichern den geheimen Schlüssel des AWS IAM-Benutzers und den Zugriffsschlüssel in Jenkins mithilfe dieses Plugins. Wir werden das „AWS Steps Plugin“ installieren, so dass wir „awsStep“ verwenden können, um die von uns erstellten Anmeldeinformationen zu injizieren. Wir werden S3 Upload-Objekt- und Download-Objekt-Operationen innerhalb der Pipeline durchführen, um das von uns erstellte Credential zu testen.

Vorraussetzungen

  1. AWS IAM-Benutzer mit seinem Zugriffsschlüssel und geheimen Schlüssel mit Lese-/Schreibzugriff auf S3-Buckets (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer auf AWS erstellen).
  2. S3 Bucket (Klicken Sie hier, um zu erfahren, wie Sie ein S3 Bucket auf AWS erstellen).
  3. Jenkins Server(Suchen Sie nach „How to install Jenkins using a war file on AWS EC2 Ubuntu instance?“, um zu erfahren, wie Sie einen Jenkins Server erstellen)

Was müssen wir tun?

  1. Installieren Sie Cloudbees AWS Credentials-Plugin.
  2. Speichern Sie AWS Access- und Secret-Schlüssel in Jenkins Credentials.
  3. Installieren Sie das AWS Steps-Plugin.
  4. Erstellen Sie eine Pipeline und testen Sie die von uns erstellten Anmeldeinformationen.

Installieren Sie Cloudbees AWS Credentials-Plugin

Melden Sie sich bei Jenkins unter http://<Jenkins-IP>:8080/jenkins an.

Hier habe ich http://52.87.233.129:8080/jenkins/.

Sie sehen das Dashboard wie folgt. Klicken Sie im linken Bereich auf „Jenkins verwalten“.

Jenkins Dashboard

Hier klicken Sie unter „System Configuration“ auf „Manage Plugins“, um das gewünschte Plugin zu installieren.

Jenkins verwalten

Sie sehen 4 Registerkarten: „Updates“, „Verfügbar“, „Installiert“ und „Erweitert“. Klicken Sie auf den Reiter „Verfügbar“, um nach dem Plugin zu suchen.

Plugins verwalten

Suchen Sie im Suchfeld unter dem Reiter „Verfügbar“ nach „cloudbees secret manager“. Aktivieren Sie das Kontrollkästchen des Plugin-Ergebnisses „Cloudbees AWS Credentials“, das Sie erhalten, und klicken Sie auf „Ohne Neustart installieren“, um das Plugin ohne Neustart von Jenkins zu installieren.

CloudBees AWS Credentials Plugin

Sobald das Plugin installiert ist, erhalten Sie die „Success“-Meldung wie folgt.

Erfolgreiche Plugin-Installation

Speichern von AWS-Zugangs- und Geheimschlüsseln in Jenkins Credentials

Wir sind nun bereit, AWS-Anmeldeinformationen zu speichern.

Gehen Sie zurück zum Haupt-Dashboard und klicken Sie auf „Manage Jenkins“.

Zurück zu Jenkins Dashboard

Klicken Sie nun auf „Manage Credentials“ unter „Security“, um AWS Secret Key und Access Key zu speichern.

Zurück zu Jenkins verwalten

Klicken Sie auf „global“ unter „Stores scoped to Jenkins“ –> „Add credentials“.

Anmeldeinformationen verwalten

Auf dieser Seite können Sie die Geheimnisse speichern. Klicken Sie auf das Dropdown-Menü „Art“ und wählen Sie „AWS“. Geben Sie einen Namen für die Secrets, eine Beschreibung, die Access Key ID und den Secret Access Key an. Klicken Sie auf OK, um die Secrets zu speichern.

AWS-Anmeldeinformationen speichern

Sie können sehen, dass das Secret nun verfügbar ist.

Zugangsdaten gespeichert

AWS Steps Plugin installieren

Der nächste Schritt ist die Installation des „Pipeline AWS Steps“-Plugins. Gehen Sie zurück zum Haupt-Dashboard, klicken Sie auf „Manage Jenkins — > Manage Plugins“.

Suchen Sie unter der Registerkarte „Verfügbar“ nach „AWS Steps“. Wählen Sie das Plugin „Pipeline: AWS Steps“ und klicken Sie auf „Installieren ohne Neustart“. Dadurch wird das Plugin installiert, ohne dass Jenkins neu gestartet werden muss.

AWS-Steps-Plugin

Sobald das Plugin erfolgreich installiert ist, erhalten Sie die folgende Erfolgsmeldung.

Erfolgreiche Plugin-Installation

Erstellen Sie eine Pipeline und testen Sie das von uns erstellte Credential.

Lassen Sie uns nun einen neuen Job erstellen. In diesem Job werden wir versuchen, das von uns erstellte Sekret zu verwenden.

Gehen Sie zurück zum Haupt-Dashboard, klicken Sie auf „Neue Elemente“.

Zurück zu Jenkins Dashboard

Geben Sie dem Job einen Namen und wählen Sie „Pipeline“ als Job-Typ aus und klicken Sie auf „Ok“.

Neuer Job - Jenkins Pipeline

Klicken Sie auf „Build Triggers“, scrollen Sie nach unten zu „Pipeline“, wählen Sie „Pipeline script“ und fügen Sie den folgenden Code in das Textfeld ein.

Geskriptete Pipeline

Dies ist eine Pipeline mit 1 Stufe „test AWS credentials“. In diesem Schritt werden wir „withAWS“ verwenden und hier unseren geheimen Namen angeben. Darin werden wir eine Beispieldatei „hello.txt“ mit einer „Hallo Jenkins“-Nachricht erstellen. Diese Datei wird dann in den S3-Bucket „devopslee“ in meinem Konto hochgeladen.

Sie müssen Ihren Bucket-Namen anstelle von devopslee angeben.

Um zu sehen, ob die Datei hochgeladen wurde, werden wir versuchen, sie als „downloadedHello.txt“ herunterzuladen und sie mit dem Befehl „cat“ auszudrucken.

Wenn alle diese Schritte erfolgreich waren, bedeutet dies, dass wir unseren geheimen Schlüssel und den Zugriffsschlüssel mit dem von uns erstellten Credential erfolgreich verwenden konnten.

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'
                }
            }
        }
    }
}

Um nun die obige Pipeline zu testen, gehen Sie zur Pipeline und klicken Sie auf „Build Now“, wodurch die Pipeline ausgeführt wird.

Bauen Sie die Pipeline auf

Klicken Sie auf den Build-Verlauf — > Konsolenausgabe.

Protokolle prüfen

Hier können Sie in der Konsolenausgabe sehen, dass die Datei erstellt, hochgeladen, heruntergeladen und erfolgreich gelesen wurde.

Das bedeutet, dass wir den S3-Bucket mit dem Zugriffsschlüssel und dem Geheimnis, die wir in den Anmeldeinformationen gespeichert haben, erfolgreich authentifizieren konnten.

Erfolgreiche Ausführung der Pipeline

Fazit

In diesem Artikel haben wir die Cloudbees-Plugins AWS Credentials und AWS Steps Plugin in Jenkins installiert. Wir haben das Geheimnis des AWS IAM-Benutzers und die Zugriffsschlüssel in Jenkins mit Jenkins Credentials gespeichert. Wir haben auch eine Jenkins-Pipeline erstellt, in der wir die erstellten Anmeldeinformationen durch Hoch- und Herunterladen eines Objekts in den S3-Bucket getestet haben.

Das könnte dich auch interessieren …