1

我有以下脚本,我在其中调用了一个将 YAML 输出写入 Strandard 输出流的 java 程序,并且被回显(简单)。

#!/bin/bash
echo `/usr/lib/jvm/jre/bin/java -jar /etc/puppet/enc/enc.jar $1`

我在文件中有上述脚本

/etc/puppet/enc/javaEnc.sh
当我执行这个提供节点名称作为参数时,我得到以下输出。

---
classes:
  class1:
  class2:

问题是,在代理节点上,我收到错误消息

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find node 'node-agent-1'; cannot compile
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

我发现脚本没有执行(或者更确切地说,我的 java 程序没有被调用,不知道为什么) - 在我的 java 程序中,除了执行 System.out.print 之外,我还将输出写入文件。

我有另一个脚本,我在其中读取包含与我提到的输出相同的数据的文件(data.yaml),并通过以下脚本将其写入输出流。

#!/bin/bash
cat "/etc/puppet/enc/data.yaml"

当针对 external_nodes 提及此脚本时,它工作正常,木偶代理自行配置。我能知道我在哪里弄错了吗?Java 程序实际上会查询一些外部资源并对类进行分类并生成输出 - 完成此操作大约需要 10 秒。这可能是个问题吗?我见过 ruby​​ 和 python 解决方案 - 也无法让它们工作。我希望它最好用 Java 完成。

在我的 puppet.conf 文件中,我有以下内容。

[master]
node_terminus = exec
external_nodes = /etc/puppet/enc/javaEnc.sh
4

0 回答 0