Подтвердить что ты не робот

Могу ли я установить марионеточные модули через манифест марионеток?

Основная цель - автоматически добавлять все марионеточные модули, чтобы все dev-env и prod-env могли быть запущены с помощью одной команды. Как я могу установить марионеточные модули через манифест марионеток?

4b9b3361

Ответ 1

Мы с радостью использовали librarian-puppet для синхронизации всех сторонних модулей, поддерживая установку мест и версий модулей. Таким образом, продукция и разработчик работают с одним и тем же кодом. Использование - один лайнер

librarian-puppet install

В других случаях у нас есть оболочка script, которая запускает марионетку два раза, один раз минимальный модуль, который отвечает только за выбор необходимых модулей, а затем полностью раздутый кукольный поток, когда доступны все модули.

Ответ 2

Вот мой пример:

  $module_stdlib = 'puppetlabs-stdlib'
  exec { 'puppet_module_stdlib':
    command => "puppet module install ${module_stdlib}",
    unless  => "puppet module list | grep ${module_stdlib}",
    path    => ['/bin', '/opt/puppetlabs/bin']
  }

Где $module_stdlib - это модуль, который я хочу установить. Путь /bin - это путь, из которого следует grep. И /opt/puppetlabs/bin - это путь, где для марионетки есть моя установка.

Ответ 3

"Тип и поставщик кукольного модуля" делает именно это:

module { 'author/mymodule':
  ensure   => present,
}
module { 'puppetlabs/stdlib':
  ensure => '2.6.0',
}
module { 'puppetlabs/stdlib':
  ensure     => present,
  modulepath => '/etc/puppet/modules',
}

В последних версиях Puppet также есть команда puppet module, которая позволяет вам устанавливать произвольные кукольные модули из кукла для кукол, например:

$ puppet module install rcoleman/puppet_module
Notice: Preparing to install into /home/anarcat/.puppet/modules ...
Notice: Created target directory /home/anarcat/.puppet/modules
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/home/anarcat/.puppet/modules
└── rcoleman-puppet_module (v0.0.3)

Другие альтернативы включают:

  • librarian
  • r10k (цитируется в качестве замены для библиотекарь), поддерживает динамические среды и многое другое.

r10k теперь является частью Puppet Entreprise 2015.03, поэтому его можно считать лучшей практикой.

Ответ 4

Кажется, что возможно писать модуль для установки марионеточных модулей - это будет просто оболочка для инструмента puppet module. Тем не менее, я еще не слышал о таком модуле.

Я предполагаю, что этот механизм установки не пользуется популярностью, потому что часто вам нужно модифицировать установленный модуль, выполнять некоторые настройки. Практическим инструментом для управления такими модификациями является система контроля версий. Например, в нашей команде мы сохраняем каталог /etc/puppetlabs/puppet в репозитории git. После установки любого модуля из Puppet Forge мы добавляем его файлы в управление версиями и выталкиваем их на удаленный сервер git. Наши встроенные модули также хранятся в этом репозитории. Таким образом, несколько марионеточных мастеров (dev и prod) синхронизируются с этим центральным репозиторием и всегда имеют обновленные версии всех модулей.

Ответ 5

Я сделал это, и он, похоже, работал

exec { 'puppet-fstab':
    path => '/bin:/usr/bin',
    command => 'puppet module install -i /usr/share/puppet/modules/AlexCline-fstab >>/tmp/err.log',
}