string concatenation - net - ¿Cómo concatena cadenas en un archivo Puppet.pp?
string concat java (5)
Interpolación variable de palabra clave:
$value = "${one}${two}"
Fuente: http://docs.puppetlabs.com/puppet/4.3/reference/lang_variables.html#interpolation
Tenga en cuenta que, aunque podría funcionar sin las llaves, siempre debería usarlas.
Aquí está mi enfoque ingenuo:
# puppet/init.pp
$x = ''hello '' +
''goodbye''
Esto no funciona. ¿ Cómo concatena cadenas en Puppet?
Lo siguiente funcionó para mí.
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
Lo siguiente también funciona:
$abc = "def"
file { "/tmp/$abc":
Otra opción que no se menciona en otras respuestas es usar la función sprintf()
Puppet , que funciona de forma idéntica a la función Ruby que se encuentra detrás. Un ejemplo:
$x = sprintf(''hello user %s'', ''CoolUser'')
Verificado para funcionar perfectamente con títeres. Como se mencionó por chutz , este enfoque también puede ayudarlo a concatenar el resultado de las funciones.
Puede usar la función join () de puppetlabs-stdlib. Estaba pensando que debería haber una función de concat de cadena allí, pero no lo veo. Sería fácil escribir uno.
Utilizo el constructo donde pongo los valores en una matriz y luego los "une". En este ejemplo, mi entrada es una matriz y después de que se hayan unido con '': 2181'', el valor resultante se coloca nuevamente en una matriz que se une con una cadena vacía como separador.
$zookeeperservers = [ ''node1.example.com'', ''node2.example.com'', ''node3.example.com'' ]
$mesosZK = join([ "zk://" , join($zookeeperservers,'':2181,'') ,":2181/mesos" ],'''')
valor resultante de $ mesosZK
zk://node1.example.com:2181,node2.example.com:2181,node3.example.com:2181/mesos