cchurch.scm
SCM
Extraer código de SCM (git/hg/svn).
Requisitos
Si se extrae usando SSH, debe haber una clave de despliegue disponible para el scm_target_user
o debe estar habilitada la reenvío de agente SSH para la conexión SSH de Ansible.
Se requiere sudo
o un escalado de privilegios similar para instalar el paquete SCM, extraer como otro usuario (es decir, scm_target_user != ansible_user
), o crear la cuenta scm_target_user
.
Variables del Rol
Consulta la documentación de los módulos de Ansible git
, hg
o svn
para más detalles sobre los parámetros que se pasan directamente a los módulos subyacentes.
Las siguientes variables suelen definirse para utilizar este rol:
scm_type
: Uno degit
(predeterminado),hg
osvn
.scm_url
: URL del repositorio (p. ej.http://server/repo
ossh://server/repo
), requerido.scm_version
: Rama, etiqueta, revisión o compromiso a extraer (p. ej.master
oHEAD
).scm_force
: Booleano que indica si se debe pasar la opciónforce
al módulo SCM, lo que descartará archivos modificados en un directorio de trabajo existente; el valor predeterminado esfalse
.scm_delete_on_update
: Booleano que indica si se debe eliminarscm_target_path
antes de actualizar, el valor predeterminado esfalse
.scm_username
: Nombre de usuario para acceder ascm_url
, solo es compatible cuandoscm_type
essvn
.scm_password
: Contraseña para acceder ascm_url
, solo es compatible cuandoscm_type
essvn
.scm_target_path
: Directorio de destino para la extracción (el valor predeterminado es"~/src"
).scm_target_user
: Usuario a utilizar para la extracción (el valor predeterminado esansible_user
, en cuyo caso no se requerirá escalado de privilegios). Este usuario será creado si es diferente deansible_user
, ignorando errores siansible_user
no puede crear el usuario.scm_target_user_home
: Directorio personal a establecer si se creascm_target_user
.
Las siguientes variables también pueden usarse para personalizar este rol, aunque rara vez se necesitarán en la mayoría de las situaciones:
scm_accept_hostkey
: Booleano que indica si se debe aceptar la clave del host SSH, solo es compatible cuandoscm_type
esgit
, el valor predeterminado del rol estrue
.scm_depth
: Crear un clon poco profundo, el valor mínimo es1
; solo es compatible cuandoscm_type
esgit
; el valor predeterminado del rol no está especificado.scm_executable
: Ruta al binario degit
,hg
osvn
; el valor predeterminado no está especificado, lo que busca en las rutas del sistema.scm_export
: Exportar en lugar de extraer/actualizar; solo es compatible cuandoscm_type
essvn
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulosvn
esfalse
.scm_key_file
: Ruta al archivo de clave privada en el destino a usar para la extracción; el valor predeterminado no está especificado; solo es compatible cuandoscm_type
esgit
.scm_purge
: Eliminar archivos no rastreados al actualizar; solo es compatible cuandoscm_type
eshg
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulohg
esfalse
.scm_recursive
: Booleano que indica si se debe clonar el repositorio recursivamente, incluyendo submódulos; solo es compatible cuandoscm_type
esgit
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogit
estrue
.scm_remote
: Nombre del remoto; solo es compatible cuandoscm_type
esgit
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogit
es"origin"
.scm_switch
: Llamar asvn switch
antes de la actualización; solo es compatible cuandoscm_type
essvn
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulosvn
estrue
.scm_track_submodules
: Booleano que indica si los submódulos rastrean los últimos compromisos; solo es compatible cuandoscm_type
esgit
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogit
esfalse
.scm_update
: Booleano que indica si se deben recibir nuevas revisiones del repositorio de origen; el valor predeterminado del rol no está especificado, pero los módulos por defecto sontrue
.scm_verify_commit
: Booleano que indica si se deben validar los compromisos firmados por GPG; solo es compatible cuandoscm_type
esgit
; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogit
esfalse
.scm_packages
: Mapeo de paquetes poransible_pkg_mgr
yscm_type
. El rol intentará instalar el paquete requerido, ignorando errores si no está disponible el escalado de privilegios apropiado. Normalmente no es necesario cambiar esta variable a menos que se ejecute en un sistema que use unansible_pkg_mgr
diferente ayum
,apt
,pacman
omacports
.scm_ssh_agent_forwarding
: Booleano que indica si se deben aplicar correcciones para permitir que el reenvío del agente SSH funcione cuandoscm_target_user
no es el mismo queansible_user
; el valor predeterminado del rol esfalse
.scm_ssh_auth_sock_sudoers_file
: Ruta del archivo que se debe añadir ensudoers.d
cuando se habilita la corrección del reenvío del agente SSH; el valor predeterminado del rol es"/etc/sudoers.d/ssh_auth_sock"
.
La siguiente variable puede definirse para la invocación del juego o del rol (pero no funcionará si se define como una variable de grupo o de host en el inventario):
scm_notify_on_updated
: Nombre del manejador a notificar cuando se cambió la extracción. El valor predeterminado es"scm updated"
; se recomienda que los manejadores personalizados escuchen para"scm updated"
en lugar de cambiar el nombre de notificación.
El rol también establecerá el hecho scm_update_result
(por cada host) al resultado de la tarea de actualización.
Dependencias
Ninguna.
Ejemplo de Playbook
El siguiente ejemplo de playbook extrae un repositorio git público y muestra un mensaje después de actualizar:
- hosts: all
roles:
- role: cchurch.scm
vars:
scm_type: git
scm_url: https://github.com/cchurch/ansible-sign.git
scm_target_path: ~/src/ansible-sign
scm_version: master
handlers:
- name: ansible sign updated
debug:
msg: "{{ scm_target_path }} fue actualizado desde {{ scm_url }} a {{ scm_update_result.after }}."
listen: scm updated
Licencia
BSD
Información del Autor
Chris Church (cchurch)
Checkout code from SCM (git/hg/svn).
ansible-galaxy install cchurch.scm