Назад | Перейти на главную страницу

Использование Puppet для установки «пакетов» программного обеспечения

Мы находимся в процессе исследования реализации управления конфигурацией / системами, и мы провели довольно много демонстраций Puppet. Puppet, кажется, преуспевает в том, что «убедитесь, что этот пакет установлен, этот файл конфигурации существует и эта служба запущена».

Кажется, я не могу найти хороший реальный пример управления программным обеспечением, которое не работает так хорошо. Некоторые примеры:

Какой подход использовали пользователи Puppet для интеграции подобного программного обеспечения в свои среды?

Я обслуживаю сервер с локально созданными файлами и сам делаю пакеты .deb или .rpm для таких программ.

В некоторых случаях, когда я ничего не удосужился с этим сделать, я exec wget чтобы скачать файл, и exec с методом экстракции, каким бы он ни был, с creates атрибут, указывающий на основной двоичный файл. Однако он не будет обрабатывать обновления.

Чтобы обработать обновление, сделайте установку exec а refreshonly => true, и поставить notify на exec для wget.

Образец:

exec { "/usr/bin/wget http://fileserver.domain/jboss/jboss-${version}.prd.tar.gz -O /tmp/jboss.tgz":
    creates => '/tmp/jboss.tgz',
    require => Package['wget'],
    alias   => 'wget_jboss',
}

exec { '/bin/tar xzvf /tmp/jboss.tgz':
    cwd     => '/opt',
    creates => "/opt/jboss-${version}/bin",
    user    => 'jboss',
    group   => 'jboss',
    require => [ User['jboss'], Exec['wget_jboss'], File["/opt/jboss-${version}"], ],
    before  => Service['jboss'],
    alias   => 'untar_jboss',
}

В exec resource - это своего рода универсальный инструмент для управления всем, что не вписывается ни в один из других типов пакетов.

Если вы можете заставить что-то работать без присмотра в командной строке, и вы можете проверить наличие файла, чтобы подтвердить установку, тогда вы сможете заставить марионетку обработать это.

В одном из ваших примеров, VMware Tools, есть модуль на сайте создания марионеточных модулей, Вот. Как видно из файла init.pp (Вот), процесс установки выполняется в основном через exec Ресурсы.

Что ж, вы можете просто запустить программу install на одной машине и поместить установленные файлы в tar / rpm / deb. Конечно, иногда бывает непросто.