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

Puppet для управления исправлениями

Я думаю об использовании Puppet для массового управления исправлениями.

Чтобы решить эту проблему, основываясь на некоторых исследованиях, нужно создать класс и применить его там, где вам нужно, как в следующем случае:

class mypack_update {
  package { 'mypack':
   # ensure => '1.0.1d-15.el6',
    ensure  => '1.0.1g-16.el6_5.7',
  }
}

Однако это кажется непрактичным, особенно если у вас есть сотни доступных патчей, от ядра до ssl, bash и т. Д. На многих машинах.

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

Дистрибутив Linux, который мы чаще всего используем, - SLES 11.3.

Мы делаем это по принципу «sure => 'latest'», однако это делается для уже проверенного контролируемого репо. это усложняется, если ваша среда имеет разные роли с разными требованиями, тогда вам нужно использовать факты в качестве сенсорного механизма, чтобы определить, какой патч относится к какой роли, мы делаем это в hiera. после того, как мы занимались этим в течение года или около того, я считаю, что правильным ответом будет интегрированная марионетка с системой управления репо, такой как целлюлоза, и это именно то, что делает Satellite 6.

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

hieradata / patchlist.yaml:

---
packages:
  mypack:
    ensure: 1.0.1g-16.el6_5.7
  otherpack:
    ensure: latest
  otherpacktwo:
    ensure: 2.0.1

yourclass.pp

class patchset {
    create_resources('packages')
}

Что касается скриптовой части, некоторые awk / perl-fu применялись к rpm -qa команда на сервере, который, как вы знаете, имеет правильные исправления, должна выполнить эту работу.