Я новичок в Chef. Я использовал chef-solo
и мне это очень нравится. Одна вещь, которая мне не ясна, - это оптимальная практика работы с конфигурациями программного обеспечения для одного и того же программного обеспечения для разных организаций.
например:
Допустим, я хочу управлять установкой Redis для два разные организации. Допустим, одной организации требуется настроить Redis двумя разными способами. Итак, это оставляет нас с три конфигурации.
Могу ли я создать одну кухню с одной кулинарной книгой Redis с тремя рецептами Redis? Могу ли я создать одну кухню для каждой организации?
Каковы лучшие практики для всего этого? Спасибо.
Вы можете добиться этого, превратив файлы конфигурации в шаблоны и сделав части конфигурации, которые различаются атрибутами, внутри ваших индивидуальных кулинарных книг. Затем вы можете указать эти атрибуты для каждого узла.
Самый простой способ с Chef solo - это тоже иметь разные списки запусков для разных машин, прямо в них указывающие атрибуты.
С другой стороны, если вы планируете использовать централизованно управляемый репозиторий Chef для управления несколькими разными клиентами / клиентами, я бы удостоверился, что в любой части вашего репозитория Chef нет ничего конфиденциального, поскольку узлы могут почти полностью бесплатно запрашивать любую кулинарную книгу. или атрибут установлен, если вы не используете зашифрованные пакеты данных, и даже тогда, в зависимости от того, как вы распространяете ключ, они могут быть небезопасными. Просто о чем подумать в будущем.
Используйте 2 поваренные книги в списке выполнения.
Первая кулинарная книга содержит параметры организации в виде атрибутов узла
default['redis']['data_dir']="/data/company1/redis"
Вторая кулинарная книга делает всю тяжелую работу, используя параметры из первой кулинарной книги по мере необходимости.
directory "#{node['redis']['data_dir']" do
owner myapp
mode 0755
action :create
end
Если вам не нужны 2 кулинарные книги, вы также можете указать параметры с помощью пакета данных.