2015-04-23 4 views
0

кукольных версий - 3.7.5кукольных приоритизации .yaml файла

Здравствуй

Я пытаюсь остановить несколько сервисов с помощью кукольных и YAML файлов Hiera с использованием массива, вопрос я получил это рандомизация. Это приводит к ошибке для меня, когда она не остановит службу, поскольку на ней есть другие сервисы. так вот структура моего файла 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. Кукольный исполняет список случайным образом каждый раз, хотя.

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

Class windows::services{ 

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


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

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

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

ответ

0

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

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

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

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 это может быть просто ввести, но вы не имеете никакого контроля над какой-либо упорядоченности.