木偶条件确保订单,或者我仍然需要添加元参数

时间:2014-08-18 17:07:23

标签: puppet

我的代码类似于以下内容:

class someclass($ensure = installed)
{    
    if($ensure == installed)
    {
        $installValue = installed
        file { "someprogram.msi":
            ensure => file,
            source => 'somewhere',
            path   => 'C:/puppet-files/someprogram.msi',
        }
    }
    else
    {
        $installValue = absent
    }


    package{ "someprogram":
        ensure  => $installValue,
        source  => 'C:/puppet-files/someprogram.msi',
    }
}

包含文件资源的if语句是否确保在包资源之前应用文件资源?或者我是否需要在元参数中明确说明这一点?另外,我假设在安装软件包之前总会设置$ installValue,这是正确的吗?

谢谢,

Derongan

1 个答案:

答案 0 :(得分:4)

您应该明确指定顺序,但变量将正确初始化。

Puppet 3中的资源排序是确定性的,但基本上是随机的,因为它基于资源标题的散列。在Puppet 3.3中,此行为可以更改为清单顺序(release notes),但我不建议依赖于此 - 当然如果您共享模块,则无法保证其他人使用相同的设置。

由于文件资源可能不存在(如果确保=>缺席),则无法在包资源上指定关系。而是将before => Package['someprogram'],添加到文件资源。