scm
SCM
Получение кода из SCM (git/hg/svn).
Требования
Если используется SSH для получения кода, необходимо наличие ключа развертывания для пользователя scm_target_user
или должны быть включены пересылка SSH-агента для подключения Ansible.
Для установки пакета SCM, получения кода от имени другого пользователя (например, scm_target_user != ansible_user
) или создания аккаунта scm_target_user
требуется привилегированное повышение (например, sudo
).
Переменные роли
Обратитесь к документации для модулей Ansible git
, hg
или svn
для получения дополнительных подробностей о параметрах, передаваемых непосредственно вUnderlying модули.
Обычно используются следующие переменные для этой роли:
scm_type
: Один изgit
(по умолчанию),hg
илиsvn
.scm_url
: URL репозитория (например,http://server/repo
илиssh://server/repo
), обязателен.scm_version
: Ветка, тег, ревизия или коммит для получения (например,master
илиHEAD
).scm_force
: Логическое значение, указывающее, следует ли передать опциюforce
модулю SCM, что приведет к игнорированию любых измененных файлов в существующем рабочем каталоге; по умолчаниюfalse
.scm_delete_on_update
: Логическое значение, указывающее, следует ли удалитьscm_target_path
перед обновлением, по умолчаниюfalse
.scm_username
: Имя пользователя для доступа кscm_url
, поддерживается только, когдаscm_type
— этоsvn
.scm_password
: Пароль для доступа кscm_url
, поддерживается только, когдаscm_type
— этоsvn
.scm_target_path
: Целевой каталог для получения (по умолчанию"~/src"
).scm_target_user
: Пользователь, от имени которого будет выполняться получение (по умолчаниюansible_user
, в этом случае повышение привилегий не потребуется). Этот пользователь будет создан, если он отличается отansible_user
, игнорируя ошибки, еслиansible_user
не сможет создать пользователя.scm_target_user_home
: Домашний каталог для установки, если создаетсяscm_target_user
.
Также могут быть использованы следующие переменные для настройки этой роли, хотя в большинстве случаев они не будут необходимы:
scm_accept_hostkey
: Логическое значение, указывающее, следует ли принимать SSH-ключ хоста, поддерживается только дляscm_type
, равногоgit
, по умолчаниюtrue
.scm_depth
: Создать поверхностное клонирование, минимальное значение —1
; поддерживается только дляscm_type
, равногоgit
; по умолчанию не указано.scm_executable
: Путь к исполняемому файлуgit
,hg
илиsvn
; по умолчанию не указано, будет производиться поиск системных бинарных путей.scm_export
: Экспорт вместо получения/обновления; поддерживается только дляscm_type
, равногоsvn
; по умолчанию не указано, но по умолчанию для модуляsvn
—false
.scm_key_file
: Путь к файлу приватного ключа на целевом узле для использования при получении; по умолчанию не указано; поддерживается только дляscm_type
, равногоgit
.scm_purge
: Удалить неотслеживаемые файлы при обновлении; поддерживается только дляscm_type
, равногоhg
; по умолчанию не указано, но по умолчанию для модуляhg
—false
.scm_recursive
: Логическое значение, указывающее, следует ли клонировать репозиторий рекурсивно, включая подмодули; поддерживается только дляscm_type
, равногоgit
; по умолчанию не указано, но по умолчанию для модуляgit
—true
.scm_remote
: Имя удаленного репозитория; поддерживается только дляscm_type
, равногоgit
; по умолчанию не указано, но по умолчанию для модуляgit
—"origin"
.scm_switch
: Вызовsvn switch
перед обновлением; поддерживается только дляscm_type
, равногоsvn
; по умолчанию не указано, но по умолчанию для модуляsvn
—true
.scm_track_submodules
: Логическое значение, указывающее, отслеживают ли подмодули последние коммиты; поддерживается только дляscm_type
, равногоgit
; по умолчанию не указано, но по умолчанию для модуляgit
—false
.scm_update
: Логическое значение, указывающее, следует ли получать новые ревизии из исходного репозитория; по умолчанию не указано, но модули по умолчанию равныtrue
.scm_verify_commit
: Логическое значение, указывающее, следует ли проверять коммиты, подписанные GPG; поддерживается только дляscm_type
, равногоgit
; по умолчанию не указано, но по умолчанию для модуляgit
—false
.scm_packages
: Сопоставление пакетов поansible_pkg_mgr
иscm_type
. Роль будет пытаться установить необходимый пакет, игнорируя ошибки, если соответствующее повышение привилегий недоступно. Обычно нет необходимости изменять эту переменную, если вы не работаете на системе, использующей другойansible_pkg_mgr
, чемyum
,apt
,pacman
илиmacports
.scm_ssh_agent_forwarding
: Логическое значение, указывающее, следует ли применять исправления для разрешения пересылки агента SSH, еслиscm_target_user
отличается отansible_user
; по умолчаниюfalse
.scm_ssh_auth_sock_sudoers_file
: Путь к файлу для добавления вsudoers.d
, когда включено исправление дляscm_ssh_agent_forwarding
; по умолчанию"/etc/sudoers.d/ssh_auth_sock"
.
Также может быть определена следующая переменная для вызова задачи или роли (но она не будет работать, если определена как переменная группы или хоста инвентаризации):
scm_notify_on_updated
: Имя обработчика для уведомления, когда получение было изменено. По умолчанию"scm updated"
; обычно рекомендуется, чтобы пользовательские обработчики слушали"scm updated"
, вместо изменения имени уведомления.
Роль также установит факт scm_update_result
(по хосту) на результат задачи обновления.
Зависимости
Нет.
Пример плейбука
Следующий пример плейбука получает публичный репозиторий git и отображает сообщение после обновления:
- 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 }} был обновлен из {{ scm_url }} до {{ scm_update_result.after }}."
listen: scm updated
Лицензия
BSD
Информация об авторе
Крис Черч (cchurch)
ansible-galaxy install cchurch/ansible-role-scm