títere titeres titere persona papel niña mano hacer faciles cómo confeccion como casero animales coding-style puppet

coding-style - persona - confeccion de titeres



Títere: ¿Cómo puedo ajustar un comando en dos líneas si> 80 caracteres? (4)

En Puppet, si el comando define es> 80 caracteres, ¿cómo puedo ajustar en dos líneas para hacerlo?

exec { ''create_domain'': command => "some command exceed 80 character...........................................................how to do how to do?.......", }


A partir de Puppet 3.5 tienes un par de opciones que he usado. Ruby te permite concentrar cadenas en un par de líneas.

string = "line #1"/ "line #2"/ "line #3" p string # => "line #1line #2line #3"

Otra opción, a partir de Puppet 3.5, han agregado la funcionalidad HereDoc. Esto le permitirá colocar la cadena en una sección de un archivo de código fuente que se tratará como si fuera un archivo separado.

$mytext = @(EOT) This block of text is visibly separated from everything around it. | EOT

La documentación de títere está aquí: https://docs.puppet.com/puppet/4.9/lang_data_string.html#heredocs


Es algo feo, pero si el último carácter de una cadena es un ''/' seguido de una nueva línea, entonces la cadena continúa en la siguiente línea. Mi manifiesto de muestra.pp está abajo:

class test { exec { ''create_domain'': command => "/bin/echo 1234567890123456789012345678901234567890123456789012345678901234567890/ wrapped > /var/tmp/test.txt"; } } node ''pwan-central'' { include test }

Ejecutar esto con ''puppet apply sample.pp'' en un Ubuntu 11.10 con Puppet 2.7.1 da el siguiente resultado

mrpwan@pwan-central:~$ puppet apply sample.pp notice: /Stage[main]/Test/Exec[create_domain]/returns: executed successfully notice: Finished catalog run in 0.10 seconds

Y catting el archivo creado muestra las líneas se han envuelto:

mrpwan@pwan-central:~$ cat /var/tmp/test.txt 1234567890123456789012345678901234567890123456789012345678901234567890wrapped

Ver https://github.com/puppetlabs/puppet/blob/9fbb36de/lib/puppet/parser/lexer.rb#L537 (a partir de Puppet v2.7.0)

También se trata de un problema conocido: http://projects.puppetlabs.com/issues/5022


Para grandes cantidades de datos, los heredocs son la mejor manera de lidiar con largas filas en los manifiestos Puppet. La opción de interpolación /L es particularmente útil. /L hace que / al final de una línea elimine las nuevas líneas. Por ejemplo, lo siguiente hace lo que cabría esperar, eliminando la sangría y las nuevas líneas, incluida la nueva línea final.

sshkey { ''example.com'': ensure => present, type => ''ssh-rsa'', key => @(KEY/L), RfrXBrU1T6qMNllnhXsJdaud9yBgWWm6OprdEQ3rpkTvCc9kJKH0k8MNfKxeBiGZVsUn435q/ e83opnamtGBz17gUOrzjfmpRuBaDDGmGGTPcO8Dohwz1zYuir93bJmxkNldjogbjAWPfrX10/ 8aoDw26K12sK61lOt6GTdR9yjDPdG4zL5G3ZjXCuDyQ6mzcNHdAPPFRQdlRRyCtG2sQWpWan/ 3AlYe6h6bG48thlo6vyNvOD8s9K0YBnwl596DJiNCY6EsxnSAhA3Uf9jeKqlVqqrxhEzHufx/ 07iP1nXIXCMUV |-KEY target => ''/home/user/.ssh/known_hosts'', }


Si realmente te importa el límite de 80cols, siempre puedes abusar de una plantilla para lograr ese objetivo

exec {''VeryLongExec'': command => template("${module}/verylongexec") }

Luego ponga el comando real en ese archivo de plantilla

Los créditos deben ir a Jan Vansteenkiste para calcular