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 に対して言及されると、正常に動作し、puppet エージェントがそれ自体を構成します。どこが間違っているのか教えてください。Java プログラムは実際にいくつかの外部リソースを照会し、クラスを分類して出力を生成します。これを完了するのに約 10 秒かかります。これは問題になるでしょうか?Ruby と Python のソリューションを見たことがありますが、どちらも機能させることができませんでした。私はそれを Java で行うことが最も望ましいと考えています。

私の puppet.conf ファイルには次のものがあります。

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

0 に答える 0