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

Puppet: подсчет ссылок на ресурсы и их установка / удаление по запросу?

Все еще пытаюсь заставить марионетку «делать то, что я хочу» (я все еще не знаю, как с ней правильно разговаривать) ...

У меня следующая проблема: на сервере 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, для управления тем, какие пакеты должны быть на каких серверах.