Artem
сорр за портянку
Artem
если убрать коммент то хост 10.75.253.46 неапрочь скипается
Artem
где мог ошибится?
Artem
Эээм
Artem
Дак вверху же есть
Lamobot
Лучше эти ip положите в инвентори, в отдельные группы, и применяйте к ним плей, ну или два плея. Так проще и удобнее.
Artem
ох бля... все, сорян увидел ошибку
Lamobot
Если изменится ip устройства, вы будете во всех плеях менять ip? :))
Artem
Artem
как тогда изменится when?
Artem
when: inventory_hostgroup ?
Lamobot
Уберите when совсем. Просто сделайте набор тасков для главного роутера и набор тасков для бэкапного
Lamobot
И один плей применяйте для одной группы, а второй для другой
Artem
не удобно, это роль
Artem
или таски отдельно в роли описать ?
Lamobot
Тогда две роли
Lamobot
В вашем случае роль прибита гвоздями к ip, что-то изменится и её нельзя применять. Зачем тогда здесь роль?
George
Странный вопрос: если мне нужно из такски перменную записать не как факт для хоста, а как групповую переменную (как group_vars/all.yaml), то как это лучше всего сделать?
(отвечая "зачем" - хорошее место для хранения динамически найденного адреса мастера в кластере).
George
Мой текущий вариант - писать в set_fact для localhost, но я подумал, что group_vars/all (или другая группа) - более правильное место.
Lamobot
George
А вот я не знаю. Вот так вот писать легально? (Я знаю, что работает, но вопрос в легальности):
- hosts: '{{ hostvars.foo.cluster_master }}'
tasks: ...
Я точно знаю, что можно писать для переменных из groups/all:
- hosts: '{{ cluster_master }}'
tasks: ...
George
нелегально = {{ в какой версии сломают? }}
Lamobot
George
Потому что если мастеру надо что-то делегировать дальше (например, на гипервизор, на котором он запущен), то я не хочу отлаживать баги двойной делегации. Просто не хочу.
Timur
Lamobot
George
В случае с localhost - читаемо.
- hosts: hostvars.localhost.cluster_master
tasks: ...
George
Хотя, add_host - интересно. Думаю, что может пойти не так.
George
... Наверное, переменные хоста в инвентори. В инвентори может быть чёрти что для доступа к хостам (например, кастомные опции ssh и т.д.), и если мы создаём новый хост только ради имени, то теряем все эти переменные. Гоняться за ними в плейбуке - плодить паталогические связи.
George
А вот засунуть хост в группу..., это уже интереснее.
George
- add_host: '{{ freshly_found_cluster_master_name }}' cluster_master
...
- hosts: cluster_master
tasks: ...Да, звучит.
George
А вот как бы мне теперь фейлнуться поприличнее, если группа получилась пустой?
George
Городить отдельную плей для localhost и проверки содержимого groups?
Desdichado
Всем привет.
Есть facts такого вида:
systemd_networkd_network:
00-eth0:
- Match:
- Name: "enp7s0"
- Network:
- Gateway: "192.168.12.1"
Как сослаться на значение Gateway? systemd_networkd_network['00-eth0'].1.Network.1.Gateway - некрасиво
Timur
господа, есть ряд docker_compose.yml файлов с маунтами вида ${PWD}/directory:/somemount
модуль docker_compose пытается их (логично) искать в текущем каталоге. Можно закостылить через shell: "docker_compose up -d" с chdir, но это не очень красиво. Как правильно сделать? Беглый гуглёж не помог, параметров в модуле нет, в чате тоже ничего особо похожего по ключевым словам не нашёл
Timur
вариант "переписать маунты на человеческие" принимается, конечно, но compose-файлов достаточно много, да и разработчиков переучивать придётся, поэтому хотелось бы, чтобы всё работало без этого :)
Timur
научить ansible менять pwd
Timur
по умолчанию модули выполняются из ~, насколько я увидел
Timur
большое спасибо. Это решение а) мне уже известно и б) костыль, подменяющий использование официального модуля командой в shell.
я, в общем-то, про ваше решение написал ещё в своём первом сообщении
Timur
в общем, похоже, без костылей пока никак - docker-compose модуль для питона (не ansible-обёртка, а именно сам модуль docker-compose) не умеет в обработку PWD. Откуда его запустили - там и бегает. Очень странно, что на проблему с ${PWD} ещё никто не наткнулся (ну или у меня не нагуглилось).
попробую завтра поискать на свежую голову.
Pit
Парни вопрос по молекуле
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_curl_ssl(host):
testout = host.run("curl https://10.218.1.85").stdout
print (testout.stdout)
assert 'SSL' in testout.stdout
вот такой выхлоп:
E AttributeError: 'unicode' object has no attribute 'stdout'
tests/test_default.py:10: AttributeError
Grek 🇺🇦
у тебя testout уже содержит stdout, не надо потом его вызывать в testout.stdout
Pit
Сергей
Всем приятного дня! Подскажите, я правильно понимаю, что модуль nmcli с Centos 8 не работает, так как зависимости неоткуда поставить? Есть какое-то не костыльное решение? Или какие-то другие удобные методы управления сетью в свежих линуксах через Ансибл?
Timur
Сергей
Если пытаюсь выполнить таск с этим модулем, Ансибл дает такую ошибку
Grek 🇺🇦
Решения нет, жди пока фикс войдёт в релиз, или выколупывай Нетворк менеджер из системы и ставь от centos 7
Grek 🇺🇦
Другие решения - свой модуль/правка конфиг файлов
Grek 🇺🇦
https://github.com/ansible/ansible/issues/48055
Grek 🇺🇦
можно кастомную роль через shell + nmcli с передачей параметров через переменные, но это не идемпотентно
Сергей
Desdichado
Grek 🇺🇦
это не решит проблемы с nmcli
Сергей
Artem
Artem
ни кого не подводил
Artem
ни когда *
Сергей
ни когда *
Спасибо, завтра опробую. Linux-system-roles.network роль что-то тоже ошибки выдаёт : /
Artem
велосипед создаете :) быстрее сделате через правку конфиг файлов
George
Скажите, а это нормально, что модуль assert фейлится на недоступный (через ncclient) хост? Я думал, что assert'ы исполняются локально, без необходимости хосту быть онлайн. UPD: не нормально, 2.8 фейлится, 2.9 нет.
Aleks
Доброго времени суток. Подскажите пожалуйста с отключением фингерпринта на awx. В ansible.cfg host_key_checking=false. В awx exstra environment variables добавлена строчка "ANSIBLE_SSH_ARGS": " -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostFile=/dev/null -o StrictHostKeyChecking=no" Когда я подлючаюсь к Линукс серверу это все срабатывает и отпечаток не вылазит, но при подключении к циске фингерпринт все равно появляется. Что я делаю не так?
Valeriy
Sergey
Хороший момент подумать "а почему?"
Sergey
Непонятен usecase, плюс условный гитхаб - мастхэв вне закрытых периметров. Ну а внутри периметров нужно не забывать страдать.
Sergey
GitHub != GitLab
Sergey
Никто не считает это вендорлоком. А те, кто пишут ансибл, положили на гитлаб.
Sergey
Ещё раз. Из тех, кто пишет Ансибл, никто не считает взаимодействие с гитхабом проблемой. А кто залез за периметр - страдайте. Всё просто!
Sergey
Спаисбо за оценку. Ждём ваших pull request'ов.
Sergey
Тогда см. выше. Нельзя одновременно быть слишком глупым для PR и достаточно умным, чтобы хотеть свою частную хотелку в апстриме.
Sergey
Да не, всё верно - поныть чутка. Но и ответ ожидаемый 😃 он даже в правилах на всяикй случай есть.
Sergey
Именно.