如何使用irb在puppet中测试/调试

时间:2015-11-18 18:04:20

标签: puppet irb

我在傀儡3.6.2,我有我们的木偶回购的来源。我想这样做:

irb> require 'rubygems'
irb> require 'puppet'
irb> Puppet[:confdir] = "/home/wwalker/git/puppet"
irb> node=Puppet::Node.new('localhost')
irb> compiler=Puppet::Parser::Compiler.new(node)
irb> scope=Puppet::Parser::Scope.new(compiler)
irb> scope.function_generate_mysql_url(...)

但是,我无法通过编译器:

irb(main):010:0> compiler=Puppet::Parser::Compiler.new(node) Puppet::Context::UndefinedBindingError:
     no 'environments' in
     {:current_environment=><Puppet::Node::Environment:17836720 @name="*root*" @manifest="no_manifest" @modulepath="" >,
      :root_environment=><Puppet::Node::Environment:17836720 @name="*root*" @manifest="no_manifest" @modulepath="" >}
     at top of [[0, nil, nil]]

我假设我需要设置“环境”,或者我设置了confdir错误。

其他人在irb中对puppet模块进行过任何测试吗?

我无法直接访问puppet服务器。我在我的工作站(安装了puppet-server 4.1)和客户端(安装了puppet 3.6.2)上尝试了这个。

这看起来很简单,但我显然遗漏了一些东西。

任何人都知道我缺少哪些步骤?

2 个答案:

答案 0 :(得分:1)

这将是某人指向另一个工具的时间之一。如果你想进行Ruby调试,你应该考虑使用pryhttp://pryrepl.org/)代替。

这是我在Puppet / modules / Ruby开发过程中使用的,它使用起来非常简单。

在你的Gemfile中:

gem 'pry'
gem 'pry-stack_explorer'

if RUBY_VERSION =~ /^2/
  gem 'pry-byebug'
else
  gem 'pry-debugger'
end

奖励:它适用于Windows以及其他任何地方(可能需要安装DevKit)。

答案 1 :(得分:1)

我不确定你要完成什么,但是有一个puppet调试器repl用于puppet语言,它非常类似于pry / irb但是特定于puppet。

https://github.com/nwops/puppet-debugger

您可以使用调试器运行模块路径中当前可用的任何功能以及许多其他功能。

您还可以在puppet代码中设置断点,并使用&#39; debug :: break()&#39;加载调试器。功能

cat