Konstantin
внутри роли разбито все по файлам. эт понятно. но бить vertica.ins`/`vertica.conf на роли чет как то не то вроде. как вариант можно скрипты использовать…
Dmitry
Не с той стороны к задаче подходим :) вот и "не то"
Konstantin
придеться бить на роли… скрипты это еще один слой про который надо будет помнить..
Anonymous
Странно, я удалил файл, который ранее создал через copy: Но при повторном запуске таска, файл снова не копируется на целевую систему =(
Dmitry
Коллеги, привет! Есть вопрос по переменным : хочу в самом начале плейбука единоразово задать переменную. Переменная - вывод из shell-а. В group_vars/all/vars.yml - забиваю следующее: —- hosts: all tasks: - name: create_token shell: ls register: ls_var global_token: "{{ls_var.stdout}}" добавляю дебаг таск для определенной роли - вызываю и получаю ошибку неопределенной переменной ls_var При этом, если заменить в описании переменной ls_var.stdout на обычный текст - переменная global_token вполне нормально определяется и выводится при дебаге
Aleksey
в варсах вроде не идет выполнение тасков
Dmitry
в варсах вроде не идет выполнение тасков
ага, тоесть таким методом я не задам переменную (имеется в виду - вывод шела в перменную в vars) ладно, буду ковырять дальше, спасибо!
Dmitry
Подозреваю, что придется инклюдить в site.yml еще один плейбук, который будет задавать вот эти переменные
Konstantin
удобства для теги используй
теги понятно, но просто там суть другая. писать еще раз не хочется )
Sergey
теги понятно, но просто там суть другая. писать еще раз не хочется )
что именно писать ещё раз? роль одна, теги задают вызываемую часть
Sergey
--- # tasks file for haproxy - include: install.yml tags: - install - include: configure.yml tags: - configure handlers: restart haproxy - include: stop.yml tags: - stop, restart - include: start.yml tags: - start, restart - include: status.yml tags: - status
Aleksey
немного костыль но лучше чем таски перед ролью
citius
есть же pre_tasks
citius
правда не ассоциируешь с конкретной ролью
Aleksey
претаск выглядит как хрень
Konstantin
что именно писать ещё раз? роль одна, теги задают вызываемую часть
{ role: xxx, tags: [ aaa, vvv ] } — есть роли которые используются в разных плейбуках. где то нужно только инстал сделать, где то и инсталл и конфигурация
Aleksey
почему?
зрительно. :)
Aleksey
ну и вообще выглядит как официально зарегистрированный костыль
Sergey
{ role: xxx, tags: [ aaa, vvv ] } — есть роли которые используются в разных плейбуках. где то нужно только инстал сделать, где то и инсталл и конфигурация
...вон оно что, Михалыч.... (С) Не зная деталей, сложно рекомендовать что-то конкретное. Лично я на своих проектах пользуюсь очень простой философией: одна роль = один компонент. Если ему нужен ещё кто-то - ок, вызываем другую роль. Явно, неявно, с тегами, без тегов - это уже вторичные детали, и "your mileage may vary".
citius
>Если ему нужен ещё кто-то - ок, вызываем другую роль. а можно пример кода для чего-то боль-мень сложного? интересно. например какой нить компонент опенстека который зависит от nginx, haproxy.
Dmitry
@im_citius @freeseacher Спасибо, коллеги, буду ковырять разные решения. Сначала надо понять самому, как лучше сделать.
Dmitry
@im_citius ну, кстати, данная хрень - для разворачивания OS - из шела генерю токен. Думаю, что легче будет под каждую инсталяцию просто генерить токен вручную
Sergey
>Если ему нужен ещё кто-то - ок, вызываем другую роль. а можно пример кода для чего-то боль-мень сложного? интересно. например какой нить компонент опенстека который зависит от nginx, haproxy.
пожалуйста. из того, что под рукой: (roles/Graylog2/graylog-ansible-role/meta/main.yml) —- dependencies: - role: 'lesmyrmidons.mongodb' when: graylog_install_mongodb - role: 'elastic.elasticsearch' when: graylog_install_elasticsearch - role: 'jdauphant.nginx' when: graylog_install_nginx
Sergey
но это, скажем так, более высокоуровневый вызов - тегов тут нет, здесь скорее аналог автоуcтановщика. зато автовызовы ролей - есть
Sergey
или куда-то вот сюда: roles/rundeck/meta/main.yml: dependencies: - { role: geerlingguy.java, java_packages: [ 'java-1.8.0-openjdk' ], java_home: '/usr/lib/jvm/jre' }
citius
@tnt4brain спс.
Anonymous
Подскажите, плз, как сделать что бы файл всегда создавался на целевой системе? Даже если я его удалил на ней руками
Anonymous
Anonymous
В первый раз он прилетел на целевую систему. Потом я его поменял у себя, но он не обновился на целевой системе и я его удалил. Но при повторном запуске он не появляется, хотя после выпоолнения таска всё зелёным и ок
Sergey
http://docs.ansible.com/ansible/latest/copy_module.html#copy force=yes если не появляется - значит, ты имеешь в виду один файл, а ансибл обращается к другому
Anonymous
Хмм, щас форс попробую, спасибо
Anonymous
И правда помогло, спасибо.
Sergey
пожалуйста
matt
посоны, у меня есть две роли - nginx и docker, у обоих в зависимостях стоит роль base. если я назначу обе этих роли на одну тачку, то base два раза применится?
Aleksey
Да
matt
а почему так сделано
Konstantin
Один раз, почему два
Konstantin
Один раз изменин, второй раз нет
matt
ну плэя то два получится
matt
а вот и нифига, один раз он плэй делает если роли пересекаются, проверил
Dmitrii
Такой вопрос. А у кого сколько переменных объявлено в среднем в файле group_vars для проектов?
matt
у меня больше всего скорей в hosts_vars
Lev
Было?
Lev
А тем временем, сегодня Ansible обновился до версии 2.4 Из основных изменений: — Множество новых модулей для облаков, сетей, windows — become для windows хостов — Новая директива order, позволяющая переупорядочивать выполнение тасков на хостах — Директиву include разделили на import/include — Много улучшений в inventory — Перестали поддерживаться python 2.4, 2.5 https://goo.gl/q1vfCu
Nklya
Неа
Aleksey
инвентори в виде yaml!
Aleksey
ура
manefesto
про windows надо почитать
manefesto
кто нибудь щупал chocolatey ?
manefesto
в винде так просто не задашь http_proxy через который chocolatey может скачивать пакеты
manefesto
на сколько я знаю, ансибл можно использовать локально, то есть он будет по крону накатывать плейбуки дергая их из git'а
G3rhard
кто нибудь щупал chocolatey ?
если поищешь по истории сообщений - там можно много чего прочитать про него )
Pavel
инвентори в виде yaml!
ну не знаю, у меня давно уже сам "инвентори" - только декларирование групп и хостов (только имена), а все параметры - в переменных в хост_варс и груп_варс (а там ямл)
CMy3u🐈
Кто нибудь в курсе чат по докеру есть?
CMy3u🐈
Спс
Aleksey
или же официальная группа. @ru_docker
Vit
Коллеги, просветите пожалуйста. Есть приложение разворачивается очень просто. из архива :) Используем модуль unarchive. ансибл каждый раз распаковывает архив и заменяет файлы. как это делать правильным образом? чтобы распаковал 1 раз, и если директория существует, то не повторял каждый раз
Aleksey
через пару итераций решения проблемы придете к пакетам.
Aleksey
проверено
Vit
что за пакеты?
Aleksey
пакаты операционой системы
Aleksey
deb/rpm
Vit
всмысле поставлять приложение в виде пакетов?
Aleksey
там много на самом деле костыльных решений разной степени рабочести.
Vit
там много на самом деле костыльных решений разной степени рабочести.
печалька. я думал уже есть какой то "бест практис"
Aleksey
unarchive в /tmp/random сopy /tmp/random /opt/app
manefesto
- name: check archive exist stat: path: /tmp/xxxx register: stat_result
Vladimir
+ за пакеты. штатный и самый универсальный способ
Dmitry
печалька. я думал уже есть какой то "бест практис"
конечно есть. пакеты, а не мастурбация
Aleksey
наименее костльное. но всё равно потом будут с ним вопросы и в итоге пакеты.
manefesto
делай через stat
Aleksey
я сейчас тоже на этом перепутье