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

Как использовать переменную в манифесте марионетки?

Я использую модуль WSUS с Puppet Master на Centos 7.2. Мои серверы Puppet Agent работают под управлением Windows Server 2012.

Я хочу использовать манифест с переменной. Однако, когда на сервере Puppet Agent запущен марионеточный агент, отображается «ошибка 400, синтаксическая ошибка». Я пробовал переписать манифест и все возможные варианты. Я все время получаю ошибку.

Вот один пример манифеста:

class excellent {
    class { 'wsus_client':
       $cool = 'Saturday'
    server_url => 'http://acme.com',
    auto_update_option  => 'Scheduled'
    scheduled_install_day => $cool,
    scheduled_install_hour => 1,
}
}

Я пробовал назначать переменную в фигурных скобках {}. Я пробовал использовать $ LOAD_PATH, --custom-dir и FACTERLIB. Но я не мог понять, как использовать любой из этих трех.

Я хочу изменить переменную в одном месте и использовать ее в рамках родительского класса. Что я должен делать?

Вы пробовали этот способ?

class excellent {
  $cool = 'Saturday'

  class { 'wsus_client':
    server_url => 'http://acme.com',
    auto_update_option  => 'Scheduled'
    scheduled_install_day => $cool,
    scheduled_install_hour => 1,
  }
}

Или вот так

class excellent (
  $cool = 'Saturday'
){
  class { 'wsus_client':
    server_url => 'http://acme.com',
    auto_update_option  => 'Scheduled'
    scheduled_install_day => $cool,
    scheduled_install_hour => 1,
  }
}

В настоящее время вы, кажется, пытаетесь присвоить значение переменной в объявление класса. Назначение вашей переменной должно быть отдельным.

$cool = 'Saturday'

Объявление вашего класса должно выглядеть так.

class {'namevar':
  a => 'a',
  b => 'b',
  c => 'c'
}