Я в ситуации, когда я постоянно запускаю новые виртуальные машины для разработки. У меня есть базовый образ, который я могу клонировать, но он быстро устаревает, и у вас нет способа добавить изменения во многие виртуальные машины.
Я хочу настроить марионеточный скрипт, который запускается при первой загрузке виртуальной машины, и есть много руководств по созданию site.pp, который запускается непосредственно марионеткой, но это включает один файл, который вы должны настроить на узел. Что я хотел бы сделать, так это настроить разработку на puppetmaster, чтобы все мои виртуальные машины могли обращаться к одной и той же точке и оставаться в курсе и позволять мне создавать полный набор пакетов с использованием файлового сервера и т. Д.
Проблемы, которые я вижу в этом, заключаются в том, что я не могу / не хочу полагаться на имена хостов для идентификации vms, меня не волнует сохранение истории pki, поскольку имена vm могут быть повторно использованы.
Можно ли использовать puppet вместе с puppetmaster и игнорировать все pki? Могу ли я создать среду, в которой я могу зарегистрировать виртуальную машину с помощью факта или каким-либо другим способом? Я хотел бы сделать тип марионеточного агента = test1 или аналогичный.
В общем, как я могу использовать марионетку через централизованный источник, когда я не особо беспокоюсь о безопасности узлов и ожидаю, что узлы будут часто приходить и уходить?
Поскольку виртуальные машины предназначены для разработки, вы можете посмотреть Бродяга. У Vagrant есть поддержка Puppet прямо из коробки.
Настройте свои виртуальные машины для подготовки через DHCP и добавьте в свою конфигурацию (вы можете дать своим виртуальным машинам случайные или последовательные имена, если хотите, но оставьте часть домена, чтобы упростить развертывание):
option domain-name "my.domain.com";
Установите свой puppetmaster
чтобы предоставить нужные модули:
node /.*my.domain.com/ inherits default {
}
И включите автоподпись для этого домена:
$ cat autosign.conf
# Domains you want SSL certificates autosigned for
#*.my.domain.com
А что касается "добавления изменений во многие виртуальные машины", вот что puppet
для. Если вы хотите / нуждаетесь в других операциях по требованию, взгляните на Коллектив марионеток.
puppet может работать в режиме клиент / сервер, но это не обязательно. Вы можете вызвать марионетку локально для текущей машины, это намного проще (но, конечно, менее масштабируемо)
В моем случае при запуске новой виртуальной машины я просто копирую полную конфигурацию марионетки с помощью sftp (ssh) и вызываю puppet локально. Инструкции здесь (fr) http://offirmo.net/wiki/index.php?title=Amor%C3%A7age_d%27un_serveur_Ubuntu_avec_puppet
cd ~/puppet
sudo puppet apply --debug --detailed-exitcodes --verbose manifests/site.pp --modulepath=modules --ignorecache --no-usecacheonfailure
Если мне нужны обновления, моя конфигурация марионетки находится в репозитории git (https://github.com/Offirmo/offirmo-puppet), и я могу просто получить последнюю версию с помощью git pull и применить снова.
Вам решать, лучше ли этот метод в вашем случае.