gpt4 book ai didi

puppet - 有条件的在 puppet 中定义

转载 作者:行者123 更新时间:2023-12-02 01:30:37 25 4
gpt4 key购买 nike

运行 Puppet 3.8

我有两个定义:

    define desktop::vinstall () {  
package { $title:
ensure => installed,
allow_virtual => true,
configfiles => keep,
}
}

    define desktop::vinstallwseeds () {  
package { $title:
ensure => installed,
allow_virtual => true,
configfiles => keep,
require => File["/var/cache/debconf/pkg-${title}.seeds"],
responsefile => "/var/cache/debconf/pkg-${title}.seeds",
}
file { "/var/cache/debconf/pkg-${title}.seeds":
source => "puppet:///modules/desktop/pkg-${title}.seeds",
ensure => present,
}
}

想将它们变成一个带有可选 bool 参数的定义语句,例如:

    define desktop::vinstallopt ( $queryresponse = 'false', ) {  
package { $title:
ensure => installed,
allow_virtual => true,
configfiles => keep,
if $queryresponse == 'true' {
require => File["/var/cache/debconf/pkg-${title}.seeds"],
responsefile => "/var/cache/debconf/pkg-${title}.seeds",
}
}
file { "/var/cache/debconf/pkg-${title}.seeds":
source => "puppet:///modules/desktop/pkg-${title}.seeds",
ensure => present,
}
}

然后在 init.pp 中用这样的语句实例化它:

    @desktop::vinstallopt { 'gdebi': queryresponse => 'false', }

但是这样做会报错:

    Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with argument error ArgumentError: Invalid resource type desktop::vinstallopt at /etc/puppet/modules/desktop/manifests/init.pp:40 on node machine.prvt.net

第 40 行具有上述语法。我是 puppet 新手,如果这是一个简单的语法问题,我深表歉意。我试图从 PuppetLabs 文档和其他 puppet 用户那里找到一种方法来完成这项工作,但到目前为止还没有成功。

最佳答案

您正试图在资源声明中嵌入 if block 。唉,这是不可能的。该 block 必须是全局 block 或位于常规 block 中(例如,类主体、定义主体、lambda 主体)。

在这种情况下,可以这么说,您想要“修改”package 资源。为此,我喜欢使用以下结构:

package { $title:  
ensure => installed,
allow_virtual => true,
configfiles => keep,
}
if $queryresponse {
Package[$title] {
require => File["/var/cache/debconf/pkg-${title}.seeds"],
responsefile => "/var/cache/debconf/pkg-${title}.seeds",
}
}

请注意,此覆盖语法仅在此范围内允许,因为requireresponsefile 属性最初没有分配任何值.

关于puppet - 有条件的在 puppet 中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com