Я думаю об использовании 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
команда на сервере, который, как вы знаете, имеет правильные исправления, должна выполнить эту работу.