Кукольный: как я могу обернуть команду в две строки, если> 80 символов?
В марионетке, если команда define составляет > 80 символов, как я могу обернуть ее в две строки?
exec { 'create_domain':
command => "some command exceed 80 character...........................................................how to do how to do?.......",
}
Ответы
Ответ 1
Это некрасиво, но если последний символ в строке - это '\', за которым следует новая строка, то строка продолжается на следующей строке. Мой пример sample.pp приведен ниже:
class test {
exec { 'create_domain':
command => "/bin/echo 1234567890123456789012345678901234567890123456789012345678901234567890\
wrapped > /var/tmp/test.txt";
}
}
node 'pwan-central' {
include test
}
Выполнение этого с помощью 'puppet apply sample.pp' на Ubuntu 11.10 с Puppet 2.7.1 дает следующий выход
[email protected]:~$ puppet apply sample.pp
notice: /Stage[main]/Test/Exec[create_domain]/returns: executed successfully
notice: Finished catalog run in 0.10 seconds
И привязка созданного файла показывает, что строки завернуты:
[email protected]:~$ cat /var/tmp/test.txt
1234567890123456789012345678901234567890123456789012345678901234567890wrapped
См. https://github.com/puppetlabs/puppet/blob/9fbb36de/lib/puppet/parser/lexer.rb#L537 (начиная с Puppet v2.7.0)
Также это своего рода известная проблема: http://projects.puppetlabs.com/issues/5022
Ответ 2
Если вы действительно заботитесь об ограничении 80cols, вы всегда можете злоупотреблять шаблоном для достижения этой цели.
exec {'VeryLongExec':
command => template("${module}/verylongexec")
}
Затем поместите фактическую команду в этот файл шаблона
Кредиты должны отправиться в Jan Vansteenkiste, чтобы увидеть
Ответ 3
Как и в Puppet 3.5, у вас есть несколько вариантов, которые я использовал. Ruby позволяет конкатенировать строки по нескольким строкам.
string = "line #1"\
"line #2"\
"line #3"
p string # => "line #1line #2line #3"
Другой вариант, с Puppet 3.5, они добавили функциональность HereDoc. Это позволит вам поместить строку в раздел файла исходного кода, который обрабатывается как отдельный файл.
$mytext = @(EOT)
This block of text is
visibly separated from
everything around it.
| EOT
Марионеточная документация находится здесь: https://docs.puppet.com/puppet/4.9/lang_data_string.html#heredocs