cchurch.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.scm