Pull to refresh

Comments 9

А главная киллер-утилита по работе с ансиблом не указана. testinfra умеет использовать инвентори ансибла для фикстуры host, и даёт доступ к переменным ансибла внутри фикстуры.


Дальше люди делятся на две категории:


  • те, кто не понимает что такое testinfra и не ощущает восторга от py.test, и для которых это тарабарщина.
  • те, кто понимает, что это самая офигенная синергия, какую можно было придумать.

/Молекулу закопать.

Я так и не понял, к инвенторий другого хоста, не фикстуры, в testinfra доступ вообще получить нельзя? testinfra.get_host возвращает по сути пустой инвентарь. Как ей вообще проверять что-то за пределами одного хоста (например, сеть)?

Вы имеете в виду, что недоступны hostvars[другой_хост]? Вы используете слово "инвенторий другого хоста" как-то странно. Инвентори у ansible одна (на самом деле нет, но не важно) — и хосты находятся в ней.


Вообще, все задачи кросс-хостового взаимодействия в ансибле странные, это да, а testinfra не целиком всю архитектуру ансибла в себя вбирает, что может доставлять.

Да. Понятно, что инвентория одна, но разные хосты берут из неё разные части (group_vars/host_vars) и хочется узнать как выглядит наполнение инвентаря (факты, если хотите) с т.з. другого хоста, не текущей фикстуры host.

Это и называется hostvars. И да, он не доступен в переменных инвентори, потому что их нет в инвентори. hostvars — магическая переменная ансибла и она не доступна в testinfra.


Но вам никто не мешает подгрузить "другой" хост в отдельной фикстуре. В том числе по перменным первого хоста.


host2 = testinfra.get_host("ansible://test2")
print(host2.ansible.get_variables())

Криво сформулировал изначально, надо было кодом.


Именно так и делаю и получаю по сути пустой инвентарь (там только ansible_hostname и groups, чтоли). На этом мысль останавливается...

Показывайте, что вы получаете, и что у вас там на входе. Я только что проверял, переменные из инвентори там есть.

Разобрался. Мутная документация. И сам пакет странноватый.

Да, документация ему сильно не помешала бы. Но! Это py.test. В сравнении с "тестами на молекуле" — чудо из чудес.

Sign up to leave a comment.

Articles