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
в варсах вроде не идет выполнение тасков
Sergey
Dmitry
Подозреваю, что придется инклюдить в site.yml еще один плейбук, который будет задавать вот эти переменные
Sergey
Aleksey
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
претаск выглядит как хрень
citius
Aleksey
Aleksey
ну и вообще выглядит как официально зарегистрированный костыль
Sergey
{ role: xxx, tags: [ aaa, vvv ] } — есть роли которые используются в разных плейбуках. где то нужно только инстал сделать, где то и инсталл и конфигурация
...вон оно что, Михалыч.... (С)
Не зная деталей, сложно рекомендовать что-то конкретное. Лично я на своих проектах пользуюсь очень простой философией: одна роль = один компонент. Если ему нужен ещё кто-то - ок, вызываем другую роль. Явно, неявно, с тегами, без тегов - это уже вторичные детали, и "your mileage may vary".
citius
>Если ему нужен ещё кто-то - ок, вызываем другую роль.
а можно пример кода для чего-то боль-мень сложного?
интересно.
например какой нить компонент опенстека который зависит от nginx, haproxy.
Konstantin
Dmitry
@im_citius @freeseacher Спасибо, коллеги, буду ковырять разные решения. Сначала надо понять самому, как лучше сделать.
Dmitry
@im_citius ну, кстати, данная хрень - для разворачивания OS - из шела генерю токен. Думаю, что легче будет под каждую инсталяцию просто генерить токен вручную
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
Подскажите, плз, как сделать что бы файл всегда создавался на целевой системе? Даже если я его удалил на ней руками
Sergey
Anonymous
Anonymous
В первый раз он прилетел на целевую систему. Потом я его поменял у себя, но он не обновился на целевой системе и я его удалил. Но при повторном запуске он не появляется, хотя после выпоолнения таска всё зелёным и ок
Sergey
http://docs.ansible.com/ansible/latest/copy_module.html#copy
force=yes
если не появляется - значит, ты имеешь в виду один файл, а ансибл обращается к другому
Anonymous
Хмм, щас форс попробую, спасибо
Anonymous
И правда помогло, спасибо.
Sergey
пожалуйста
Aleksey
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'а
Pavel
инвентори в виде yaml!
ну не знаю, у меня давно уже сам "инвентори" - только декларирование групп и хостов (только имена), а все параметры - в переменных в хост_варс и груп_варс (а там ямл)
CMy3u🐈
Кто нибудь в курсе чат по докеру есть?
Pavel
CMy3u🐈
Спс
Aleksey
или же официальная группа. @ru_docker
Vit
Коллеги, просветите пожалуйста. Есть приложение разворачивается очень просто. из архива :) Используем модуль unarchive. ансибл каждый раз распаковывает архив и заменяет файлы.
как это делать правильным образом? чтобы распаковал 1 раз, и если директория существует, то не повторял каждый раз
Aleksey
через пару итераций решения проблемы придете к пакетам.
Aleksey
проверено
Vit
что за пакеты?
Aleksey
пакаты операционой системы
Aleksey
deb/rpm
Vit
всмысле поставлять приложение в виде пакетов?
manefesto
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
я сейчас тоже на этом перепутье