inqfen
Роль выкини в отдельный репозиторий и забирай перед стартом плейбука через ansible-galaxy
inqfen
Зато потом не придется трахаться если нужно для всех проектов внести изменение (типа шиблон докер файла изменить или ключи при деплое где-то), а везде все отдельно
Vladislav
inqfen
внес в роль - все подхватили
inqfen
Если у роли есть версионирование - внес в роль, сделал новый тег
Vladislav
inqfen
Потом огда в проектах вносишь необходимое изменение - указал новую версию роли для импорта
inqfen
Vladislav
в одном скрипте все проекты, ./deploy.sh bfn_api
и он делал всю работу
Vladislav
а мне нужно одну репу на все проекты, только чтобы разными командами их запускать
inqfen
Потому что был костыль
inqfen
А ты костыль причесываешь
inqfen
Меняешь деревянную перекладину на металлическую
Vladislav
)
inqfen
Но это все равно костыль
Vladislav
а ты предлагаешь отдельный реп заводить для деплоя отдельного проекта ?
inqfen
нет, почему, все, что относится к проекту - складывать в проект
Vladislav
и сделать один реп с общими данными для каждого проекта ? (где шаги деплоя описаны)
inqfen
создаешь в нем директорию deploy
inqfen
там заводишь inventory
inqfen
playbook, ключи на серверы, еще что-то
inqfen
А вот роли деплоя выносишь отдельно
inqfen
Иначе вот у тебя например 10 проектов, все разворачивались одинаково
Vladislav
ага, понял, ну я попробую сначало чтобы оно заработало хоть как-то, а потом уже просто вынесу отдельно в проекты inventory
inqfen
Потом в один проект например добавили новую БД
Vladislav
inqfen
А остальным она не нужна
✙ DarkKC ✙
inqfen
и что, будешь when пихать?
inqfen
а в другой добавили redis
inqfen
а в третий еще что-то
Vladislav
ок, т.е. общие таски в отдельный реп, специфичные для проекта - вместе с проектом, верно ?
inqfen
из общих тасков делаешь роль и ее отдельно
inqfen
Остальное в проект
inqfen
потом плейбуки получатся типа
- hosts: project1
tasks:
- name: include postges role
include_role: postges
- name: include redis role
include_role: redis
- name: include deploy role
include_role: deploy
- hosts: project2
tasks:
- name: include mysql role
include_role: mysql
- name: include elascticsearch role
include_role: elasticsearch
- name: include deploy role
include_role: deploy
- name: make migrations
shell: docker exec project d:m:m
inqfen
Ну что-то типа вроде
inqfen
И не будет лабиринтов из это делать это не делать, деплой апдейтится несовместимо (убирается таск например) - нужно все проекты одновременно подстраивать
Zhyhanov
Vladislav
ага, понял, ок, именно так тогда и буду пробовать сделать
Zhyhanov
Спасибо ;)
inqfen
inqfen
Разберись, очень пригодится, он простой
Egor
Vladislav
inqfen
Rgboy
Ребят, из тех кто пользует ansible из docker, вам встречались подводные камни ?
Egor
Rgboy
Ты про AWX?
не я в целом про эту связку.
со своей колокольни не вижу проблем для запуска в прод, и решил тут уточнить
Egor
Egor
Egor
Хотя какая разница. Проблем нет
Egor
Ну если не специфичные кейсы
Egor
Например если модульные зависимости
Rgboy
inqfen
inqfen
Подготовил для себя образ и юзаю
inqfen
Из gitlab ci
inqfen
А какой сакральный смысл его запускать из docker если ci нет?
Setox
тоже используем, проблем пока нет
Vladislav
Еще хотел уточнить.
Я хочу отдельный файл с ролью сделать для бэкапа данных на сервере, отдельный для загрузки нового кода на сервер и перезапуска контейнеров.
А вот перед этим всем на сервере нужно установить питон.
Ставил таким образом:
---
- name: "Copy to BFN stage"
hosts: bfn_api
gather_facts: no
pre_tasks:
- name: 'install python2'
raw: sudo apt-get -y install python
tasks:
- name: synchronize temp directory
synchronize:
src: /Users/develops/Documents/projects/temp_bfn/
dest: /home/ubuntu/temp_bfn
mode: 0644
(не нашел ничего подобного в репах у https://github.com/geerlingguy)
Мне этот пре-таск перед каждым другим нужно исполнять, или сделать новую роль специально для этого ?
(ведь, по-сути, этот пре-таск нужен всего-лишь один раз.
Думаю, может быть, лучше сделать отдельную роль / playbook, который просто подготовит сервер, установит в нем все ПО, подготовит структуры папок и т.д.)
inqfen
>отдельную роль / playbook, который просто подготовит сервер, установит в нем все ПО, подготовит структуры папок
this
inqfen
все серверы должны быть одинаковые
inqfen
поэтому же и hostvars в идеале не должно быть
inqfen
это уже индивидуальность
Vladislav
все серверы изначально не имеют этого пакета
Vladislav
и на все он устанавливается изначально
inqfen
Ну вот, я вот запилил роль подготовки сервера
inqfen
Обновляются пакеты, обновляется ядро, ставятся питонопакеты все, ставится докер
inqfen
В итоге я точно уверен, что на всех серверах абсолютно одинаковый состав ПО, одинаковая версия ядра и прочее
Vladislav
понял, спасибо, тогда и я такую рольсоздам
inqfen
Ага, ну и обновление ядра например на нескольких десятках инстансов - поменять в переменной версию ядра и запустить плейбук
bebebe
Rgboy