Артём
Ребят, when: inventory_hostname == "foo.local" можно несколько раз пихать в playbook?
Хоть для каждого таска. Но зачем, если в плее указывается hosts: foo.local или hosts: group_foo.local?
Artem
Хоть для каждого таска. Но зачем, если в плее указывается hosts: foo.local или hosts: group_foo.local?
У меня задача сконфигурить на роутерах vrrp там соотсвтенно должны быть разные адреса на интерфейсах, или например разные хостнеймы
Artem
сорр за портянку
Artem
если убрать коммент то хост 10.75.253.46 неапрочь скипается
Artem
где мог ошибится?
Lamobot
если убрать коммент то хост 10.75.253.46 неапрочь скипается
Так нигде в плее нет условия when: inventory_hostname == '' этому адресу :)
Artem
Эээм
Artem
Дак вверху же есть
Lamobot
Лучше эти ip положите в инвентори, в отдельные группы, и применяйте к ним плей, ну или два плея. Так проще и удобнее.
Artem
ох бля... все, сорян увидел ошибку
Lamobot
Если изменится ip устройства, вы будете во всех плеях менять ip? :))
Artem
как тогда изменится when?
Artem
when: inventory_hostgroup ?
Lamobot
Уберите when совсем. Просто сделайте набор тасков для главного роутера и набор тасков для бэкапного
Lamobot
И один плей применяйте для одной группы, а второй для другой
Artem
не удобно, это роль
Artem
или таски отдельно в роли описать ?
Lamobot
Тогда две роли
Lamobot
В вашем случае роль прибита гвоздями к ip, что-то изменится и её нельзя применять. Зачем тогда здесь роль?
Timur
не удобно, это роль
это не роль, если она жестко завязана на конкретный инвентарь
George
Странный вопрос: если мне нужно из такски перменную записать не как факт для хоста, а как групповую переменную (как group_vars/all.yaml), то как это лучше всего сделать? (отвечая "зачем" - хорошее место для хранения динамически найденного адреса мастера в кластере).
George
Мой текущий вариант - писать в set_fact для localhost, но я подумал, что group_vars/all (или другая группа) - более правильное место.
George
А вот я не знаю. Вот так вот писать легально? (Я знаю, что работает, но вопрос в легальности): - hosts: '{{ hostvars.foo.cluster_master }}' tasks: ... Я точно знаю, что можно писать для переменных из groups/all: - hosts: '{{ cluster_master }}' tasks: ...
George
нелегально = {{ в какой версии сломают? }}
George
Потому что если мастеру надо что-то делегировать дальше (например, на гипервизор, на котором он запущен), то я не хочу отлаживать баги двойной делегации. Просто не хочу.
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: ...Да, звучит.
Timur
А вот засунуть хост в группу..., это уже интереснее.
Когда делаешь add_host - можно добавить хост в любое количество групп
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
Сергей
Всем приятного дня! Подскажите, я правильно понимаю, что модуль nmcli с Centos 8 не работает, так как зависимости неоткуда поставить? Есть какое-то не костыльное решение? Или какие-то другие удобные методы управления сетью в свежих линуксах через Ансибл?
Сергей
Если пытаюсь выполнить таск с этим модулем, Ансибл дает такую ошибку
Grek 🇺🇦
Решения нет, жди пока фикс войдёт в релиз, или выколупывай Нетворк менеджер из системы и ставь от centos 7
Grek 🇺🇦
Другие решения - свой модуль/правка конфиг файлов
Сергей
Решения нет, жди пока фикс войдёт в релиз, или выколупывай Нетворк менеджер из системы и ставь от centos 7
Понял, спасибо большое. А то у меня типичная проблема новичка - неясно, то ли я чего-то не знаю, то ли проблема и в самом деле общая. А фикс вообще в разработке?
Grek 🇺🇦
https://github.com/ansible/ansible/issues/48055
Grek 🇺🇦
Понял, спасибо большое. А то у меня типичная проблема новичка - неясно, то ли я чего-то не знаю, то ли проблема и в самом деле общая. А фикс вообще в разработке?
Сам неделю как в ансибл пытаюсь и это первая же задача\проблема с которой столкнулся. По отыпу скажу что даунгрейдить network-manager тот еще гемор. Для себя выбрал подождать патч
Сергей
https://github.com/ansible/ansible/issues/48055
Спасибо большое. Попробую еще linux-system-roles.
Grek 🇺🇦
можно кастомную роль через shell + nmcli с передачей параметров через переменные, но это не идемпотентно
Desdichado
Снести networkmanager и поставить systemd-networkd ?
хотя говорят systemd-networkd isn't supported by CentOS 8 https://www.reddit.com/r/CentOS/comments/d9hqa1/centos_8_stream_on_hetzner_vm/
Grek 🇺🇦
это не решит проблемы с nmcli
Сергей
хотя говорят systemd-networkd isn't supported by CentOS 8 https://www.reddit.com/r/CentOS/comments/d9hqa1/centos_8_stream_on_hetzner_vm/
Значит, тоже не подходит, хотя спасибо за вариант, конечно
Artem
Значит, тоже не подходит, хотя спасибо за вариант, конечно
самый оптимальный вариант это правка ifcfg-if_name
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" Когда я подлючаюсь к Линукс серверу это все срабатывает и отпечаток не вылазит, но при подключении к циске фингерпринт все равно появляется. Что я делаю не так?
Sergey
Хороший момент подумать "а почему?"
Sergey
Непонятен usecase, плюс условный гитхаб - мастхэв вне закрытых периметров. Ну а внутри периметров нужно не забывать страдать.
Sergey
GitHub != GitLab
Sergey
Никто не считает это вендорлоком. А те, кто пишут ансибл, положили на гитлаб.
Sergey
Ещё раз. Из тех, кто пишет Ансибл, никто не считает взаимодействие с гитхабом проблемой. А кто залез за периметр - страдайте. Всё просто!
Sergey
Спаисбо за оценку. Ждём ваших pull request'ов.
Sergey
Тогда см. выше. Нельзя одновременно быть слишком глупым для PR и достаточно умным, чтобы хотеть свою частную хотелку в апстриме.
Sergey
Да не, всё верно - поныть чутка. Но и ответ ожидаемый 😃 он даже в правилах на всяикй случай есть.
Sergey
Именно.