Как распечатать что-нибудь при запуске клиента Puppet? - PullRequest
47 голосов
/ 09 ноября 2010

Я хочу распечатать сообщения и переменные при запуске Puppet.Я видел, что есть две функции, которые могут помочь, но на самом деле не могут их использовать.Мой site.pp файл:

info "running site.pp info"
debug "running site.pp debug"

Когда я запускаю на клиенте:

puppet -t

Я не получаю эти отпечатки.

Ответы [ 10 ]

57 голосов
/ 21 мая 2013

Вот сценарий кукол со всеми доступными функциями журнала кукол.

log_levels.pp

node default {
  notice("try to run this script with -v and -d to see difference between log levels")
  notice("function documentation is available here: http://docs.puppetlabs.com/references/latest/function.html")
  notice("--------------------------------------------------------------------------")

  debug("this is debug. visible only with -d or --debug")
  info("this is info. visible only with -v or --verbose or -d or --debug")
  alert("this is alert. always visible")
  crit("this is crit. always visible")
  emerg("this is emerg. always visible")
  err("this is err. always visible")
  warning("and this is warning. always visible")
  notice("this is notice. always visible")
  #fail will break execution
  fail("this is fail. always visible. fail will break execution process")

}

Вывод сценария (для кукол 2.7): different log levels colors

Примечание: цвета Puppet 3.x могут измениться (все ошибки будут напечатаны красным)!

51 голосов
/ 25 ноября 2010

из функции Puppet документация

info: Log a message on the server at level info.
debug: Log a message on the server at level debug.

Вы должны посмотреть свой лог-файл puppetmaster, чтобы найти информацию / сообщения отладки.

Вы можете использовать

notify{"The value is: ${yourvar}": }

, чтобы выдать вывод вашему марионеточному клиенту

16 голосов
/ 04 октября 2013

Если вы хотите уведомить пользователя различными типами сообщений, такими как информация, отладка, ошибка, предупреждение, оповещения, критические и экстренные сообщения, то используйте метапараметр loglevel в ресурсах марионеток.

С использованием уровня лога вы можете использовать одни и те же ресурсы для сообщений об ошибках различного типа.

например, для создания отладочных сообщений вы можете использовать его как

 notify {"debug message":
      loglevel => debug,
    }
8 голосов
/ 16 июля 2013

Точно так же, как альтернатива, вы можете подумать об использовании execs ... (хотя я бы не рекомендовал это делать)

exec { 'this will output stuff':
  path      => '/bin',
  command   => 'echo Hello World!',
  logoutput => true,
}

Так что, когда вы запускаете puppet, вы должны найти что-то вроде этого:

notice: /Stage[main]//Exec[this will output stuff]/returns: Hello World!
notice: /Stage[main]//Exec[this will output stuff]/returns: executed successfully
notice: Finished catalog run in 0.08 seconds

Первая строка, в которой регистрируется вывод.

6 голосов
/ 19 мая 2013

Вы можете запустить клиент так ...

puppet agent --test --debug --noop

с помощью этой команды вы получите все выходные данные, которые вы можете получить.

отрывок кукольного агента справки
* --test:
  Enable the most common options used for testing. These are 'onetime',
  'verbose', 'ignorecache', 'no-daemonize', 'no-usecacheonfailure',
  'detailed-exitcodes', 'no-splay', and 'show_diff'.

ПРИМЕЧАНИЕ: Не нужно включать --verbose при использовании переключателя --test|-t, это также подразумевает --verbose.

5 голосов
/ 25 апреля 2014

Это делает задачу для меня.Я использую это для проверки переменных и отображения уведомлений ..

notify {"hello world $var1":}

Вот документация на веб-сайте Puppet: http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe

1 голос
/ 30 января 2014

Проще, используйте уведомление.например, уведомление («foo.pp works») или уведомление ($ foo)

0 голосов
/ 22 мая 2018

Если, как и у меня, у вас нет доступа к мастеру puppet, и вам необходимо распечатать журналы отладки для проверки переменных на вашем клиентском компьютере, вы можете попробовать записать файл из самого кода кукол:

file { '/tmp/puppet_debug.log':
  content => inline_template('<%= @variable_x.to_s %>'),
}
0 голосов
/ 11 мая 2018

Вы можете пойти дальше и взломать код марионетки, используя точку останова.

http://logicminds.github.io/blog/2017/04/25/break-into-your-puppet-code/

Это будет работать только с применением кукол или использованием теста rspec. Или вы можете вручную ввести свой код в консоль отладчика. Примечание: puppet все еще должен знать, где находится код вашего модуля, если вы еще не установили.

gem install puppet puppet-debugger 
puppet module install nwops/debug
cat > test.pp <<'EOF'
$var1 = 'test'
debug::break()
EOF

Должен показать что-то вроде.

puppet apply test.pp
From file: test.pp
     1: $var1 = 'test'
     2: # add 'debug::break()' where you want to stop in your code
  => 3: debug::break()
1:>> $var1
=> "test"
2:>>

https://www.puppet -debugger.com

0 голосов
/ 04 мая 2011

Вы пробовали то, что на образце. Я новичок в этом, но вот команда: puppet --test --trace --debug. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...