Упакуйте среду chef и запустите ее на отдельном сервере обеспечения

Мы создали несколько поваренных книг, чтобы настроить среду, в которой работает наше программное решение. Эти кулинарные книги расположены на двух серверах git и зависят от общедоступных кулинарных книг (мы используем berkshelf).

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

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

Я хотел бы иметь возможность упаковать и загрузить всю среду (включая зависимости) на сервер инициализации. Там я бы затем запустил chef-zero и предоставил все узлы для этой среды.

Проблема в том, что я не знаю, как этого добиться.

3 ответа

Вам следует использовать Packer для этой задачи, поскольку он позволит вам создавать эти образы для любой платформы, включая версию Dockerized, и он может быть снабжен поваренными книгами Chef.

Затем загрузите изображение куда угодно и измените свой Vagrantfile (или любой другой используемый вами), чтобы он указывал на это изображение в качестве отправной точки.

Для примера и отправной точки просто взгляните на репозиторий Opscode Bento (на GitHub) в папке "упаковщик" в корневом каталоге. Opscode активно использует Packer для предоставления специализированных пакетов для своих услуг ChefDK и т. Д.

Документация Berkshelf описывает, как упаковать кулинарные книги в один архив:

$ cd ~/code/berkshelf-api/cookbook
$ berks package
Cookbook(s) packaged to /Users/reset/code/berkshelf-api/cookbook/cookbooks-1397512169.tar.gz

Этот архив может быть передан непосредственно Chef-Solo или извлечен и загружен на сервер Chef.

пример

Пакет поваренных книг

Используйте berkshelf, чтобы упаковать вашу поваренную книгу "myapp" и все ее зависимости.

berks package myapp-1.0.tar.gz

Использование: повар соло

tar zxf myapp-1.0.tar.gz
chef-solo -c ~/solo.rb -j ~/node.json

Использование: Chef сервер

Загрузить кулинарные книги на сервер Chef

tar zxf myapp-1.0.tar.gz
knife environment create myapp-1_0 --description "myapp version 1.0" -d
knife cookbook upload --all --cookbook-path cookbooks --environment myapp-1_0 --freeze

Загрузите несколько новых клиентских узлов против сервера chef

knife bootstrap node1 -E myapp-1_0 -r recipe[myapp] ..
knife bootstrap node2 -E myapp-1_0 -r recipe[myapp] ..
..

Создание среды является преднамеренным. Это позволяет ограничивать версии поваренной книги во время выполнения, обеспечивая изоляцию на общем шеф-сервере.

Посмотрите на spiceweasel ( https://github.com/mattray/spiceweasel)

Я не использовал это в последнее время, но это была наша стратегия (use-'ta-work-there) при установке в кластере клиента.

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