Коллеги, нужен совет. Сразу извиняюсь, если вопрос глупый, начал пользоваться Ansible совсем недавно.
Встала следующая проблема: имеется проект, в котором определены насколько ролей (dhcp, dns, pxe и пр.), которые должны быть применены к управляющему узлу вычислительного кластера (В данном случае localhost) и роль compute_node, которая должна быть применена к вычислительным узлам этого же кластера.
Вычислительные узлы должны загружаться через PXE. На данный момент PXE работает прекрасно, но загрузиться с него при желании может любая машина в локальной сети. Мне это не нравится, поэтому я бы хотел ограничить загрузку по PXE только узлами, MAC адреса которых указывает пользователь плейбука.
Сделать это несложно, но тут появляется проблема. В каком файле мне указать эти MAC адреса? В инвентори одними MAC не ограничишься, там нужно указывать ещё IP или хостнейм. Видимо, в переменных, но отдельно или в host_vars? Во втором случае в инвентори для каждого узла был бы указан и адрес, и имя, и MAC.
Почему я не хочу так делать: в переменных плейбука указана сеть (например,
10.1.1.0/24) и префикс хостнеймов (например, compute-*). dhcp раздает адреса узлам по порядку (
10.1.1.100,
10.1.1.101, ...), а dns роль прибивает соответствующие имена (compute-0, compute-1, ...). Иными словами, выдача IP и имён осуществляется автоматически и я не хочу, чтобы пользователь плейбука был вынужден писать адреса и имена вручную в переменные хостов, в идеале он должен указывать только MAC.
Мне пришло в голову написать отдельный add_node.yml плейбук в этом же проекте, который бы менял инвентори файл и переменные хостов, но у меня есть серьезные сомнения, что менять инвентори файл самим же ансиблом входит в best practices. Есть идеи, как реализовать что-то подобное наиболее грамотно?