如何连接Puppet .pp文件中的string?

这是我的天真做法:

# puppet/init.pp $x = 'hello ' + 'goodbye' 

这不起作用。 如何在Puppet中连接string?

关键字variables插值:

 $value = "${one}${two}" 

来源: http : //docs.puppetlabs.com/puppet/4.3/reference/lang_variables.html#interpolation

请注意,虽然它可能没有花括号工作,你应该总是使用它们。

我使用的构造,我把值放入一个数组然后“join”他们。 在这个例子中,我的input是一个数组,在这些数据与':2181'连接之后,结果值再次被放入一个数组中,并以一个空string作为分隔符。

 $zookeeperservers = [ 'node1.example.com', 'node2.example.com', 'node3.example.com' ] $mesosZK = join([ "zk://" , join($zookeeperservers,':2181,') ,":2181/mesos" ],'') 

结果$ mesosZK的值

 zk://node1.example.com:2181,node2.example.com:2181,node3.example.com:2181/mesos 

其他答案中没有提到的另一个select是使用Puppet的sprintf()函数,它的function与其后面的Ruby函数完全相同。 一个例子:

 $x = sprintf('hello user %s', 'CoolUser') 

经过validation,与木偶完美配合。 正如chutz所提到的,这种方法也可以帮助你连接函数的输出。

以下为我工作。

 puppet apply -e ' $y = "Hello" $z = "world" $x = "$y $z" notify { "$x": } ' notice: Hello world notice: /Stage[main]//Notify[Hello world]/message: defined 'message' as 'Hello world' notice: Finished catalog run in 0.04 seconds 

以下工作也是如此:

 $abc = "def" file { "/tmp/$abc": 

你可以使用puppetlabs-stdlib的join()函数。 我想在那里应该有一个stringconcat函数,但我没有看到它。 写一个会很容易。