Вопрос: Что НЕ должно управляться марионеткой?


Я изучаю свой путь через управление конфигурацией в целом и используя кукольный для его реализации в частности, и мне интересно, какие аспекты системы, если таковые имеются, должны не управляться с марионеткой?

В качестве примера мы обычно считаем само собой разумеющимся, что имена хостов уже настроены до предоставления системы управления марионеткой. Базовая IP-связь, по крайней мере, в сети, используемой для достижения кукловода, должна работать. Использование марионетки для автоматического создания файлов зоны DNS заманчиво, но обратные указатели DNS должны быть уже на месте, прежде чем запускать вещь или сертификаты будут смешными.

Так что я должен опустить конфигурацию IP из марионетки? Или я должен установить его до начала марионетки в первый раз, но управлять IP-адресами с марионеткой, тем не менее? Что относительно систем с несколькими IP-адресами (например, для WAN, LAN и SAN)?

Как насчет IPMI? Вы можете настроить большинство, если не все, ipmitool, избавляя вас от получения доступа к консоли (физический, последовательный-over-lan, удаленный KVM, независимо от того), чтобы он мог быть автоматизирован с марионеткой. Но повторная проверка его состояния при каждом запуске марионеточного агента не кажется мне классной, а основной доступ к системе - это то, что я хотел бы сделать, прежде чем делать что-либо еще.

Еще одна история - установка обновлений. Я не собираюсь в этом конкретном вопросе, есть много вопросов по СФ и много разных философий между разными системными администраторами. Я сам решил не позволить марионеткам обновлять вещи (например, только ensure => installed) и делать обновления вручную, как мы уже привыкли, оставляя автоматизацию этой задачи на более поздний день, когда мы более уверены в марионетке (например, добавив MCollective к смеси).

Это были всего лишь несколько примеров, которые я получил прямо сейчас. Есть ли какой-либо аспект системы, который должен быть оставлен вне досягаемости от марионетки? Или, по-другому, где находится линия между тем, что должно быть настроено на время подготовки и «статически» настроено в системе, и что обрабатывается посредством централизованного управления конфигурацией?


64
2017-08-06 16:42


Источник


Хороший вопрос. Мне любопытно, если есть что-то другое, кроме конфигураций, специфичных для машин, для которых вы не должны использовать марионетку. Ну, это и Windows-машины. - HopelessN00b
<vague> Вы не должны управлять вещами в марионетке, когда лучше / проще управлять ими каким-то другим способом. </ vague>: p - Zoredache
Учитывая распространенность компаний, использующих Puppet в эти дни, я вижу, что этот вопрос привлекает много внимания в течение следующих нескольких лет - Daniel Li


Ответы:


Главное правило: Если вы используете управление конфигурацией, управляйте всеми аспектами конфигурации, которые вы можете использовать. Чем больше вы централизуете, тем легче будет масштабировать вашу среду.

Конкретные примеры (вырезанные из вопроса, все «Вот почему вы хотите управлять им»):


Конфигурация сети IP

ОК, конечно, вы настроили адрес / шлюз / NS на машине, прежде чем уронить его в стойку. Я имею в виду, если бы вы не сделали, как бы вы запустили марионетку, чтобы сделать остальную часть конфига?

Но скажите, что теперь вы добавляете еще один сервер имен в свою среду, и вам нужно обновить все свои компьютеры. Не хотите ли, чтобы ваша система управления конфигурацией сделала это для вас?

Или скажите, что ваша компания приобретается, и ваша новая материнская компания требования что вы переходите от адресации 192.168.0.0/24 к 10.11.12.0/24, чтобы вписаться в их систему нумерации.

Или вы вдруг получаете крупный правительственный контракт. Только поймите, вы должны открыть IPv6 ПРАВИЛЬНЫЙ СВОБОДНЫЙ СЕЙЧАС или сделка взорвана ....

Похоже, что конфигурация сети - это то, что мы хотели бы управлять ...


Конфигурация IPMI

Точно так же, как с IP-адресами, я уверен, что вы настроили это, прежде чем положить машину в стойку. Это просто здравый смысл, чтобы включить IPMI, удаленную консоль и т. Д. На любой машине, которая имеет возможность, и эти конфигурации не позволяют меняет многое ...

... До того гипотетического приобретения, о котором я упоминал в IP-конфигурации выше - причина, по которой вы были вынуждены освободить эти 192.168-сетевые адреса, - это то, что это IPMI-земля в соответствии с вашими новыми корпоративными пользователями, и вам нужно обновить все свои IPMI-карты ТЕПЕРЬ, потому что они собираются попирать чей-то зарезервированный IP-адрес.

Хорошо, это немного растягивается здесь, но, как вы сказали, все это можно решить с помощью ipmitool, так почему бы не заставить Puppet запустить инструмент и подтвердить конфигурацию, пока он делает все свои другие вещи? Я имею в виду, что это ничего не повредит, поэтому мы можем также включить IPMI ...


Обновления

Обновления программного обеспечения более серой области. В моей организации мы оценили марионетку для этого и обнаружили, что она «очень не хватает», поэтому мы используем radmind для этой цели. Нет причин, по которым Кукольный не может назвать radmind, хотя - Фактически, если / когда мы перейдем к Puppet для управления конфигурацией, это именно то, что произойдет!

Важно, чтобы все ваши обновления были установлены стандартным способом (стандартным для всей организации или стандартом на платформах). Нет причин, по которым Puppet не должен запускать процесс обновления, если вы тщательно протестировали все, чтобы Кукольный ничего не испортил.
Также нет причин, по которым Puppet не может обратиться к инструменту, который лучше подходит для этой задачи, если вы определили, что Puppet не может сделать хорошую работу самостоятельно ...


23
2017-08-06 23:00



Re: Обновления. Одна вещь, которая может вызвать у вас проблемы с марионеткой, запускающей ваши обновления, - это когда критическая служба исправляется, например: mysql, apache - вы не хотите, чтобы эти перезапуска по прихоти. Puppet предоставляет способы блокировки версии этих пакетов, так я избегал этого, наслаждаясь общими обновлениями для других гаек и болтов. - thinice
@thinice Это хороший момент, но мой обычный контрапункт заключается в том, чтобы ударить людей по затылку и кричать REDUNDANCY действительно очень громко :-) (Это худшая ситуация с radmind, потому что это просто взрывает файловую систему. чтобы балансировщик нагрузки выгрузил половину серверов, чтобы мы могли их исправить / протестировать, тогда мы переместим всех на исправленные машины, чтобы мы могли сделать вторую половину. Хорошо работает, но вам нужна избыточность, встроенная в вашу среду.) - voretaq7


Не изобретайте велосипед.

Да, вы можете иметь 50 кукольных виртуальных пользовательских ресурсов и реализовывать их по мере необходимости в своих модулях ... но если можете, используйте LDAP.

Я говорю от горького опыта. Хотя ldap еще не вариант.

Пример Anouther - это выталкивание файлов хостов, а не просто использование DNS.


9
2017-08-07 00:10



Я признаю все эти слова, но я все еще не уверен, что вы пытаетесь сказать. - Chris S
Я пытаюсь сказать; кукольный является центральным местом для «информации». Таким образом, DNS и LDAP. Не пытайтесь делать свою работу с марионеткой, это мусор ... Я говорю об этом, когда гигантские файлы / etc / hosts выталкиваются с марионеткой каждый раз, когда новый хост присоединяется к сети. - Sirex
Действительно ли люди используют Puppet вместо LDAP для управления учетными записями пользователей? - Joel E Salas
Каждый инструмент имеет свое место, но использование марионетки для управления учетными записями пользователей или LDAP для хранения файлов злоупотребление, - Hubert Kario
Это, безусловно, абиспользовать ... - jldugger


  • Кукольный не является системой оркестровки. В частности:
    • Кукольный не очень хорошо подходит для оркестровки VM, так как виртуальные машины имеют собственный жизненный цикл, который следует уважать.
    • Puppet не очень хорошо подходит для управления релизами приложений / комплексных обновлений. Автономные марионетки могут быть использованы для этого, но тогда, по крайней мере, это не контроль Марионеток, вместо этого это ваши сценарии с оболочкой или человеческий робот, и это нормально.
  • Кукольный не является хорошей системой управления пользователями (он должен управлять каждый пользователи, даже удаленные пользователи, будут эффективными. Итак, найдите другое решение)
  • Puppet не является хорошей конфигурационной базой данных (посмотрите на использование какой-либо внешней базы данных и ENC, Hiera или какой-нибудь подобный клей)

Конечно, вы можете делать все это с помощью Puppet .. но это просто не лучшее решение для них. Иногда вам нужно положить молоток, и пойти искать ключ.

Кукольный, однако, чрезвычайно хорош в сохранении базовой конфигурации для машины и установке инструментов, которые позволяют вам выполнять виртуальную машину и выпускать оркестровку, управление пользователями и т. Д.


9
2017-08-29 06:21





Я в основном согласен с voretaq7, но с несколькими предостережениями.

  • Я редко когда-либо настраивал IP-адресацию в марионетке, если только система не использует DHCP (я предполагаю, что это делают большинство крупных «облачных» провайдеров). У меня были ситуации, когда я разбивал сетевые конфигурации с марионеткой, но не мог исправить их марионеткой, потому что у узла не было никакого способа связаться с кукловодом.

  • Я твердо убежден в том, что управление обновлениями принадлежит инструментам системы, и я не вижу возможности использовать марионетку в качестве прославленного cron.


2
2017-08-07 22:04





В моем случае у меня есть сценарий начальной загрузки, который загружает минимальную системную конфигурацию (Ubuntu): Ruby, Rubygems, build-essential, git и т. Д. Мои манифесты Puppet хранятся под контролем версий, и я просто клонирую репозиторий. Оттуда мой сценарий начальной загрузки делает предположение, что hostname --short является действительным, и попытки puppet apply /root/infrastructure/puppet/hosts/$( hostname --short ).pp,

Чтобы ответить на ваш вопрос:

  • Мои сценарии предполагают базовое сетевое подключение (DNS, IP) и не управляют или не изменяют его;
  • Мои сценарии предполагают правильность идентификации машины и не меняют ее;
  • Мои скрипты предполагают, что Ruby / Rubygems / Git присутствует, но делать управлять им потом.

1
2017-08-06 18:31





Думайте, что вам не нужно использовать куклу для настройки сети. Обычно это настраивается. Также вы можете получить немного дерьма, если у вас будут ошибки с IP или MAC или что-то подобное, что принесет марионетка.


0
2017-08-06 18:52



Никогда не пришлось менять шлюз по умолчанию на 100+ серверах вручную? Повезло тебе ;)
@EricDANNIELOU Я полагаю, что это можно было бы принять за +1, чтобы позволить марионеткам управлять IP-конфигурацией сетевых интерфейсов;) - Luke404
@EricDANNIELOU Попробуйте сделать это с помощью bash, для цикла и соответствующих прав пользователя (sudo для root или root напрямую) и sed / perl / etc. :) - Evgeniy Yablokov
Я не думаю, что bash «для» циклов и грязных скриптов sed / awk / vi безопаснее, чем scm для настройки сети. И как только у вас есть марионетка, настроенная для всего остального, не очень удобно иметь петлю ssh для цикла только для конфигурации сети.