cognifloyd.bitbucket-sources

Ansible Rôle : Sources Bitbucket

État de la construction

Ce rôle clone ou met à jour un dépôt Bitbucket Cloud en utilisant une clé d’accès. Le dépôt cloné peut être situé n'importe où, tant qu'il est possédé par un utilisateur indiqué. Si l'utilisateur ou l'emplacement n'existe pas, ils seront créés.

Ce rôle peut être utilisé plusieurs fois avec include_role / import_role. D'autres méthodes n'ont pas été testées.

Scénarios testés dans CI :

  • dépôt git public via https anonyme
  • dépôt git public via ssh en utilisant une clé
  • dépôt git privé via ssh en utilisant une clé
  • dépôt hg public via https anonyme

À FAIRE : le support des dépôts hg privés nécessite un moyen de définir la clé ssh. À FAIRE : le support des dépôts hg publics via ssh doit être testé (la clé doit être dans la configuration ssh)

REMARQUE : Ceci a été déplacé de cognifloyd/ansible-role-bitbucket_sources.

Exigences

Ce rôle suppose que l'exécutable de contrôle de version (git ou hg) est déjà installé. Si vous devez spécifier un emplacement de l'exécutable non standard, définissez la variable optionnelle bitbucket_sources_executable.

Variables du rôle

Construction de l'URL de clone

Ce rôle utilise ces trois variables (que je vais référencer comme <type>, <account> et <name>) pour générer l'URL du dépôt Bitbucket Cloud :

  • bitbucket_sources_repo_type (options valides : "git", "hg")
  • bitbucket_sources_repo_account
  • bitbucket_sources_repo_name

En fonction de si <type> est git ou hg, l'URL sera (voir les docs de Bitbucket) :

Vous pouvez définir le booléen bitbucket_sources_altssh à "yes" pour utiliser les altssh urls à la place :

Si vous ne souhaitez pas utiliser ssh, vous pouvez définir bitbucket_sources_protocol à https (la valeur par défaut est ssh). Ce rôle ne prend en charge que l'http anonyme. Lorsque vous utilisez https, voici les URLs :

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

Destination du Clone

Le dépôt sera cloné en tant que bitbucket_sources_dest appartenant à bitbucket_sources_owner:bitbucket_sources_group (que je vais référencer comme <dest>, <owner> et <group>). Le répertoire parent de <dest> doit être un répertoire appartenant à <owner>:<group> et sera créé s'il n'existe pas. Le répertoire aura les permissions définies dans bitbucket_sources_mode.

Le clone sera créé par bitbucket_sources_owner avec le groupe bitbucket_sources_group, et aura les permissions de cet utilisateur/groupe.

Bitbucket nécessite un type de credentials pour accéder à un dépôt, donc vous devrez fournir une clé d'accès Bitbucket dans bitbucket_sources_key. Si la clé ne doit pas être copiée du contrôleur vers l'ansible_host (par exemple, si la clé a été générée sur l'ansible_host cible, ou si vous avez déployé la clé dans un autre rôle/play, etc.), alors définissez bitbucket_sources_key_copy à false ou no.

** À FAIRE : ** Ajouter l'option dans ce rôle de pousser la clé publique vers Bitbucket. Cela devrait récupérer la clé, selon la valeur de bitbucket_sources_key_copy, depuis l'ansible_host (lorsque true) ou le contrôleur Ansible (lorsque false). Cela peut nécessiter une variable supplémentaire pour le suffixe, mais cela sera probablement juste {{ bitbucket_sources_key }}.pub. Les API pertinentes sont déployer-clés (pour un accès en lecture seule à un ou plusieurs dépôts) clés-ssh (pour un accès total pour un utilisateur particulier). Une sorte de credentials de connexion sera requise.

** 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: no
bitbucket_sources_key_dest: "~{{ bitbucket_sources_owner }}/.ssh/{{ bitbucket_sources_key | basename }}"
bitbucket_sources_key_copy: yes
bitbucket_sources_force: no

** vars/main.yml ** :

none

** paramètres du rôle ** :

Vous devez définir ces paramètres comme paramètres de rôle (il n'y a pas de valeur par défaut, et une assertion échouera s'ils ne sont pas définis) :

bitbucket_sources_repo_account: "<utilisateur bitbucket>"
bitbucket_sources_repo_name: "<dépôt bitbucket (sans .git)>"
bitbucket_sources_dest: "~<utilisateur>/scm/<account>/<name>.git"
bitbucket_sources_key: "~/.ssh/access_key"

Vous pouvez également remplacer n'importe quelle des valeurs par défaut (voir ci-dessus). D'autres variables optionnelles incluent :

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

** À FAIRE : ** Je ne sais pas comment faire en sorte que hg utilise la clé indiquée.

** variables de portée globale ** : Toutes les variables qui sont lues à partir de la portée globale (c'est-à-dire hostvars, group vars, etc.)

Par défaut <owner> et <group> sont définis sur ansible_user.

ansible_user

** variables d'autres rôles ** : Toutes les variables qui sont lues à partir d'autres rôles

none

Dépendances

Aucune dépendance externe.

Exemple de Playbook

- hosts: vagrant
  tasks:
    - name: Cloner ou forcer la mise à jour de example-magnificent depuis bitbucket.
      include_role:
        name: theatro.bitbucket_sources
        allow_duplicates: yes
        public: no
      vars:
        bitbucket_sources_repo_type: git
        bitbucket_sources_repo_account: example
        bitbucket_sources_repo_name: magnificent
        bitbucket_sources_dest: /var/scm/bitbucket/example/magnificent.git
        bitbucket_sources_owner: vagrant
        bitbucket_sources_group: vagrant
        bitbucket_sources_key: "~/.ssh/example_access_key"
        bitbucket_sources_force: yes

Licence

MIT

Informations sur l'auteur

Créé par Jacob Floyd, employé par Theatro, en 2017. J'ai extrait ces tâches d'un autre playbook sur lequel j'étais en train de travailler. Après avoir écrit une grande partie de cela, j'ai trouvé webbylab.sources et Stouts.source. Le nom "sources" était bien meilleur que mon nom de travail "bitbucket-repo-clone", alors j'ai choisi "bitbucket-sources" à la place. Malheureusement, j'utilise EL 7, donc ces rôles axés sur Ubuntu auraient nécessité une adaptation, même si j'avais trouvé cela avant d'écrire une grande partie de ce rôle. Même si je n'ai pas réutilisé plus que des idées, ils méritent du crédit d'y avoir pensé avant moi.

À propos du projet

Clone/update a bitbucket cloud repository

Installer
ansible-galaxy install cognifloyd.bitbucket-sources
Licence
Unknown
Téléchargements
105
Propriétaire