Alternative CD

Pipeline oder Workflows als Alternative zu GitFS

Beispiel für eine Bitbucket Pipeline, welche bei jedem Push die States auf dem Master aktualisiert.

bitbucket-pipelines.yml
image: alpine:3.10
pipelines:
  branches:
    master:
      - step:
          name: Deploy to Salt Master
          script:
            - apk --no-cache add openssh-client rsync
            - ls -la
            - find . -type d -exec chmod 0770 {} \;
            - find . -type f -exec chmod 0660 {} \;
            - >-
              rsync -av --delete -e "ssh -p <PORT>" . <HOST>:/srv/salt/
              --exclude=.git
              --exclude=.gitignore
              --exclude=bitbucket-pipelines.yml
              --delete-excluded

Sollte Ihr Salt-Master nicht per SSH aus dem öffentlichen Internet erreichbar sein, können Sie einen kostenlosen Account von Ngrok nutzen, um den SSH Port schnell und einfach freizugeben.

cd /tmp
wget "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.tgz"
tar xzf ngrok-stable-linux-amd64.tgz
mv ngrok /usr/local/bin/
chmod +x /usr/local/bin/ngrok
rm ngrok-stable-linux-amd64.tgz
ngrok authtoken <YOU-TOKEN>
ngrok tcp 22 -log=stdout -log-format=json 2>&1 >/tmp/ssh-exposal.json &
jq < /tmp/ssh-exposal.json

Legen Sie einen User an, welcher die Dateien synchronisiert. Nutzen Sie dazu nicht den Root-User.

Bierspielweise: useradd -m -r -s /bin/sh -d /var/lib/bitbucket bitbucket

Rufen Sie die Settings des Repositorys auf und generieren Sie im Bereich Pipelines > SSH Keys einen privaten Schlüssel. Kopieren Sie den öffentlichen Schlüssel in die Datei /var/lib/bitbucket/.ssh/authoriezd_keys. Achten Sie darauf, dass diese Datei dem Benutzer bitbucket und nicht Root gehört.

Rufen Sie den Fingerprint vom Salt-Master ab (Fetch), und fügen Sie diesen zum Repository hinzu. Die Pipeline ist nun einsatzbereit.

Last updated