Все еще пытаюсь заставить марионетку «делать то, что я хочу» (я все еще не знаю, как с ней правильно разговаривать) ...
У меня следующая проблема: на сервере Apache размещается статический контент для нескольких клиентов, и этот статический контент версируется:
node the.node.name {
client { 'c1':
version => 'v1',
# otherstuff
}
client { 'c2':
version => 'v2',
}
}
Таким образом определено более 30 клиентов. В общей сложности в любой момент может быть установлено от 2 до 4 версий контента.
Теперь, со временем, версии развиваются - довольно быстро. Прямо сейчас я могу добиться только установки нового контента, но никогда не удаляю устаревший контент.
Как бы вы сделали подсчет ссылок для установленных версий и удалили устаревшие версии?
Храните статический контент в репозитории git. Создайте ветку для каждой версии контента, который вам нужен. Используйте марионетку для создания репозитория, если его нет, чтобы убедиться, что правильная ветка извлечена, и для автоматического обновления репозитория. Git позаботится о добавлении и удалении файлов оттуда. Переустановите свои ветки на ту версию, которая уместна в любой момент времени.
С другой стороны, вы можете обнаружить, что rsync с соответствующими флагами (удаление файлов, отсутствующих на главном сервере) также может работать.
Самое простое решение - добавление и удаление пакетов с накладными расходами на управление.
package { 'c1_v8': ensure => present, }
package { 'c2_v7': ensure => present, }
package { 'c1_v1': ensure => absent, }
package { 'c2_v2': ensure => absent, }
Вы можете стать интереснее, используя внешний источник данных, такой как hiera w / puppet-hiera, для управления тем, какие пакеты должны быть на каких серверах.