Подтвердить что ты не робот

Кукольный: как я могу обернуть команду в две строки, если> 80 символов?

В марионетке, если команда define составляет > 80 символов, как я могу обернуть ее в две строки?

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

Ответ 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