inqfen
Роль выкини в отдельный репозиторий и забирай перед стартом плейбука через ansible-galaxy
inqfen
Зато потом не придется трахаться если нужно для всех проектов внести изменение (типа шиблон докер файла изменить или ключи при деплое где-то), а везде все отдельно
inqfen
внес в роль - все подхватили
inqfen
Если у роли есть версионирование - внес в роль, сделал новый тег
inqfen
Потом огда в проектах вносишь необходимое изменение - указал новую версию роли для импорта
Vladislav
Потом огда в проектах вносишь необходимое изменение - указал новую версию роли для импорта
так раньше было (только у нас были шелл-скрипты), мне нужно сделать подобное только с ansible
Vladislav
в одном скрипте все проекты, ./deploy.sh bfn_api и он делал всю работу
Vladislav
а мне нужно одну репу на все проекты, только чтобы разными командами их запускать
inqfen
так раньше было (только у нас были шелл-скрипты), мне нужно сделать подобное только с ansible
Ну, тогда подобное имеет право на жизнь. Но когда я такое видел, это значило как правило, что тут CD уже как бы прямо в двери стучится
inqfen
Потому что был костыль
inqfen
А ты костыль причесываешь
inqfen
Меняешь деревянную перекладину на металлическую
Vladislav
)
inqfen
Но это все равно костыль
Vladislav
а ты предлагаешь отдельный реп заводить для деплоя отдельного проекта ?
inqfen
нет, почему, все, что относится к проекту - складывать в проект
Vladislav
и сделать один реп с общими данными для каждого проекта ? (где шаги деплоя описаны)
inqfen
создаешь в нем директорию deploy
inqfen
там заводишь inventory
inqfen
playbook, ключи на серверы, еще что-то
inqfen
А вот роли деплоя выносишь отдельно
inqfen
Иначе вот у тебя например 10 проектов, все разворачивались одинаково
Egor
только ansible examples, что мало чем помогло
У Fedora в открытом доступе лежит очень много внутренней кухни на Ansible
Vladislav
ага, понял, ну я попробую сначало чтобы оно заработало хоть как-то, а потом уже просто вынесу отдельно в проекты inventory
inqfen
Потом в один проект например добавили новую БД
inqfen
А остальным она не нужна
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
И не будет лабиринтов из это делать это не делать, деплой апдейтится несовместимо (убирается таск например) - нужно все проекты одновременно подстраивать
Vladislav
ага, понял, ок, именно так тогда и буду пробовать сделать
Egor
Дайте федора гит :))
https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/
Zhyhanov
Спасибо ;)
inqfen
Vladislav
Как делать роли - посмотри в ansible galaxy
спасибо, я еще в нем не разобрался, пока смотрел только в туториале
inqfen
Разберись, очень пригодится, он простой
Egor
спасибо, я еще в нем не разобрался, пока смотрел только в туториале
https://github.com/geerlingguy Вот этот парень неплохо пишет роли
Rgboy
Ребят, из тех кто пользует ansible из docker, вам встречались подводные камни ?
Rgboy
Ты про AWX?
не я в целом про эту связку. со своей колокольни не вижу проблем для запуска в прод, и решил тут уточнить
Rgboy
Можешь уточнить что ты хочешь сделать?
использовать docker контейнер с ansible, для администрирования ~50 linux серверов
Egor
Хотя какая разница. Проблем нет
Egor
Ну если не специфичные кейсы
Egor
Например если модульные зависимости
Rgboy
Из какого-то ci? Или локалхоста?
Просто с локалхоста внутри локальной сети.
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
Ага, ну и обновление ядра например на нескольких десятках инстансов - поменять в переменной версию ядра и запустить плейбук