木偶优先.yaml文件

问题描述:

木偶版本 - 3.7.5木偶优先.yaml文件

你好

我试图用木偶和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. 

它然后错误,并跳过该服务,并继续与其余。我的第一个想法是在我的yaml文件中包含Net.pipe服务,但在WAS之上,因此它会在停止WAS之前停止它。但Puppet每次都会随机执行列表。

也在这里是我的清单文件:

Class windows::services{ 

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


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

有没有办法解决?我正在考虑使用订购箭头 - >'但据我所知,它们不能在Hiera阵列中使用。

在此先感谢:)

Hiera将默认返回数组以未定义的顺序。一旦在Puppet中有数据,您可以使用PuppetLabs-stdlib函数sort()对它们进行排序。

但是,做一个书法排序可能会隐藏你的问题,但不解决它。你的实际问题是你没有模拟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停止它可能是简单类型的服务,但你必须在任何顺序的控制。