Как бы мы автоматизировали сетевое взаимодействие в марионеточной среде?

Наша инфраструктура: мы запускаем Puppet Master для около 250 узлов (около 100 аппаратных серверов). Сама ОС на узлах полностью кукольна.

Теперь мы рассмотрим расширение этой настройки кукол на следующие домены:

  1. Управление IP/DHCP
  2. Конфигурация APC
  3. настройка коммутатора (через SNMP у нас есть коммутаторы Arista)
  4. управление запасами (где установлен сервер x? как долго действует гарантия?)

Есть ли программное обеспечение (с открытым исходным кодом или не имеет значения), которое позволяет нам достичь этого? Я думаю, что у него есть схема реляционных данных, как server или же switch который может быть заполнен веб-интерфейсом. Затем для каждого из этих 4 пунктов существуют сценарии для извлечения данных из таблиц и передачи их на устройства.

правильно, почему бы нам просто не взять куклу для этого?

Мы бы с удовольствием, так как мы хотим, чтобы все конфигурации были в одном месте, но...

1 + 2 может быть сделано в марионетке, но для 250 узлов, которые выглядят как ад большого манифестного марионетки. Кроме того, мы хотим добавить предоставление виртуальной машины через мастера марионеток в ближайшее время, поэтому "система резервирования IP" должна быть "реагирующей", и, следовательно, IMO должна быть вне марионетки.
3, вероятно, не представляется возможным, так как переключатели еще не готовы к марионетке,
4 возможно с Puppet, когда мы добавим "аппаратный" слой над слоем узла в Puppet.

Какие-нибудь мысли?

2 ответа

AFAIK Форман уже ведет в правильном направлении, поэтому, возможно, вам следует начать играть с этим.

Кроме того, взгляните на пользовательские факты. Они являются мощным способом доступа ко всем видам данных и делают их пригодными для использования в манифестах Puppet. Например, создать собственный факт, как $::inventory_ipaddress или даже перезаписать $::ipaddress Факт с каноническим, который будет использоваться для конфигурации.

Для 1: для большого количества хостов, как правило, желательно не иметь сотни node определения, а точнее имеют набор ролей и профилей.

Общая задача проектирования здесь - обеспечить четкий поток информации из единственного источника (источников) правды в обеспечение.

Для 2+3: вы можете использовать puppet для вызова всевозможных вспомогательных сценариев и инструментов, но я сомневаюсь, что это лучший инструмент для работы, потому что он, вероятно, не будет "источником правды".

Для 4: это где-то посередине. Я сам использую puppet на экземплярах EC2 для периодического запуска обновления инвентаризации Zabbix и использую facter для заполнения, например, роли, версии ОС, групп безопасности. Предостережение: мой нормативный источник правды - инструмент обеспечения, и моя марионетка проявляет себя там, где я могу изменить настройки; с другой стороны, этот инвентарь является только окончательным результатом для проверки результатов.

Коммутаторы Arista можно настроить с помощью Puppet, работающего в операционной системе EOS на самом коммутаторе. Arista даже предоставляет учебное пособие по установке Puppet: установка Puppet на EOS. Это не должно быть проблемой.

Для задач инвентаризации (IP, местоположения, гарантия) я бы порекомендовал Zabbix.

Другие вопросы по тегам