Nik
bashcode for i in $(ansible-inventory); do ansible-playbook -l $i playbook.yml & done
это на самый крайний случай пока, оч нехочется так делать
Sergey
вот как то так быть должно
Вижу странное. Как изначальная задача звучит, которую ты таким образом решаешь?
Nik
есть 20 файлов с описанием тестов. их POST запросом в веб сервис, он прокрутит их, и отдаст либо 200 и пустое тело, либо не 200 и текст ошибки в body
Nik
последовательно запускать их - оч долго, над паралельно
Sergey
я прост не понимаю, почему нельзя запустить тоже самое несколько раз
Потому что модули весёлых сетевых железок написаны для connection_type = local. Именно поэтому - потому что все соединения у тебя идут как бы на localhost, а сама модель исполнения ансибла предполагает очередь тасок для каждого хоста.
Ievgen
я так ансибл пускаю на несколько групп
Sergey
последовательно запускать их - оч долго, над паралельно
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_strategies.html
Sergey
тебе нужно free
Sergey
заDDoS'ь свой сервис сам 😊
Alex
man parallel
Не везде есть
Alex
Отказался
Nik
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_strategies.html
да, но тогда он каждый таск выполнит на каждом доступном хосте
Nik
или все таски на всех хостах?
Nik
И что за магию пытаются вообразить тут?
Nik
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_async.html
Anton
потребность есть же у многих
Sergey
да, но тогда он каждый таск выполнит на каждом доступном хосте
английским по белому: A second strategy ships with Ansible - free - which allows each host to run until the end of the play as fast as it can
Sergey
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_async.html
это закинуть таск на выполение, а рещультат спросить как-нибудь потом
Nik
или я дурак, или я не вижу, где это ложится в то, что он не будет пытаться выполнять все таски на всех хостах
Sergey
Если у тебя какая-нибудь длинная операция, и тебе результат интересен в принципе, но нафиг не нужен прям вот ваще сейчас.
Nik
но сейчас попробую
Sergey
вот это как раз тест
я про async написал
Sergey
моглиб че нить добавить для таких случаев, ключик
интересно, кто эти самые "могли"?
Anton
читатели реквестов
Sergey
читатели реквестов
Эм...... это какие-то загадочные люди, я не слышал про таких.
Nik
Если у тебя какая-нибудь длинная операция, и тебе результат интересен в принципе, но нафиг не нужен прям вот ваще сейчас.
но он не ждет ответа и завершает раньше плейбук. Я думал он их все хапросит в работу, и будет ждать пока все хавершатся
Nik
как то все не прямо
Sergey
тебе нужно strategy: free
Anton
Эм...... это какие-то загадочные люди, я не слышал про таких.
контрибьюторы кароч. ониж на чем то основывают свои видения дальнейшей разработке продукта, а не рандомно по клаве лупят
Sergey
контрибьюторы кароч. ониж на чем то основывают свои видения дальнейшей разработке продукта, а не рандомно по клаве лупят
Извини за капитанство, но, насколько я могу судить, есть более критичные вещи, чем поддержка весёлых сетевых железок. (кстати, ты же за них деньги же вендору платишь, попробуй стряси с него, это точно должна быть головная боль вендора)
Sergey
Ну и это же опен-сорс, напиши сам нужное, тебе братья по пичальке в ноги поклонятся.
Nik
тебе нужно strategy: free
не, с async как раз то что нужно.
Nik
- name: запускаем тесты hosts: 127.0.0.1 connection: local tasks: - uri: url: http://10.16.144.58:6650/testSingle method: POST timeout: 1800 body: "{{ lookup('file',item) }}" return_content: yes async: 1800 poll: 0 register: async_results with_lines: - ls -lah interface-h2o/*.yaml | awk '{print $9}' - name: Check sync status async_status: jid: "{{ async_result_item.ansible_job_id }}" loop: "{{ async_results.results }}" loop_control: loop_var: "async_result_item" register: async_poll_results until: async_poll_results.finished retries: 60
Alex
А кто тут админ? Может бота для антиспамеров запилит? Кто то советова @FilterAlienBot
Nik
работает прям как хотел
Sergey
ну смотри, тебе виднее
Nik
ну смотри, тебе виднее
ну честно, учитывая что на локалхсоте - перезайти на себя 20 раз - странно
Ievgen
это закинуть таск на выполение, а рещультат спросить как-нибудь потом
если хост один (в данном случае локалхост) и есть loop в таске то async это как раз оно
Nik
вопрос - а кто-нибудь пробовал управлять выводом таски? подрезать лишние поля, красиво выводить json-ы и так далее?
Nklya
Вот про красивый вывод
Nklya
Оказывается в Ansible 2.5 теперь можно включить вывод ошибок в красивом Yaml вместо простыни Json. TL;DR Достаточно добавить в ansible.cfg stdout_callback = yaml Подробнее в блоге Jeff Geerling https://goo.gl/u6b2TH
Vlad
вопрос - а кто-нибудь пробовал управлять выводом таски? подрезать лишние поля, красиво выводить json-ы и так далее?
В самом ansible уже есть куча разных плагинов для вывода - https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/callback
Nik
спасибо, ща буду пробовать
Nik
ok: [127.0.0.1] => (item={'_ansible_parsed': True, '_ansible_item_result': True, '_ansible_item_label': u'interface-h2o/fav.yaml', u'ansible_job_id': u'698204737441.22639', 'failed': False, u'started': 1, 'changed': True, 'item': u'interface-h2o/fav.yaml', u'finished': 0, u'results_file': u'/home/ngkazary/.ansible_async/698204737441.22639', '_ansible_ignore_errors': None, '_ansible_no_log': False})
Nik
я вот про item
Alex
Админчик, помоги
Nklya
Пора добавить терминатора))
Alex
Ага
Denis
СЛАВА ТЕРМИНАТОРУ!
Vlad
я вот про item
Можно использовать: loop_control: label: "{{ item.name }}" для сокращения вывода всего item
Alex
Спасибо админ
Nik
а кто пользовался uri? Сервер отдает json с Content-Type: application/json. Почему ответ все равно уходит в content?
Alex
а кто пользовался uri? Сервер отдает json с Content-Type: application/json. Почему ответ все равно уходит в content?
там неважно как сервер отдаёт сообщение. Его по сути обрабатывает urllib3 и дальнейшие действия после получения ответа не производятся.
Alex
а кто пользовался uri? Сервер отдает json с Content-Type: application/json. Почему ответ все равно уходит в content?
можешь указать body_format тогда он вроде как по коду не будет в content уходить
Anton
Извини за капитанство, но, насколько я могу судить, есть более критичные вещи, чем поддержка весёлых сетевых железок. (кстати, ты же за них деньги же вендору платишь, попробуй стряси с него, это точно должна быть головная боль вендора)
какая разница кто по ссш будет ходить по железкам, вендор софт или ансибл? никакой магии в этом нет что бы что то проприетарное искать. на крайняк можно сразу несколько экземпляров запустить. меня в ансибле радует грамотная обработка исключений например, но я не настока прогер что бы переделывать фундаментальные фичи в больших проэктах
Alex
Блин, это вроде для отправки запроса параметр. А для получения вот описание: return_content: description: - Whether or not to return the body of the request as a "content" key in the dictionary result. If the reported Content-type is "application/json", then the JSON is additionally loaded into a key called C(json) in the dictionary results. choices: [ "yes", "no" ] default: "no"
Nik
return_content: yes
Nik
стоит
Alex
должен быть no
Nik
приходит "application/json"
Nik
дефолт no, а я поставил yes
Nik
или я туплю?
Alex
Я ссылку на исходник дал, мне кажеться должно быть no. Я может сам туплю под вечер, глянь в исходник
Nik
if 'application/json' in content_type or 'text/json' in content_type:
Nik
https://github.com/ansible/ansible-modules-core/blob/00911a75ad6635834b6d28eef41f197b2f73c381/network/basics/uri.py#L468
Nik
вот тут скорее
Nik
кстати выключил return_content - ничего не изменилось
citius
у тебя в conten попадать должно в любом случае, но если нормально отрабатывает content_type, то также должно попасть и в json