Alex
у меня происходит cat sh файлов.
не важно
TASK [Test cyrilic] ***
changed: [localhost] => changed=true
cmd: cat /tmp/test.sh
delta: '0:00:00.010738'
end: '2020-08-04 15:10:45.477673'
rc: 0
start: '2020-08-04 15:10:45.466935'
stderr: ''
stderr_lines: <omitted>
stdout: Привет мир
stdout_lines: <omitted>
Alex
возможно кодировка отличается от локали
tati_v_p
tati_v_p
dremon43
Всем привет.
Подскажите как передать на удаленную машину пароль от sudo на root в строке при запуске плейбука.
Сейчас плейбук запрашивает пароль в консоли, а нужно, чтобы он был передан при запуске .
Anastasia
Sebor▂▅▇█▓▒░
Vladimir
А такой вот вопрос, если я условно хочу сделать канарейку в ансибле.
То кроме как "запустить на одном хосте" вариантов у меня нет?
Sebor▂▅▇█▓▒░
Sebor▂▅▇█▓▒░
Vladimir
а какие еще нужны варианты?
Хочется не терять возможность раскатить странную конфигу в это же время, а это только ветки в гите и постоянные правки
Sebor▂▅▇█▓▒░
Sebor▂▅▇█▓▒░
Отделение Bereke Bank
dremon43
так а сейчас ты как запускаешь?
Да я так и запускал просто ты в прошлом письме написал, что можно добавить в инвентори или в плейбук. Сейчас все заработало с ключиком -b, всем спасибо!
dremon43
Balagur
подскажите, пожалуйста, темплейтами создаются файлы в каталоге, а как проверить, что файлов там других нет и удалить их в случае, если они есть? :)
Vladislav 👻
state: absent
Balagur
state: absent
ну как удалить понятно, а как узнать что удалять? вычищать каждый раз директорию что ли
Anastasia
ну вы же знаете имя файла из темплейта, удаляйте все что не равно ему
Grek 🇺🇦
удалить директорию. потом пересоздать ее и залить темплейт?
Dmitry
Как бы мне сделать wait_for но не ждать все хосты, а до первого сработавшего хоста
Влад 🇺🇦
помогите плиз, есть ли что то подобно на ansible?
from itertools import cycle
gs_hostname = ["gs01", "gs02", "gs03", "gs04"]
wl_hostname = ["wl01", "wl02"]
for a,b in zip(gs_hostname, cycle(wl_hostname)):
print (a,b)
result:
gs01 wl01
gs02 wl02
gs03 wl01
gs04 wl02
Отделение Bereke Bank
Фильтр product попробуй
Влад 🇺🇦
Фильтр product попробуй
почти, но не то..
ok: [localhost] => (item=[u'gs-01', u'wl-01']) => {
"msg": "gs-01 wl-01"
}
ok: [localhost] => (item=[u'gs-01', u'wl-02']) => {
"msg": "gs-01 wl-02"
}
ok: [localhost] => (item=[u'gs-02', u'wl-01']) => {
"msg": "gs-02 wl-01"
}
ok: [localhost] => (item=[u'gs-02', u'wl-02']) => {
"msg": "gs-02 wl-02"
}
ok: [localhost] => (item=[u'gs-03', u'wl-01']) => {
"msg": "gs-03 wl-01"
}
ok: [localhost] => (item=[u'gs-03', u'wl-02']) => {
"msg": "gs-03 wl-02"
}
ok: [localhost] => (item=[u'gs-04', u'wl-01']) => {
"msg": "gs-04 wl-01"
}
ok: [localhost] => (item=[u'gs-04', u'wl-02']) => {
"msg": "gs-04 wl-02"
}
Sebor▂▅▇█▓▒░
[IPT] Dmitry
а можно как-то lineinfile remove lines between?
Sergey
Простынь в чат кидать - признак плохого воспитания. А те, кто с мобилы читает, им как с твоим творением знакомиться?
Влад 🇺🇦
Sergey
А я чего, я-то с десктопа. Но напоминаю о том, что про "простыни" тоже есть в правилах (пин или свойства).
А для решения своего вопроса тебе нужен cycler.
Anna
Можно ли переменные как-то назначать в зависимости от тега в строке вызова плейбука? Или надо дополнительно передать переменную, из которой формировать имя файла с переменными. Плейбук вызывает роль.
Sergey
Anna
Нет, если будет include_vars с тегом, то надо таких 12 пунктов лишних, для каждого тега. А если через один пункт, то переменная содержит имя включаемого файла переменных. Тогда одной таски достаточно.
Anna
Задача такая- набор тасков одинаковый для фронтэнд, свой одинаковый набор для бэкенд. Но для разного софра у них разные сервера и каталоги.
Anna
Софта
Sergey
Anna
А... Точно. Одни и те же сервера можно же включать в разные группы
Anna
Спасибо. Но роль одна, чтоб не плодить. Разделять подзадачи тегами можно.
Anna
И тогда не в роли, а в калатоге group_vars переменные. А в роли общие другие переменные.
Sergey
^^^ +++
Sergey
Ещё могу добросить: вызовы этой самой роли с параметрами по разным плеям разложить = максимум делкларативности/идемпотентности + отсутствие YaML-разработки.
Evgenii
День добрый, облазил интернет с докой, но никак не могу понять, ансибл умеет что--то вроде eval?
Есть у меня list в котором ansible_variables (facts), но при дебаге они просто печатаются как string:
ansible_devices[sdc].partitions[sdc1] ...
ansible_devices[sdc].partitions[sdc2] ...
как бы это интерпретировать в eval(ansible_devices[sdc].partitions[sdc1]) что бы получить данные?
Anna
Влад 🇺🇦
Sergey
Sergey
Влад 🇺🇦
ну я к такому решению дошел, пока не нашел то что выше кинул)
Sergey
Для описанной ситуации подходит cycler, и там был бы всего один вызов, а вместо него ты наворотил три фильтра подряд.
Div
Отделение Bereke Bank
Grek 🇺🇦
https://matplotlib.org/cycler/
Grek 🇺🇦
если не гуглится в ансибл - гуглите в питон
Отделение Bereke Bank
Я не умею в эльфийский
Grek 🇺🇦
ну камон, чуточку фантазии, и все находится
Влад 🇺🇦
я вот тоже не понял про cycler, на питоне я то его сделал, но как запихнуть в ансибл?
from itertools import cycle
gs_hostname = ["gs01", "gs02", "gs03", "gs04"]
wl_hostname = ["wl01", "wl02"]
for a,b in zip(gs_hostname, cycle(wl_hostname)):
print (a,b)
Evgenii
Отделение Bereke Bank
Sergey
Если что, почти любой YaML-файл Ansible при чтении прогоняет через шаблонизатор.
Sergey
Соответственно, конструкции вида {% set ЪУЪ = blahblahblah %} работают в любом месте справа от двоеточия.
Влад 🇺🇦
буду знать, спасибо!
Sergey
UglyKoyote
Коллеги, а подскажите, "что надо ударить", что бы ансибл видел изменение в коде таски? В выхлопе -vvv вижу что ансибл пытается на удаленной машине выполнить код, который давно закоментированн