tati_v_p
ansible 2.9.9, python 3.8
ansible 2.9.9 python 3.6.9
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>
tati_v_p
у меня происходит cat sh файлов.
и комментарии в кириллице с echo в stdout теряются
Alex
возможно кодировка отличается от локали
tati_v_p
возможно кодировка отличается от локали
т.е принудительно назначить кодировку в cfg конфиге?
Alex
а конфиг ансибла не правили?
ну только в корне плейбука, но там нет ничего относительно локалей и кодировок
Alex
т.е принудительно назначить кодировку в cfg конфиге?
как минимум выполни - name: Test cyrilic shell: locale - name: Test cyrilic shell: env и посмотри что там возвращает
NM
LANG=en_US.UTF-8
LC_ALL=ru_RU.UTF-8
tati_v_p
LC_ALL=ru_RU.UTF-8
кстати. у меня пуст LC_ALL=
Sergey
кстати. у меня пуст LC_ALL=
Тогда должно работать как попало.
dremon43
Всем привет. Подскажите как передать на удаленную машину пароль от sudo на root в строке при запуске плейбука. Сейчас плейбук запрашивает пароль в консоли, а нужно, чтобы он был передан при запуске .
Anastasia
Всем привет. Подскажите как передать на удаленную машину пароль от sudo на root в строке при запуске плейбука. Сейчас плейбук запрашивает пароль в консоли, а нужно, чтобы он был передан при запуске .
добрый день! Если я правильно читаю документацию, то есть отдельный параметр для этого: https://docs.ansible.com/ansible/latest/user_guide/become.html#become-connection-variables
Vladimir
А такой вот вопрос, если я условно хочу сделать канарейку в ансибле. То кроме как "запустить на одном хосте" вариантов у меня нет?
dremon43
добрый день! Если я правильно читаю документацию, то есть отдельный параметр для этого: https://docs.ansible.com/ansible/latest/user_guide/become.html#become-connection-variables
Анастасия, спасибо. Запускаю плейбук с опциями: --ask-become-pass \ --extra-vars "ansible_become_password=****" все равно паролик запрашивает, что-то не могу никак в Ansible въехать.
Vladimir
а какие еще нужны варианты?
Хочется не терять возможность раскатить странную конфигу в это же время, а это только ветки в гите и постоянные правки
dremon43
можно в инвентори прописать, можно в самом плейбуке но это все плохая практика
Спасибо. А можно ли его передать при запуске с параметрами утилиты ansible-playbook?
dremon43
так а сейчас ты как запускаешь?
Да я так и запускал просто ты в прошлом письме написал, что можно добавить в инвентори или в плейбук. Сейчас все заработало с ключиком -b, всем спасибо!
Balagur
подскажите, пожалуйста, темплейтами создаются файлы в каталоге, а как проверить, что файлов там других нет и удалить их в случае, если они есть? :)
Vladislav 👻
state: absent
Balagur
state: absent
ну как удалить понятно, а как узнать что удалять? вычищать каждый раз директорию что ли
Anastasia
ну вы же знаете имя файла из темплейта, удаляйте все что не равно ему
Grek 🇺🇦
удалить директорию. потом пересоздать ее и залить темплейт?
Отделение Bereke Bank
ну как удалить понятно, а как узнать что удалять? вычищать каждый раз директорию что ли
1) создать руками переменную со списком того что удалять 2) создавать через set_fact список ненужных файлов, используя результат find-а, какието там фильтры и difference с списком того что нужно грузить
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" }
Balagur
А вы сами не знаете, что нужно удалить?
Ну идея понятна - find найти все и убрать из списка что нужно.
[IPT] Dmitry
а можно как-то lineinfile remove lines between?
Я и твой кот
а можно как-то lineinfile remove lines between?
https://docs.ansible.com/ansible/latest/modules/replace_module.html
Sergey
Простынь в чат кидать - признак плохого воспитания. А те, кто с мобилы читает, им как с твоим творением знакомиться?
Sergey
А я чего, я-то с десктопа. Но напоминаю о том, что про "простыни" тоже есть в правилах (пин или свойства). А для решения своего вопроса тебе нужен cycler.
Anna
Можно ли переменные как-то назначать в зависимости от тега в строке вызова плейбука? Или надо дополнительно передать переменную, из которой формировать имя файла с переменными. Плейбук вызывает роль.
Anna
Нет, если будет include_vars с тегом, то надо таких 12 пунктов лишних, для каждого тега. А если через один пункт, то переменная содержит имя включаемого файла переменных. Тогда одной таски достаточно.
Anna
Задача такая- набор тасков одинаковый для фронтэнд, свой одинаковый набор для бэкенд. Но для разного софра у них разные сервера и каталоги.
Anna
Софта
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
Ещё могу добросить: вызовы этой самой роли с параметрами по разным плеям разложить = максимум делкларативности/идемпотентности + отсутствие YaML-разработки.
Спасибо. Сейчас роли нет, разные плейбуки, но все равно ещё и дописано в строке. Команды через shell (идемпотентность не снилась), ошибки и все криво.
Влад 🇺🇦
Программировать на Ansible - бесценно!
ну мне кажеться это лучше чем в пайплайне использовать python скрипт с которого потом забирать данные
Влад 🇺🇦
ну я к такому решению дошел, пока не нашел то что выше кинул)
Sergey
Для описанной ситуации подходит cycler, и там был бы всего один вызов, а вместо него ты наворотил три фильтра подряд.
Div
Для описанной ситуации подходит cycler, и там был бы всего один вызов, а вместо него ты наворотил три фильтра подряд.
Сергей, я хочу вопросить. вы уже два раза упоминали cycler. А можно ссылку на эту магию, пожалуйста?
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
если кому то нужно будет, то вот решение - debug: msg: "{{ item }} {{ wl_hostname[idx % wl_hostname | length] }}" loop: "{{ gs_hostname }}" loop_control: index_var: idx
это не то, что я спрашивал, но спасибо за loop, loop_control возможно это поможет решить мою проблему👍
Sergey
Вот вот. Не гуглится ансибл cycler. Шо это?
https://jinja.palletsprojects.com/en/2.11.x/templates/#cycler
Sergey
https://matplotlib.org/cycler/
niet, но - да. Просто Jinja уже предоставляет нативную обёртку для этого счастья.
Sergey
Сергей, я хочу вопросить. вы уже два раза упоминали cycler. А можно ссылку на эту магию, пожалуйста?
Ссылка выше, и сейчас с этим проще, чем пять лет назад. А тогда единственное упоминание было вот тут: https://bit.ly/33sxH5J
Влад 🇺🇦
https://jinja.palletsprojects.com/en/2.11.x/templates/#cycler
классное решение, но я так понимаю его только с шаблонами jinja использовать можно?
Sergey
Если что, почти любой YaML-файл Ansible при чтении прогоняет через шаблонизатор.
Sergey
Соответственно, конструкции вида {% set ЪУЪ = blahblahblah %} работают в любом месте справа от двоеточия.
Влад 🇺🇦
буду знать, спасибо!
UglyKoyote
Коллеги, а подскажите, "что надо ударить", что бы ансибл видел изменение в коде таски? В выхлопе -vvv вижу что ансибл пытается на удаленной машине выполнить код, который давно закоментированн