scm

Статус сборки Galaxy

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; по умолчанию не указано, но по умолчанию для модуля svnfalse.
  • scm_key_file: Путь к файлу приватного ключа на целевом узле для использования при получении; по умолчанию не указано; поддерживается только для scm_type, равного git.
  • scm_purge: Удалить неотслеживаемые файлы при обновлении; поддерживается только для scm_type, равного hg; по умолчанию не указано, но по умолчанию для модуля hgfalse.
  • scm_recursive: Логическое значение, указывающее, следует ли клонировать репозиторий рекурсивно, включая подмодули; поддерживается только для scm_type, равного git; по умолчанию не указано, но по умолчанию для модуля gittrue.
  • scm_remote: Имя удаленного репозитория; поддерживается только для scm_type, равного git; по умолчанию не указано, но по умолчанию для модуля git"origin".
  • scm_switch: Вызов svn switch перед обновлением; поддерживается только для scm_type, равного svn; по умолчанию не указано, но по умолчанию для модуля svntrue.
  • scm_track_submodules: Логическое значение, указывающее, отслеживают ли подмодули последние коммиты; поддерживается только для scm_type, равного git; по умолчанию не указано, но по умолчанию для модуля gitfalse.
  • scm_update: Логическое значение, указывающее, следует ли получать новые ревизии из исходного репозитория; по умолчанию не указано, но модули по умолчанию равны true.
  • scm_verify_commit: Логическое значение, указывающее, следует ли проверять коммиты, подписанные GPG; поддерживается только для scm_type, равного git; по умолчанию не указано, но по умолчанию для модуля gitfalse.
  • 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)

О проекте

Checkout code from SCM (git/hg/svn).

Установить
ansible-galaxy install cchurch/ansible-role-scm
Лицензия
other
Загрузки
2049
Владелец
Python/Django/Ansible, will code for sweet tea and beer.