Search
Write a publication
Pull to refresh

Comments 6

— delete interfaces vme unit 0 family inet dhcp
— set vlans vlan10 description «TestVlan»
— set vlans vlan10 vlan-id 10
Можно ли как-то описать это декларативно? Одна из главных фишек Ansible в том, чтобы избегать императивных команд.
Поясните пожалуйста, это конкретные команды, которые мне нужно разлить на свичи, что значит «описать декларативно»?
ок, на этом примере:
— name: Install a .deb package from the internet.
apt:
deb: example.com/python-ppq_0.1-1_all.deb
Что меняется? Ansible просто ставит конкретный deb пакет.
Модуль от Juniper сам проверяет, применилась команда или нет, если не применилась, я это увижу в логе. Т.е. тут, в общем, два исхода. Если говорить конкретно про те же вланы, то создать их можно единственным способом — вбив соответствующую команду на коммутаторе, если она уже была вбита ранее, ничего не произойдет, это я и показал в своем примере, когда на одном из свичей она уже была.
Что меняется? Ansible просто ставит конкретный deb пакет.
Ansible запрашивает информацию об этом пакете. Если он еще не установлен, устанавливает. Если установлен, но не той версии — обновляет, либо, наоборот, откатывает. Вы не говорите «я хочу выполнить apt install something», вы говорите «я хочу, чтобы APT-пакет something последней версии был доступен в системе». Каким образом Ansible этого добьется — уже дело десятое. Может просто выполнить тот же «apt install something», может записать название пакета в какой-то внутренний буфер и попытаться установить все пакеты разом позже. Может придумать что-нибудь еще, что его разработчики посчитают более эффективным. Декларативное описание конфигурации — одна из главных фишек Ansible. В противном случае он бы ничем не отличался от простого Bash-скрипта.
Ну, наверное, некорректно сравнивать эти два примера. В случае с пакетом там действительно есть куча версий и вариантов его установки, в случае же с конфигами на джуне все однозначнее. Есть единственно верный вариант, но да, ansible таки проверит все ли применилось и не возникло ли ошибки.
Тут декларативная модель работать не будет, как мне кажется. Например, вы решили назначить определенные порты в нужный влан, но сам влан не создали, или включили аутентфикацию через группу радиус-серверов не создав сами сервера, я не думаю, что Ansible догадается как это сделать без вас.
Sign up to leave a comment.

Articles