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),hgosvn.scm_url: URL del repositorio (p. ej.http://server/repoossh://server/repo), requerido.scm_version: Rama, etiqueta, revisión o compromiso a extraer (p. ej.masteroHEAD).scm_force: Booleano que indica si se debe pasar la opciónforceal 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_pathantes de actualizar, el valor predeterminado esfalse.scm_username: Nombre de usuario para acceder ascm_url, solo es compatible cuandoscm_typeessvn.scm_password: Contraseña para acceder ascm_url, solo es compatible cuandoscm_typeessvn.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_userno 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_typeesgit, el valor predeterminado del rol estrue.scm_depth: Crear un clon poco profundo, el valor mínimo es1; solo es compatible cuandoscm_typeesgit; el valor predeterminado del rol no está especificado.scm_executable: Ruta al binario degit,hgosvn; 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_typeessvn; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulosvnesfalse.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_typeesgit.scm_purge: Eliminar archivos no rastreados al actualizar; solo es compatible cuandoscm_typeeshg; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulohgesfalse.scm_recursive: Booleano que indica si se debe clonar el repositorio recursivamente, incluyendo submódulos; solo es compatible cuandoscm_typeesgit; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogitestrue.scm_remote: Nombre del remoto; solo es compatible cuandoscm_typeesgit; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogites"origin".scm_switch: Llamar asvn switchantes de la actualización; solo es compatible cuandoscm_typeessvn; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulosvnestrue.scm_track_submodules: Booleano que indica si los submódulos rastrean los últimos compromisos; solo es compatible cuandoscm_typeesgit; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogitesfalse.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_typeesgit; el valor predeterminado del rol no está especificado, pero el valor predeterminado del módulogitesfalse.scm_packages: Mapeo de paquetes poransible_pkg_mgryscm_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_mgrdiferente ayum,apt,pacmanomacports.scm_ssh_agent_forwarding: Booleano que indica si se deben aplicar correcciones para permitir que el reenvío del agente SSH funcione cuandoscm_target_userno 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.dcuando 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