Необходимое условие
Каждая роль имеет свой собственный репозиторий git.
Типичная структура проекта
Это может быть оспорено.это то, что мне нравится использовать в различных моих проектах:
├── inventories
│ ├── dev
│ │ ├── group_vars/
│ │ └── hosts.ini
│ └── prod
│ ├── group_vars/
│ └── hosts.ini
├── group_vars/
├── host_vars/
├── files/
├── templates/
├── roles
│ ├── localy_versionned_role1/
│ ├── localy_versionned_role2/
│ ├── requirements.yml
│ ├── .gitignore
├── ansible.cfg
├── README.md
├── some_playbook.yml
├── other_playbook.yml
role / .gitignore
# Ignore everything in dir...
/*
# ... but current file...
!.gitignore
# ... external role requirement file
!requirements.yml
# ... and configured custom/local roles
!localy_versionned_role*/
role / needs.yml
# Classic galaxy role
- src: galaxy_user.role_name
# Git available role
- src: git@git.service.com:path/to/repo.git
scm: git
version: master
name: local_role_name
Youнужно только перечислить «главные» роли, также будут загружены зависимости (перечисленные в meta/main.yml
роли).
Ansible.cfg
Мы проверяем, что роли ищутся и загружаются внаша локальная папка
roles_path = roles
Рабочий процесс для развертывания из вашего проекта:
- Клонирование репозитория вашего проекта
- Загрузка внешних ролей:
ansible-galaxy install -r roles/requirements
- Запустите вашу игровую книгу:
ansible-playbook -i inventories/dev some_playbook.yml
Идем дальше
Загрузка ролей в виде рабочих пространств git
По умолчанию ansible-galaxyзагружает из git и удаляет структуру локального хранилища (то есть каталог .git
).Если вы хотите загрузить роли и продолжить работу над ними (изменить, зафиксировать, нажать ...), вы можете сохранить структуру git с помощью:
ansible-galaxy install -g -r roles/requirements
Обратите внимание, что это приведет к записи файла meta/.galaxy_install_info
внутри вашей роли этот git будет выглядеть как новый, если вы уже не игнорировали.
Обновление ролей после первой установки
Роли не будут обновляться новой версией (особенно из galaxy), если ониуже установлено.Для принудительного обновления используйте:
ansible-galaxy -f -r roles/requirements.yml
Конечно, вы также делаете это, чтобы переключиться на версию рабочей области git (или сбросить ее до версии, указанной в файле требований)
ansible-galaxy -f -g -r roles/requirements.yml