Кукольный приоритет файла .yaml

Кукольная версия — 3.7.5

Привет

Я пытаюсь остановить несколько служб, использующих файлы puppet и Hiera yaml с использованием массива, проблема, с которой я столкнулся, - это рандомизация. Это вызывает у меня ошибку, когда служба не останавливается, поскольку от нее зависят другие службы. Итак, вот структура моего файла Hiera:

server::services:
  - 'WAS'
  - 'DNS'
  - 'IISADMIN'
  - 'NetPipeActivator'
  ...

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

The following services are dependent on the windows Process Activation
Service service. Stopping the Windows Process Activation Service service
will also stop these services.

Net.pipe Listener Adapter

Do you want to continue the operation? (Y/N)[N]:
No valid response was provided.

Затем он выдает ошибку и пропускает эту службу и продолжает работу с остальными. Моей первой мыслью было включить службу Net.pipe в мой файл yaml, но выше WAS, чтобы он останавливал ее перед остановкой WAS. Однако Puppet каждый раз выполняет список случайным образом.

также вот мой файл манифеста:

Class windows::services{

  $windowsservices = [hiera_array('server::services')]


  service {$windowsservices:
    ensure => "stopped",
    enable => manual,
  }
}

Есть ли способ обойти это ? Я думал об использовании стрелок упорядочения '->', но, насколько я знаю, их нельзя использовать в массиве Hiera.

Заранее спасибо :)


person user2099445    schedule 23.04.2015    source источник


Ответы (1)


Hiera по умолчанию возвращает массивы в неопределенном порядке. Получив данные в Puppet, вы можете использовать функцию PuppetLabs-stdlib sort() для их сортировки. Если хочешь.

Однако выполнение лексиграфической сортировки может скрыть вашу проблему, но не решить ее. Ваша фактическая проблема заключается в том, что вы не смоделировали отношения между службами в Puppet. У вас есть службы, которые зависят от других служб, и вы должны учитывать это, используя отношения< /а>.

Это сделает ваши манифесты более подробными, но будет "правильным".

class windows::services { 
  service { 'WAS':
    ensure => stopped,
    enable => manual,
  }
  service { 'NetPipeActivator':
    ensure => stopped,
    enable => manual,
    before => Service['WAS'],
  }
}

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

class windows::services { 
  $windowsservices = [hiera_array('server::services')]
  service { $windowsservices:
    ensure => stopped,
    enable => manual,
  }
  Service['NetPipeActivator'] -> Service['WAS']
}

Если вы храните услуги, которые хотите остановить, в Hiera, это может быть просто ввести, но вы не можете контролировать порядок.

person Luke Bigum    schedule 12.05.2015