bitbucket-sources

Ansible Роль: Bitbucket Источники

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

Эта роль клонирует/обновляет репозиторий Bitbucket cloud, используя ключ доступа. Клонированный репозиторий может находиться в любом месте, принадлежащем указанному пользователю. Если пользователь или место не существуют, они будут созданы.

Эту роль можно использовать более одного раза с помощью include_role/import_role. Другие методы не тестировались.

Тестируемые сценарии в CI:

  • публичные git репозитории по анонимному https
  • публичные git репозитории по ssh с использованием ключа
  • приватные git репозитории по ssh с использованием ключа
  • публичные hg репозитории по анонимному https

TODO: Поддержка приватных hg репозиториев требует способа указания ssh ключа. TODO: Поддержка публичных hg репозиториев по ssh требует тестирования (ключ должен быть в конфигурации ssh)

ПРИМЕЧАНИЕ: Это было перенесено с cognifloyd/ansible-role-bitbucket_sources.

Требования

Эта роль предполагает, что исполняемый файл для управления версиями (git или hg) уже установлен. Если вам нужно указать нестандартное местоположение исполняемого файла, задайте опциональную переменную bitbucket_sources_executable.

Переменные роли

Формирование URL для клонирования

Эта роль использует три переменные (которые я удобно назову <type>, <account>, и <name>) для генерации URL репозитория Bitbucket cloud:

  • bitbucket_sources_repo_type (допустимые варианты: "git", "hg")
  • bitbucket_sources_repo_account
  • bitbucket_sources_repo_name

В зависимости от того, является ли <type> git или hg, URL будет (см. документацию Bitbucket):

Вы можете установить булеву переменную bitbucket_sources_altssh в "yes", чтобы использовать altssh URL:

Если вы не хотите использовать ssh, задайте bitbucket_sources_protocol значение https (по умолчанию ssh). Эта роль поддерживает только анонимный https. При использовании https, это будут URL:

  • https://bitbucket.org/<account>/<name>.git
  • https://bitbucket.org/<account>/<name>

Место назначения клонирования

Репозиторий будет клонирован в bitbucket_sourcces_dest, принадлежащий bitbucket_sources_owner:bitbucket_sources_group (удобно называется как <dest>, <owner> и <group>). Родительский каталог <dest> должен принадлежать <owner>:<group> и будет создан, если он не существует. Каталог будет иметь пермишны, определенные в bitbucket_sources_mode.

Клон будет создан пользователем bitbucket_sources_owner с группой bitbucket_sources_group, и будет иметь разрешения этого пользователя/группы.

Bitbucket требует некоторые учетные данные для доступа к репозиторию, поэтому вам нужно будет предоставить ключ доступа Bitbucket в bitbucket_sources_key. Если ключ не следует копировать с контроллера на ansible_host (например, ключ был сгенерирован на целевом ansible_host, или вы развернули ключ в другой роли/плей, и т.д.), то установите bitbucket_sources_key_copy в false или no.

** TODO: ** Добавить возможность отправки публичного ключа в Bitbucket. Это должно получить ключ, в зависимости от значения bitbucket_sources_key_copy, с ansible_host (когда true) или с ansible_controller (когда false). Это может потребовать дополнительной переменной для суффикса, но скорее всего это будет {{ bitbucket_sources_key }}.pub. Соответствующие API – deploy-keys (для только чтения к одному или нескольким репозиториям) ssh-keys (для полного доступа для конкретного пользователя). Потребуются какие-то учетные данные для входа.

** defaults/main.yml **:

bitbucket_sources_repo_type: git
bitbucket_sources_owner: "{{ ansible_user }}"
bitbucket_sources_group: "{{ ansible_user }}"
bitbucket_sources_mode: 0755
bitbucket_sources_altssh: no
bitbucket_sources_key_dest: "~{{ bitbucket_sources_owner }}/.ssh/{{ bitbucket_sources_key | basename }}"
bitbucket_sources_key_copy: yes
bitbucket_sources_force: no

** vars/main.yml **:

none

** параметры роли **:

Вы должны установить эти параметры роли (по умолчанию их нет, и утверждение завершится неудачей, если они не определены):

bitbucket_sources_repo_account: "<пользователь bitbucket>"
bitbucket_sources_repo_name: "<репозиторий bitbucket (без .git)>"
bitbucket_sources_dest: "~<пользователь>/scm/<account>/<name>.git"
bitbucket_sources_key: "~/.ssh/access_key"

Вы также можете переопределить любые из значений по умолчанию (см. выше). Другие опциональные переменные включают:

bitbucket_sources_version: a83b8a42
bitbucket_sources_executable: "/home/acme/gentoo-prefix/usr/bin/git"
bitbucket_sources_force: yes

** TODO: ** Я не знаю, как сделать так, чтобы hg использовал указанный ключ.

** глобальные переменные **: Любые переменные, которые читаются из глобальной области (т.е. hostvars, group vars и т.д.)

По умолчанию <owner> и <group> установлены в ansible_user.

ansible_user

** переменные из других ролей **: Любые переменные, которые читаются из других ролей

none

Зависимости

Нет внешних зависимостей.

Пример плейбука

- hosts: vagrant
  tasks:
    - name: Клонировать или принудительно обновить example-magnificent из bitbucket.
      include_role:
        name: theatro.bitbucket_sources
        allow_duplicates: yes
        public: no
      vars:
        bitbucket_sources_repo_type: git
        bitbucket_sources_repo_account: example
        bitbucket_sources_repo_name: magnificent
        bitbucket_sources_dest: /var/scm/bitbucket/example/magnificent.git
        bitbucket_sources_owner: vagrant
        bitbucket_sources_group: vagrant
        bitbucket_sources_key: "~/.ssh/example_access_key"
        bitbucket_sources_force: yes

Лицензия

MIT

Информация об авторе

Создано Jacob Floyd, работает в Theatro, в 2017 году. Я извлек эти задачи из другого плейбука, который я писал. После написания большей части этой роли, я нашел webbylab.sources и Stouts.source. Название "sources" было намного лучше, чем мое рабочее "bitbucket-repo-clone", поэтому я использовал "bitbucket-sources" вместо этого. К сожалению, я использую EL 7, так что эти роли, ориентированные на Ubuntu, потребовали бы адаптации, даже если бы я нашел их до того, как написал большую часть этой роли. Хотя я не использовал больше, чем идеи, им заслужено приведение к признанию за то, что они подумали об этом раньше меня.

О проекте

Clone/update a bitbucket cloud repository

Установить
ansible-galaxy install cognifloyd/ansible-role-bitbucket-sources
Лицензия
Unknown
Загрузки
94
Владелец