Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Puppet 傀儡清单:覆盖哈希中的默认变量_Puppet_Manifest - Fatal编程技术网

Puppet 傀儡清单:覆盖哈希中的默认变量

Puppet 傀儡清单:覆盖哈希中的默认变量,puppet,manifest,Puppet,Manifest,我收到了一个由其他人编写的木偶模块的代码。我的任务是让它在真实的木偶环境中工作 我正在努力覆盖manifest文件中模块中的默认值。希望这是一个语法问题,而不是init类的问题 在init.pp中: class our_module( # Defaults to be overridden in the manifest file Hash $config = { 'id' => '38e18a', 'secret' => 'donttellanyone',

我收到了一个由其他人编写的木偶模块的代码。我的任务是让它在真实的木偶环境中工作

我正在努力覆盖
manifest
文件中模块中的默认值。希望这是一个语法问题,而不是init类的问题

init.pp
中:

class our_module(
  # Defaults to be overridden in the manifest file 
  Hash $config = {
    'id' => '38e18a',
    'secret' => 'donttellanyone',
    'path' => '/test/path'
  }
){
# Logic here...
}
如何覆盖这些属性?我尝试了以下操作,该操作为我的帐户提供了一个
InvalidCredentialsException

node 'my_node' {
  class { 'our_module':
    config => {
      id => 'newid',
      secret => 'newsecret',
      path => '/newpath
  }
}

我对Puppet还不熟悉,但我仍在关注文档和语法。

给定类
我们的_模块
,如问题中所述,节点块上的此变体对于声明该类和自定义其
配置
参数是有效的:

node 'my_node' {
  class { 'our_module':
    config => {
      id => 'newid',
      secret => 'newsecret',
      path => '/newpath'
    }
  }
}
希望这是一个语法问题,而不是init类的问题

如果您真正使用的是与上面相同的形式,那么我很抱歉地告诉您,问题不在于您的类声明。如果您的Puppet运行在没有声明class
我们的_模块
的节点上成功,那么我的结论是,问题确实出在类实现上

我已经尝试了以下方法,它给出了一个
InvalidCredentialsException

我不愿意认为在目录构建过程中会出现这种情况。我不能完全排除这种可能性,但这看起来确实像是一个Java例外,而catalog builder主要是用Ruby实现的。它可能来自Puppet的基于Java的服务器前端
puppetserver
,但这并不取决于清单是否声明了特定的类。我的水晶球表明,
我们的_模块
实现是
Exec
在将Java程序应用到客户机时执行Java程序,而引发异常的正是该程序


其中一些可能与坏的类参数数据有关,但我看不出有任何理由认为问题是由语法错误引起的。

节点定义在
'/newpath
之后缺少右引号,哈希值也缺少右大括号。但这是您实际使用的代码的忠实表示吗?我希望Puppet在构建目录时会因为语法错误而拒绝它,但事实并非如此。相反,可能是Puppet的puppetserver组件在目录构建开始之前出现故障,或者是在成功构建目录之后,在客户端应用类时出现故障。或者,如果在目录构建过程中确实发生了故障,然后我倾向于认为异常与您的清单集中的某个问题有关,您在问题中忽略了该问题。缺少的引号只是我在添加示例代码段时的错误。感谢您的回答。模块正在使用一个ruby SDK,该SDK进行一些HTTP/Oauth2调用。所以没有Java。我忽略了包含全部错误,所以我现在将<代码>错误:无法从远程服务器检索目录:服务器上的错误500:服务器错误:评估错误:评估函数调用时出错,InvalidCredentialsException(文件:在节点上以默认值运行时(即仅
类{'my_module':}
)该模块工作正常。只有当我试图覆盖配置变量时,它才会抛出错误。