Марионетка: Организация зависимостей от модуля (копируют файл, если пакет присутствует),

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

Не упущение, пока ESXI может быть свободным, VCenter, не, и это определенно походит на излишество для Ваших требований.

Если бы Вы хорошо работаете в vbscripting или powershell, я рассмотрел бы обработку чего-то с ними и автоматизирующий такой большой процесс, как Вы можете.

3
задан 4 November 2011 в 18:11
4 ответа

Создайте в extdata переменную, которая определяет, нужно ли отслеживать сервер. Вот пример включения мониторинга по умолчанию и его отключения для определенного сервера.

extdata / common.csv

use_monitoring,true

extdata / ephemeral.example.com.csv

use_monitoring,false

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

class apache {

  # Manage your apache setup here

  if extlookup("use_monitoring") == 'true' {
    include monitoring::apache
  }

}

class monitoring::apache {
  # Manage your apache monitoring setup here
}

Обновление: Когда я впервые прочитал ваш вопрос, я подумал, что вы спрашиваете способ включить мониторинг на некоторых, но не на всех ваших серверах Apache. Если вы хотите отслеживать их все, вам даже не нужно возиться с extlookup. Просто разделите свой класс мониторинга на классы для конкретных служб и включите их в класс для службы.

0
ответ дан 3 December 2019 в 07:11

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

class apache {
  $apacheconfigured = true;
}

class monitor {
  if $apache::apacheconfigured {
    file {'blah': ... }
  }
}
2
ответ дан 3 December 2019 в 07:11

Вам потребуются виртуальных ресурсов или настраиваемых фактов . Если конфигурация одного хоста изменит конфигурацию другого, вам потребуется экспортированных ресурсов . На самом деле у меня есть все это. Вот образец.

Виртуальные ресурсы

В классе мониторинга:

@file { '/path/to/apache/monitoring/conf': 
    ensure => file,
    source => 'puppet:///modules/monitoring/apache.conf',
    tag    => 'apache-extras',
}

В классе Apache:

File <| tag == 'apache-extras' |>
Exec <| tag == 'apache-extras' |>
etc...

Пользовательские факты

Объявите такой факт и поместите его в соответствующее место (см. Ссылку выше ):

# apache2.rb
Facter.add("apache2") do
        setcode do
                %x{/usr/bin/test -x /etc/init.d/apache2 && /bin/echo yes || /bin/echo no}.chomp
        end
end

В классе мониторинга используйте:

if $apache2 == 'yes'   {
   # include configuration for apache
}

Экспортированные ресурсы

В классе Apache, включенном в сервер Apache:

@@exec { "config-web $fqdn": 
            tag => "monitoring-server", 
    }

В классе мониторинга, включенном в сервер мониторинга:

<<| tag == 'monitoring-server' |>>
1
ответ дан 3 December 2019 в 07:11

Почему бы просто не require => Package ['apache'] на ресурсы в модуле мониторинга? Если в узел добавлены классы apache и мониторинга , файлы, зависящие от apache, будут установлены, если он установлен успешно. Если это не так (например, не удалось установить пакет или модуль apache не добавлен в узел, класс мониторинга просто не сработает).

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

if defined(Package['apacge']) {
    file {...}
    <and so on>
}
-1
ответ дан 3 December 2019 в 07:11

Теги

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