Puppet:条件文件源

chr*_*ris 3 puppet

我想根据条件使用不同的 squid.conf 文件。就像是:

    file { '/etc/squid/squid.conf':
    ensure => file,
    if condition = true then
        source => 'puppet:///modules/1/squid.conf_1',
    else
        source => 'puppet:///modules/1/squid.conf_2',
    fi
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Dom*_*eal 8

你需要一个selector,它可以让你在资源内部有一个条件 - 或者在它之外设置一个变量。

这是选择器:

file { '/etc/squid/squid.conf':
  ensure => file,
  source => $fact ? {
    "foo"   => 'puppet:///modules/1/squid.conf_1',
    "bar"   => 'puppet:///modules/1/squid.conf_2',
    default => 'puppet:///modules/1/squid.conf_default',
  },
}
Run Code Online (Sandbox Code Playgroud)

或者设置一个变量并使用它:

if $fact == "foo" {
  $squidconf = 'puppet:///modules/1/squid.conf_1'
} else {
  $squidconf = 'puppet:///modules/1/squid.conf_2'
}

file { '/etc/squid/squid.conf':
  ensure => file,
  source => $squidconf,
}
Run Code Online (Sandbox Code Playgroud)

当然还有其他变体,请查看上面链接的语言指南和有关变量的学习木偶教程部分。