cognifloyd.bitbucket-sources

Ansible Rolle: Bitbucket Quellen

Build Status

Diese Rolle klont/pullt ein Bitbucket Cloud-Repository mithilfe eines Zugriffsschlüssels. Das geklonte Repository kann überall gespeichert werden, solange es von einem angegebenen Benutzer besessen wird. Wenn der Benutzer oder der Standort nicht existiert, werden sie erstellt.

Diese Rolle kann mehr als einmal verwendet werden, wenn include_role/import_role genutzt wird. Andere Methoden wurden nicht getestet.

Getestete Szenarien in CI:

  • Git öffentliches Repo über anonymes HTTPS
  • Git öffentliches Repo über SSH mit Schlüssel
  • Git privates Repo über SSH mit Schlüssel
  • Hg öffentliches Repo über anonymes HTTPS

TODO: Unterstützung für private Hg-Repos benötigt eine Möglichkeit, den SSH-Schlüssel festzulegen.
TODO: Öffentliche Hg-Repos über SSH müssen getestet werden (der Schlüssel muss in der SSH-Konfiguration sein).

HINWEIS: Dies wurde von cognifloyd/ansible-role-bitbucket_sources übertragen.

Anforderungen

Diese Rolle setzt voraus, dass das Quellsteuerungsprogramm (git oder hg) bereits installiert ist. Wenn Sie einen nicht-standardmäßigen Speicherort für das Programm angeben möchten, setzen Sie die optionale Variable bitbucket_sources_executable.

Rollenvariablen

Konstruieren der Klon-URL

Diese Rolle verwendet drei Variablen (die ich bequem als <type>, <account> und <name> bezeichnen werde), um die Bitbucket Cloud-Repo-URL zu generieren:

  • bitbucket_sources_repo_type (gültige Optionen: "git", "hg")
  • bitbucket_sources_repo_account
  • bitbucket_sources_repo_name

Je nachdem, ob <type> git oder hg ist, wird die URL sein (siehe die Bitbucket-Dokumentation):

Sie können den boolean Wert bitbucket_sources_altssh auf "ja" setzen, um stattdessen die altssh-URLs zu verwenden:

Wenn Sie SSH nicht verwenden möchten, können Sie bitbucket_sources_protocol auf https setzen (Standard ist ssh). Diese Rolle unterstützt nur anonymes HTTPS. Bei Verwendung von HTTPS sind die URLs:

  • https://bitbucket.org/<account>/<name>.git
  • https://bitbucket.org/<account>/<name>

Das Klonziel

Das Repository wird als bitbucket_sources_dest geklont, besessen von bitbucket_sources_owner:bitbucket_sources_group (bequem als <dest>, <owner> und <group> bezeichnet). Das übergeordnete Verzeichnis von <dest> muss ein Verzeichnis sein, das von <owner>:<group> besessen wird, und wird erstellt, wenn es nicht existiert. Das Verzeichnis hat die Berechtigungen, die in bitbucket_sources_mode definiert sind.

Der Klon wird von bitbucket_sources_owner mit der Gruppe bitbucket_sources_group erstellt und hat die Berechtigungen dieses Benutzers/der Gruppe.

Bitbucket benötigt eine Art von Anmeldeinformationen, um auf ein Repository zuzugreifen, sodass Sie einen Bitbucket-Zugriffsschlüssel in bitbucket_sources_key bereitstellen müssen. Wenn der Schlüssel nicht vom Controller zum ansible_host kopiert werden soll (z. B. der Schlüssel wurde auf dem Ziel ansible_host generiert oder Sie haben den Schlüssel in einer anderen Rolle/Spiel bereitgestellt usw.), setzen Sie bitbucket_sources_key_copy auf falsch oder nein.

** TODO: ** Fügen Sie die Option in dieser Rolle hinzu, den öffentlichen Schlüssel zu Bitbucket zu pushen. Der Schlüssel sollte je nach Wert von bitbucket_sources_key_copy vom ansible_host (wenn wahr) oder vom ansible_controller (wenn falsch) abgerufen werden. Dies kann eine zusätzliche Variable für das Suffix erfordern, aber es wird wahrscheinlich einfach {{ bitbucket_sources_key }}.pub sein. Relevante APIs sind deploy-keys (für Lesezugriff auf ein oder mehrere Repos) und ssh-keys (für vollständigen Zugriff für einen bestimmten Benutzer). Eine Art von Anmeldeinformationen wird erforderlich sein.

** defaults/main.yml **:

bitbucket_sources_repo_type: git
bitbucket_sources_owner: "{{ ansible_user }}"
bitbucket_sources_group: "{{ ansible_user }}"
bitbucket_sources_mode: 0755
bitbucket_sources_altssh: nein
bitbucket_sources_key_dest: "~{{ bitbucket_sources_owner }}/.ssh/{{ bitbucket_sources_key | basename }}"
bitbucket_sources_key_copy: ja
bitbucket_sources_force: nein

** vars/main.yml **:

keine

** Rollendaten **:

Sie müssen diese als Rollendaten setzen (Es gibt keine Standardwerte, und eine Assertion schlägt fehl, wenn sie nicht definiert sind):

bitbucket_sources_repo_account: "<bitbucket Benutzer>"
bitbucket_sources_repo_name: "<bitbucket Repo (ohne .git)>"
bitbucket_sources_dest: "~<user>/scm/<account>/<name>.git"
bitbucket_sources_key: "~/.ssh/access_key"

Sie können auch jeden der Standardwerte überschreiben (siehe oben). Weitere optionale Variablen umfassen:

bitbucket_sources_version: a83b8a42
bitbucket_sources_executable: "/home/acme/gentoo-prefix/usr/bin/git"
bitbucket_sources_force: ja

** TODO: ** Ich weiß nicht, wie ich hg den angegebenen Schlüssel verwenden lassen kann.

** Globale Variablen **: Alle Variablen, die aus dem globalen Scope (d.h. hostvars, group vars, usw.) gelesen werden.

Standardmäßig sind <owner> und <group> auf ansible_user gesetzt.

ansible_user

** Variablen aus anderen Rollen **: Alle Variablen, die aus anderen Rollen gelesen werden

keine

Abhängigkeiten

Keine externen Abhängigkeiten.

Beispiel-Playbook

- hosts: vagrant
  tasks:
    - name: Beispiel-magnificent von Bitbucket klonen oder forcieren.
      include_role:
        name: theatro.bitbucket_sources
        allow_duplicates: ja
        public: nein
      vars:
        bitbucket_sources_repo_type: git
        bitbucket_sources_repo_account: beispiel
        bitbucket_sources_repo_name: wunderschön
        bitbucket_sources_dest: /var/scm/bitbucket/beispiel/wunderschön.git
        bitbucket_sources_owner: vagrant
        bitbucket_sources_group: vagrant
        bitbucket_sources_key: "~/.ssh/example_access_key"
        bitbucket_sources_force: ja

Lizenz

MIT

Autoreninformation

Erstellt von Jacob Floyd, angestellt bei Theatro, im Jahr 2017. Ich habe diese Aufgaben aus einem anderen Playbook extrahiert, das ich geschrieben habe. Nachdem ich vieles davon geschrieben hatte, fand ich webbylab.sources und Stouts.source. Der Name "sources" war so viel besser als mein Arbeitstitel "bitbucket-repo-clone", also habe ich stattdessen "bitbucket-sources" verwendet. Leider benutze ich EL 7, also hätten diese über Ubuntu fokussierten Rollen Anpassungen erfordert, selbst wenn ich sie vor dem Schreiben vieler dieser Rolle gefunden hätte. Auch wenn ich nicht mehr als nur Ideen wiederverwendet habe, verdienen sie Anerkennung dafür, dass sie daran gedacht haben, bevor ich es getan habe.

Über das Projekt

Clone/update a bitbucket cloud repository

Installieren
ansible-galaxy install cognifloyd.bitbucket-sources
GitHub Repository
Lizenz
Unknown
Downloads
105
Besitzer