Grek 🇺🇦
Я вынес это в локальные факты на машины в facts.d
а можно подробней? я пока себе придумал так что в инвентори для каждого окружения будет некая переменная "флаг", и по наличию ее или по ее значению в плейбуках\ролях будет выполняться или не выполняться определенные таски. хреново что роль будет привязана к инвентарю - но тут может и уйти от ролей и все в плейбуки загнать?
Pavel
Привет! Может я про баян буду спрашивать, но все же: может ли на управляющем хосте ansble быть на python3 а на управляемом 2? не пинайте сильно...
Vladislav 👻
На маке ансибл под третьим питоном, бегаю в основном под вторым на системы, за исключением докера, там третий
Pavel
На маке ансибл под третьим питоном, бегаю в основном под вторым на системы, за исключением докера, там третий
спасибо добрые люди, сам под 2 раньше работал на 2е, а тут решил на 3й перейти, а управляемые хосты в основном центсы с 2м...
Ivan
оно работает, но есть тонкости =)
Vladislav 👻
Если что, у меня на Маке ансибл под 3.8+ работал медленнее, чем под 3.7
Vladislav 👻
оно работает, но есть тонкости =)
Нет никаких, сижу с 2.8 версии ансибл, сейчас последняя
Ivan
как минимум стоит знать о https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html
Vladislav 👻
Ааа, если мигрировать, то да, есть тонкости
Vladislav 👻
Я просто сразу под третьим поплыл
Pavel
Ааа, если мигрировать, то да, есть тонкости
нет не мигрировать, совершенно другой проект
Pavel
в общем понял, всем спасибо
Grek 🇺🇦
И какой-то флаг виртуалка/хост был в обычных фактах
ansible_virtualization_type а вот вопрос - откуда он его берет? бывали у меня случаи когда ВМ на ESXi репортила мониторинговым агентам что она чисто железный сервер судя по manufacturer_info, из-за чего накатывались неправильные политики
Lamobot
И да, коряво выводит :)
Sergei
господа, есть какие то варианты бескостыльные ансиблом рулить реббитом?
Sergei
юзера запилить , парольчики и тд
Andrew
Коллеги, может кто-то решал задачку: Есть такие факты: "u1": { "keys": [ "key_1", "key_2" ] } Нужно отдельным таском добавить в list keys значение key_3. Как это красивее сделать? Юзать jinja2 или есть что-то более элегантное?
Vladislav 👻
Vladislav 👻
Только хотел предложить list1+list2
Sergey
только они парсят вывод cli, к сожалению.
Sergei
дык модули же.
модуль предполагает хождение по ссх, ибо там cli дергается, который по сети не работает, а ссх у меня нету. Ща костылить буду
Sergey
модуль предполагает хождение по ссх, ибо там cli дергается, который по сети не работает, а ссх у меня нету. Ща костылить буду
rabbitmqadmin is a Python command line tool that interacts with the HTTP API. It can be downloaded from any RabbitMQ node that has the management plugin enabled at http://{node-hostname}:15672/cli/.
Sergei
ой ой, там дергается rabbitmqctl ,только что смотрел
Sergei
не туда смотрел что ль
Sergey
В модулях - дёргается, они и рассчитаны на локальный запуск (если плагин "HTTP management API" не загружен в кролика - это единственный вариант). Но некоторых вещей и не сделать через HTTP management API (намеренно).
Andrew
Уточню - Эти факты прячутся в ключе dict1, т.е. выводятся так: hostvars[ansible_host]['dict1']
нашел решение через combine. Оно по итогу сложночитаемое получилось, но уж как есть.
доня.
помогите пж пытаюсь подключить ансибл хост на маке к шиндоус виртуалке в параллелс делал по https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html сделал всё начиная с upgrading powershell and .net framework и заканчивая installing win32-openssh (через chocolatey) по ssh с хоста подключиться получается на хосте сделал вот так: [servers] parallels1 ansible_host=10.211.55.3 ansible_port=22 ansible_user=<user> ansible_password=<password> пытаюсь сделать вот так: ansible all -m ping а получается вот так: parallels1 | UNREACHABLE! => { "changed": false, "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo ~/.ansible/tmp `\"&& mkdir \"` echo ~/.ansible/tmp/ansible-tmp-1605116500.92-27322-256367076063217 `\" && echo ansible-tmp-1605116500.92-27322-256367076063217=\"` echo ~/.ansible/tmp/ansible-tmp-1605116500.92-27322-256367076063217 `\" ), exited with result 1", "unreachable": true }
Lamobot
помогите пж пытаюсь подключить ансибл хост на маке к шиндоус виртуалке в параллелс делал по https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html сделал всё начиная с upgrading powershell and .net framework и заканчивая installing win32-openssh (через chocolatey) по ssh с хоста подключиться получается на хосте сделал вот так: [servers] parallels1 ansible_host=10.211.55.3 ansible_port=22 ansible_user=<user> ansible_password=<password> пытаюсь сделать вот так: ansible all -m ping а получается вот так: parallels1 | UNREACHABLE! => { "changed": false, "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo ~/.ansible/tmp `\"&& mkdir \"` echo ~/.ansible/tmp/ansible-tmp-1605116500.92-27322-256367076063217 `\" && echo ansible-tmp-1605116500.92-27322-256367076063217=\"` echo ~/.ansible/tmp/ansible-tmp-1605116500.92-27322-256367076063217 `\" ), exited with result 1", "unreachable": true }
По ssh на винду: ansible_connection: ssh ansible_shell_type: powershell
доня.
тьфу, а я туда не дошел пушто там начались ansible tasks и я подумал что сначала надо бы проверить что вообще че-то соединяется прежде чем таски какие-то писать спасибо, работает
Anonymous
Тема 2.10+ табу? Или можно узнать, как прошел переход?
Anonymous
Критика приветствуется
Anonymous
существует ли способ скопировать файлы с одного удаленного хоста на все другие? или только fetch модулем брать их и потом делать copy?
Lamobot
существует ли способ скопировать файлы с одного удаленного хоста на все другие? или только fetch модулем брать их и потом делать copy?
fetch - хороший способ. Можно ещё synchronize использовать. https://docs.ansible.com/ansible/latest/collections/ansible/posix/synchronize_module.html
Sergey
Идемпотентности не будет. Будешь потом огорчаться, что авторы Ансибла не предусмотрели.
tutunak
Synchronize, там же rsync под капотом
Sergey
А в чём смысл делать странное? O_o
Sergey
Башсибл жи.
Sergey
Ок, кривой процесс, зачем здесь ансибл тогда? 😁
Sergey
Микроскоп.жпг
Sergey
Ок, попробую больше не спрашивать, зачем 😁 зачем, зачем.... Потому что!
Sergey
Ансибл в первую очередь - средство достижения идемпотентности. А если эту идемпотентность достигать не хочется - ну тогда получается башсибл.
Sergey
Я вот просто в чате часто вижу, что есть какие-то задачи, которые стоило бы автоматизировать, и вместо условного rundeck люди берут ansible.
Sergey
Хотя если посмотреть на вот эту же задачу автоматизации, то тебе придётся ещё и разные кнопочки приделывать, чтобы эти самые раскладывающие файлы люди могли запускать синхронизацию.
404
пусть люди не раскладывают на одну из целевых машин, а кладут в репу, а ansible берет из репы и кладет на целевые машины
Sergey
Ты видел, сколько всякой дряни нужно awx?
Sergey
Ну а толку-то? Используется, но при этом ресурсов жрет как не в себя.
Vladislav 👻
Так и есть
Vladislav 👻
Главное понять, где и как проще сделать, чтобы не упороться
Vladislav 👻
Я серверные настройки выносил в переменные, а сайтовые почти целиком описывал в одной переменной, с поправкой только для ssl и проксирования
Anonymous
Спасибо! теперь другой вопрос, мой inventory выглядит вот так
Anonymous
[lisp-compilers] lisp-compiler-01 ansible_host=10.0.0.12 lisp-compiler-02 ansible_host=10.0.0.64
Anonymous
таск вот такой
Anonymous
- name: fetch Lisp compiled lib fetch: src: /opt/lisp/wkt.l dest: lisp/files/libs/wkt.l flat: yes when: inventory_hostname = 'lisp-compiler-01'
Anonymous
при запуске
Anonymous
FAILED! => {"msg": "The conditional check 'inventory_hostname = 'lisp-compiler-01'' failed. The error was: template error while templating string: expected token 'end of statement block', got '='
Anonymous
ЧЯДНТ? как мне еще можно запустить данный таск только на определенном хосту?
Sergey
Связь между тасками и хостами - параметр hosts плея. Остальное - странное.
Sergey
А тебе нужно ==
Anonymous
блин, вот я до*еб...спасибо!
Anonymous
запарился чет)))😜
Alex
это же классика в ЯП if ( x = y ) …. )))
Anonymous
в Лиспе =
Vyacheslav
Всем привет, ребят подскажите как в combine передать переменную? jsondata: "{{ jsondata | default([]) | combine({ 'fluentd-address': {{ agent_socket_path }} }) }}"
Vyacheslav
agent_socket_path - переменнаяя
Anonymous
еще вопрос, у меня на виртуалке 2 карточки, как мне с помощью ansible_default_ipv4.address вытащить айпишник со второй карточки? помнится года 3 назад делал что то типа такого ansible_default_eth1_address но чет не прокатывает
Anonymous
ок) за давностью лет не помню) ansible_eth1.address чот типа такого было)
Anonymous
Ща позырю через
Anonymous
- debug: var=ansible_all_ipv4_addresses
Gregory
SugarPie ansible_<interface_name>.ipv4.address