NHasper
Sergey
Эм... я вообще не уверен, что оно должно работать. Ибо там свой шелл и нет python/scp.
NHasper
я правда не силен в коде и не очень понял что в гит они положили
Sergey
Судя по тому что я там вижу, это набор команд вида echo что-то¦ ssh mikrotik
Sergey
Полноценные модули вроде ping там не заработают
Sergey
NHasper
чтобы продолжить работу.
Sergey
Ну при беглом взгляде ничего кроме, собственно, ansible, ssh и bash там не нужно
NHasper
Sergey
Я, правда, не понимаю почему они expect не использовали в ansible для решения своих задач
Sander
Всем привет
Sander
хотелось бы задать вопрос по ansible
Sander
есть в папка defaults/main.yml, где я могу писать переменные или даже массив с key->value
есть папка vars, где я могу пистаь тоже самое, в чем смысл и разница? между папками defaults, vars.
Sander
мне кажется что vars/ папка просто приоритетней и позволит перезаписать переменные, котоыре мы указывали в defaults.
Ivan
vars редко очень нужен, когда вы вызываете зависимые роли через meta/main.yml и надо в них передать переменные какие-то
Ivan
Других применений я не знаю
Александр
Ivan
Да, у vars приоритет выше, чем у default
Ivan
Но для какой-то конкретной роли нет смысла использовать default и vars
Serge
Ну и да, там вон говорят дока есть.
Serge
Ivan
?
Serge
У меня бывает, что и то и то есть
Ivan
А зачем?
Serge
Вот ровно за тем
Serge
Два одной и той же переменной смысла правда нет.
Serge
Если есть в vars, то из defaults уже точно не заполнится
Serge
Но иногда что-то надо и в defaults положить
Ivan
У меня другой вопрос, зачем в vars класть?
Serge
defaults Чаще всего для обеспечения обратной совместимости.
Ivan
Ну, кстати, да
Ivan
а почему в defaults ее неположить?
Ivan
Они отличаются только приоритетом
Ivan
Serge
Что будет, если в контексте уже установлена такая переменная раньше, в другой роли?
Ivan
Ну, ты можешь поставить переменную, которая выше vars по приоритету
Ivan
И тоже все сломать
Serge
Ivan
:-)
Serge
vars перезапишет значения, если они раньше выставлены были
Ivan
нет
Serge
Иди доку читай и пробуй
Ivan
http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Ivan
Но да, сложно вызвать случайно :-)
Ivan
Serge
Консоль только
Serge
Ну и про коннекшен
Serge
Таким образом нет такого места в плейбуке, которое круче vars
Vlad
исторически переменные роли хранились в vars. В версии 1.3 добавили defaults. С тех пор и осталось два каталога с одинаковой функцией: http://devdocs.io/ansible/playbooks_roles
Serge
Vlad
согласен, не одинаковая - приоритет разный
Serge
Serge
Serge
Sander
😎
Ivan
Нет. Честно
Ты подрузамеваешь, что я не читал доку, но я ее читал и знаю, что есть переменные, приоритет которых выше, чем role vars
Serge
Ivan
role and include vars
block vars (only for tasks in block)
task vars (only for the task)
extra vars (always win precedence)
Serge
Блок и таск внутри роли
Serge
Да, консоль, но это вне плейбука
Serge
Таким образом снаружи роли внутри плейбука ничего такого нет.
Serge
Те ничто во внешнем yml не может перетереть vars
Serge
extra vars это вообще жесткий хак, который очень много всего может сломать, если им такие переменные выставлять:)
Serge
Его приоритет собственно и нужен чтобы внедриться внутрь какой-нибудь роли и нахачить поведение
Serge
Ivan
Детей ужином кормлю, извини
Serge
Serge
А мои гуляют
Ivan
roles:
- role: test
var1: 'outside'
Ivan
Вот так можно, но явно надо вызвать
Ivan
cat roles/test/tasks/main.yml
- name: debug
debug:
var: var1
Ivan
cat roles/test/vars/main.yml
var1: inside
Ivan
TASK [test : debug] ************************************************************
ok: [localhost] => {
"var1": "outside"
}