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

Невозможно установить mailman с Puppet, если также указан список рассылки

package { 'mailman':
  ensure  => installed,
  require => Package['exim4'],
}
maillist { 'mailman':
  ensure      => 'present',
  admin       => $admin,
  description => 'Site list',
  password    => $master_password,
  require     => Package['mailman'],
}

Если пакет «mailman» не был установлен, марионетка сообщает, что «не удалось найти поставщика по умолчанию для почтовой службы». Похоже, он считает это ошибкой в ​​манифесте, потому что он полностью прерывается и не применяет никаких настроек. В результате он не обрабатывает директиву package {'mailman': ...}, что означает, что он не устанавливает mailman. Мне нужно закомментировать директиву maillist, затем применить конфигурацию, чтобы был установлен mailman, затем раскомментировать и повторно применить. Но это не удовлетворительно.

Как мне сделать это лучше?

В Puppet 2.7.8 было исправление проблемы # 6907 который позволяет установить или синхронизировать поставщика во время выполнения, в котором он используется (при условии указания обычных зависимостей). Увидеть Примечания к выпуску 2.7.8 слишком.

Вы должны обнаружить, что это исправляет этот случай, позволяя установить зависимость Mailman для поставщика рассылки во время того же запуска.

Вы можете сделать одну простую вещь - создать заказной факт который сообщит, установлен ли в вашей системе mailman. Просто сделайте так, чтобы факт вернул истину или ложь в зависимости от наличия двоичного файла.

Затем просто добавьте условие в свой манифест.

if (true = $gotmailman)
{
    maillist { 'mailman':
      ensure      => 'present',
      admin       => $admin,
      description => 'Site list',
      password    => $master_password,
      require     => Package['mailman'],
    }
}