Кукольный — требуется определенный ресурс с параметрами

Я новичок в Puppet и не могу найти ответ на этот вопрос. У меня есть определенный ресурс Puppet, который принимает несколько аргументов:

class xy::xy {
  include apache:regular_apache
  define setup($pkg_name, $xy_version, $pas_ver) {
    file { '/etc/xy':
           ensure => present,
           notify => Service['apache'],
  }
}

Я пытаюсь использовать этот пользовательский ресурс для другого ресурса в другом файле.

class soft::buy {
  include xy::xy

  $xt_requires = [Xy::Xy::Setup["{'xt_buy': pkg_name => 'xt_buy_v01', 
                                            xy_version => '1.0.1',
                                            pas_version => '2.1.4'}"]]

  package { 'buy.xt':
    ensure => $::buy_xt_version,
    provider => 'xt',
    require => $xt_requires,
  }
}

Ошибка, которую я получаю, такова: Syntax error at 'require'; expected '}'

Читая документы Puppet, кажется, что я где-то пропустил запятую или двоеточие, но я пробовал разные вещи. Мне было интересно, как правильно требовать настраиваемый ресурс с параметрами для другого ресурса? Спасибо!


person Shail Patel    schedule 10.05.2013    source источник


Ответы (1)


Синтаксическую ошибку можно исправить с помощью следующего фрагмента кода.

package { 'buy.xt':
  ensure => $::buy_xt_version,
  provider => 'xt',
  require => $xt_requires
}

[EDIT: исходный код определяет $xt_requires, а не $requires]

Вы определяете параметр require (который определяет, какой ресурс должен быть обработан первым).

Это отличается от оператора языка require (который включает класс и добавляет зависимость от требуемого класса).

Однако в require-paramter нельзя указать параметры требования, только его наличие. Совершенно правильно будет:

xy::xy::setup {'xt_buy':
  pkg_name => 'xt_buy_v01', 
  xy_version => '1.0.1',
  pas_version => '2.1.4'
}

package { 'buy.xt':
  ensure => $::buy_xt_version,
  provider => 'xt',
  require => Xy::Xy::Setup['xt_buy']
}
person kronn    schedule 10.05.2013
comment
Извините, я не правильно скопировал свой код! На самом деле в моем коде требуется => $requires. - person Shail Patel; 10.05.2013
comment
Точно так же я не закончил свой ответ, прежде чем нажать «Ответить». Я обновил его реальным ответом... - person kronn; 10.05.2013
comment
Кроме того, я упустил из виду еще одну опечатку в вопросе: вы определяете $xt_require, а затем ссылаетесь на $requires. Возможно, это не основная ошибка, поскольку вы явно запутали пример. - person kronn; 10.05.2013