cognifloyd.bitbucket-sources

Rol de Ansible: Fuentes de Bitbucket

Estado de la Construcción

Este rol clona/descarga un repositorio de Bitbucket Cloud usando una clave de acceso. El repositorio clonado puede estar ubicado en cualquier lugar perteneciente a un usuario indicado. Si el usuario o la ubicación no existen, se crearán.

Este rol se puede usar más de una vez utilizando include_role/import_role. Otros métodos no han sido probados.

Escenarios probados en CI:

  • repositorio git público a través de https anónimo
  • repositorio git público a través de ssh usando clave
  • repositorio git privado a través de ssh usando clave
  • repositorio hg público a través de https anónimo

TODO: Se necesita soporte para repositorios hg privados con una manera de establecer la clave ssh. TODO: Se necesita probar el soporte para repositorios hg públicos a través de ssh (la clave debe estar en la configuración ssh).

NOTA: Esto fue movido de cognifloyd/ansible-role-bitbucket_sources.

Requisitos

Este rol asume que el ejecutable de control de versiones (git o hg) ya está instalado. Si necesitas especificar una ubicación no estándar para el ejecutable, establece la variable opcional bitbucket_sources_executable.

Variables del Rol

Construyendo la URL de Clonación

Este rol utiliza estas tres variables (que referiré como <tipo>, <cuenta>, y <nombre>) para generar la URL del repositorio de Bitbucket Cloud:

  • bitbucket_sources_repo_type (opciones válidas: "git", "hg")
  • bitbucket_sources_repo_account
  • bitbucket_sources_repo_name

Dependiendo de si <tipo> es git o hg, la URL será (ver la documentación de bitbucket):

Puedes establecer bitbucket_sources_altssh a "yes" para usar las URLs altssh en su lugar:

Si no deseas usar ssh, puedes establecer bitbucket_sources_protocol a https (el valor por defecto es ssh). Este rol solo admite https anónimo. Al usar https, estas son las URLs:

  • https://bitbucket.org/<cuenta>/<nombre>.git
  • https://bitbucket.org/<cuenta>/<nombre>

El Destino de Clonación

El repositorio se clonará como bitbucket_sources_dest perteneciente a bitbucket_sources_owner:bitbucket_sources_group (referidos como <dest>, <owner>, y <group>). El directorio padre de <dest> debe ser un directorio perteneciente a <owner>:<group> y se creará si no existe. El directorio tendrá el modo de permisos definido en bitbucket_sources_mode.

La clonación será creada por bitbucket_sources_owner con grupo bitbucket_sources_group, y tendrá los permisos de ese usuario/grupo.

Bitbucket requiere algún tipo de credenciales para acceder a un repositorio, así que necesitarás proporcionar una clave de acceso de Bitbucket en bitbucket_sources_key. Si la clave no debería ser copiada del controlador al ansible_host (por ejemplo, si la clave fue generada en el ansible_host de destino, o si se desplegó la clave en otro rol/play, etc.), entonces establece bitbucket_sources_key_copy a false o no.

** TODO: ** Agregar la opción en este rol de empujar la clave pública a Bitbucket. Esto debería obtener la clave, dependiendo del valor de bitbucket_sources_key_copy, desde el ansible_host (cuando sea true) o el ansible_controller (cuando sea false). Esto puede requerir una variable adicional para el sufijo, pero probablemente solo será {{ bitbucket_sources_key }}.pub. Las APIs relevantes son deploy-keys (para acceso de solo lectura a uno o más repos) y ssh-keys (para acceso total a un usuario particular). Se requerirán algún tipo de credenciales de inicio de sesión.

** 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 **:

ninguno

** parámetros del rol **:

Debes establecer estos como parámetros del rol (no hay un valor por defecto, y una afirmación fallará si no están definidos):

bitbucket_sources_repo_account: "<usuario de bitbucket>"
bitbucket_sources_repo_name: "<repositorio de bitbucket (sin .git)>"
bitbucket_sources_dest: "~<usuario>/scm/<cuenta>/<nombre>.git"
bitbucket_sources_key: "~/.ssh/clave_de_acceso"

También puedes sobrescribir cualquiera de los valores por defecto (ver arriba). Otras variables opcionales incluyen:

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

** TODO: ** No sé cómo hacer que hg use la clave indicada.

** variables de ámbito global **: Cualquier variable que se lea del ámbito global (es decir, hostvars, group vars, etc.)

Por defecto, <owner> y <group> se establecen en ansible_user.

ansible_user

** vars de otros roles **: Cualquier variable que se lea de otros roles

ninguno

Dependencias

No hay dependencias externas.

Ejemplo de Playbook

- hosts: vagrant
  tasks:
    - name: Clonar o forzar actualización de example-magnificent desde 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

Licencia

MIT

Información del Autor

Creado por Jacob Floyd, empleado por Theatro, en 2017. Extraje estas tareas de otro playbook que estaba escribiendo. Después de escribir gran parte de esto, encontré webbylab.sources y Stouts.source. El nombre "sources" era mucho mejor que mi trabajo en "bitbucket-repo-clone", así que usé "bitbucket-sources" en su lugar. Lamentablemente, estoy usando EL 7, por lo que estos roles enfocados en Ubuntu habrían requerido adaptación, incluso si los hubiera encontrado antes de escribir gran parte de este rol. Aunque no reutilicé más que ideas, merecen reconocimiento por pensar en esto antes que yo.

Acerca del proyecto

Clone/update a bitbucket cloud repository

Instalar
ansible-galaxy install cognifloyd.bitbucket-sources
Licencia
Unknown
Descargas
105
Propietario