Марионетка - Возможный использовать шаблоны программного дизайна в модулях?

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

Если Вы должны: необходимо прочитать документацию почтовой программы по Вашему выбору, я предложил бы, чтобы Вы выбрали почтовую программу по умолчанию для своей ОС. (Еще это - действительно вопрос вкуса: Sendmail является и самой полной функцией и закаленной почтовой программой, но может быть хитрым для установки; Постфикс легче, но также и очень мощен. И существует также QMail, Exim и несколько других.)

Удостоверьтесь, чтобы Вы сделали аутентификацию, использовали LMTP (Порт 587), и блок любое соединение от Вашего хоста до где угодно Порта 25, и Вы будете в порядке.

0
задан 31 October 2012 в 21:37
1 ответ

Во-первых, вам определенно следует использовать define для httpd :: vhost :: package :: manage , а не class ], так как он будет определен несколько раз для одного и того же узла.

notify {$ service_env:} всегда будет мешать работе, поскольку $ service_env - это dev для обоих вызовов определите . Вы не сможете повторно объявить один и тот же ресурс с тем же именем во второй раз.

Вы можете исправить это, переключившись на что-то вроде notify {"$ {service_env} - $ {port}":} , но вы, вероятно, столкнетесь с другими проблемами, если он не был построен должным образом для обработки настройки как определенного типа.

Структура класса полностью переходит в httpd :: vhost :: package :: manage странно - я ' Я рекомендую действительно сократить все до структуры классов, которая упростит работу и позволит вам иметь только необходимые ресурсы.

httpd (init.pp - have it include the install, config, service classes)
httpd::install (install.pp - have it define Package[httpd] to install)
httpd::service (service.pp - have it define Service[httpd]; the vhost defines can
                notify this to update)
httpd::config (config.pp - any configuration, such as handling of httpd.conf,
               that won't be per-vhost)
httpd::vhost (vhost.pp - the defined type that can be used multiple times.  Have
              it include httpd so that the base classes are handled, and
              notify httpd::service from your vhost config file resources)

Простой пример управления виртуальным хостом на самом деле пример для определенных типов в документации - дайте мне знать, если вам понадобятся какие-либо другие разъяснения по поводу того, как сделать из этого красивую повторно используемую часть конфигурации!

Изменить:

Обновление для проблемы общих родительских каталогов.

Управление файлом из двух разных мест - это боль в Puppet, и раньше это доставляло мне проблемы. Особенно неприятно, когда нет конфликта между двумя объявлениями ресурсов, как в вашей текущей головоломке.

Вы правы, ресурс exec , вероятно, ваш лучший ответ.

define app($app_primary, $app_sub) {
    exec { "mkdir_${service_env}_${app_primary}_${app_sub}":
        command  => "/bin/mkdir -p /tmp/var/log/httpd/${service_env}/${app_primary}/${app_sub}",
        creates  => "/tmp/var/log/httpd/${service_env}/${app_primary}/${app_sub}",
        require  => Class["httpd::vhost::log::base"],
    }
}

Это работает для обоих случаев (с и без подкаталога), потому что вы ' повторно установите $ app_sub в пустую строку, если она не используется.

Я бы сказал, что, вероятно, будет намного проще просто не использовать дерево каталогов (используйте log / httpd / foo_sitea в качестве каталога журнала вместо log / httpd / foo / sitea ), но это должно помочь. Разделение строки и разное поведение в зависимости от этого, и все эти отдельные определяют , когда это действительно может просто жить в классе site ... не усложняйте!

3
ответ дан 4 December 2019 в 12:41

Теги

Похожие вопросы