Anonymous
есть плейбук что ставит и конфигурирует постгрю на центос и на убунту
Anonymous
пути до конфигов и данных там разные
Anonymous
хотелось бы задавать их на основе дистра
Boris 🦍
Egor
Anonymous
не удобно
tutunak
Время деплоя вырастает
Вот тут вроде солюшн, но я не уверен https://stackoverflow.com/questions/18794808/how-do-i-get-logs-details-of-ansible-playbook-module-executions
Anonymous
проитмер таска
Anonymous
- name: copy postgresql.conf
template:
src: "postgresql.conf.j2"
dest: "{{pg_data}}/postgresql.conf"
owner: "postgres"
group: "postgres"
mode: 0600
Anonymous
вот pg_data задать на основе знания какой дистр было бы круто
Sergey
всё придумано до нас
Logan
pg_data зависит не от ОС вообще-то)
его можно менять весьма свободно
Anonymous
не пришлось бы when везде пихать
Anonymous
Egor
ansible_distribution и include_vars
Egor
в инклуд варс кидаете как раз свои пути конфигов и и прочее, обрамив в переменные
Nikita
Anonymous
Egor
а в начале делаете нечто вроде
include_vars:
file: '{{ ansible_distribution }}'.yml
David
- name: install mandatory packages
apt:
name: "{{ item.value.apt.package_name }}"
with_dict: "{{ office.packages }}"
Ребят подскажите плз, есть такой таск и вот такой файл vars.
slack:
apt:
repo: deb https://packagecloud.io/slacktechnologies/slack/debian/ jessie main
package_name: slack-desktop
key:
url: https://packagecloud.io/slacktechnologies/slack/gpgkey
flameshot:
apt:
repo: ''
package_name: flameshot
key:
url: ''
Можно ли как то сделать чтобы если репо не указан то использовался стандартный убунты?
Egor
в отдельной таске
Egor
но ща придут админы, и опять скажут, что я предлагаю хуйню :-)
tutunak
Опять же в аутпуте все хосты будут
А ты на самом хосте после этого глянь в rsyslog, + можно глянуть на скрипт который ансибл формирует на стороне хоста, если там есть логгирование, то можно подхачить свой ансибл и логи будут на целевом хосте, Опять же в аутпуте все хосты будут https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/basic.py#L1715-L1753
Timur
Anonymous
Anonymous
ну имхо конечно
Egor
чо сразу костыль то? :-)
Egor
@tgadiev
Aleksey
Timur
Timur
Можно напрямую в логстеш логи слать
Timur
На основе фактов
Timur
Anonymous
ну раз уж Тимур говорит ) пойду по светлому пути
Anonymous
хоть все равно считаю костылем
Timur
Anonymous
ну я месяцев много у вас не сидел - небыло необходимости, так что скорей всего пропустил
Timur
- name: Load a variable file based on the OS type, or a default if not found
include_vars: '{{ platform_vars }}'
with_first_found:
- '{{ ansible_os_family }}.yml'
- '{{ ansible_distribution }}.yml'
- default.yml
loop_control:
loop_var: platform_vars
Boris 🦍
Anonymous
ну собствеено я так и понял
Anonymous
потому перепишу на такой вариант
Timur
В папку vars кладете файлы с переменными для разных дистров в соответствии с фактами
Timur
RedHat.yml
Debian.yml
и т.п.
Timur
Можете посмотреть как в наших ролях сделано
Timur
Они почти все разные дистрибутивы поддерживают
Anonymous
да я видел как так делают
Timur
Timur
Не нужно дублировать таски и обвешиваться when'ами
Anonymous
ну мб у меня не правильное понимание, но мне казалось что задать через set_facts удобнее
Timur
И если нужно добавить поддержку другого дистрибутива - достаточно просто положить еще один файл переменных с нужным названием, не меняя кода
Timur
Anonymous
тут пример не нанмого меньше с when
Anonymous
https://github.com/geerlingguy/ansible-role-postgresql/blob/master/tasks/variables.yml
Timur
Anonymous
да у вас защита стоит для инвалидов, что одним пальцем текст набирают 5 секунд
Timur
Timur
Это лучше?
Anonymous
у вас это где ?
Timur
у вас это где ?
В наших ролях. Вот тут можете глянуть:
https://github.com/lean-delivery
Timur
Самая популярная роль:
https://github.com/lean-delivery/ansible-role-java
Timur
А вот очень лаконичная роль:
https://github.com/lean-delivery/ansible-role-docker
Timur
Но поддерживает несколько разных дистров
Timur
Есть роли, которые работают не только на Linux, но и на Windows
Timur
И тоже благодаря грамотному ветвлению
Anonymous
посмотрю, спасибо
Egor
Egor
только с локального имейджа? там же оракл в апреле политику сменил и теперь яву качать надо после атворизации на сайте
Egor
а то я раньше жил на webupd8team репе, чтоб он напрямую с оракла качал
Egor
а теперь приходится у себя версию хранить 😞
Timur
Напрямую с оракла больше нельзя качать