定義されたタイプ内にファイルを作成したい。いくつかの方法を試しましたが、問題を解決できませんでした。私の場合を説明させてください。
templtes を使用していくつかのファイルを作成していますが、その操作を完全に行うことができました。以下のルビー関数を使用して、ファイル名、場所の種類のデータを収集しています
require 'rexml/document'
include REXML
module Puppet::Parser::Functions
newfunction(:getConfigFileDetails, :type => :rvalue ) do |args|
fileDetails= []
doc = REXML::Document.new args[0]
doc.elements.each("node/congfigurations/config") {
|config|
fileName= config.elements["@fileName"].value
fileLocation= config.elements["@location"].value
fileDetails << {'filename' => fileName, 'filelocation'=> fileLocation}
}
return fileDetails
end
end
そして、私は人形クラス内でこの関数を使用していますが、私にとってはうまく機能します
define fill_templates() {
$fileName = $name["filename"]
$fileLocation = $name['filelocation']
file { "${fileLocation}/${fileName}/":
ensure => present,
owner => 'root',
group => 'root',
mode => '0777',
content => template("config/${fileName}.erb"),
require => Exec["unzip_pack"],
}
}
$configFileDetails = getConfigFileDetails($allConfigurations['configurations'])
fill_templates { $configFileDetails: }
次に、テンプレートからデータを取得せずに、独自のコンテンツを含むファイルを作成しようとしました。以下は私のルビー関数です
require 'rexml/document'
include REXML
module Puppet::Parser::Functions
newfunction(:getCreateFileDetails, :type => :rvalue ) do |args|
fileDetails= []
doc = REXML::Document.new args[0]
doc.elements.each("node/create/file") {
|filedata|
fileName= filedata.elements["filename"].text
fileLocation= filedata.elements["location"].text
fileContent= filedata.elements["content"].text
fileDetails << {'filename' => fileName, 'filelocation'=> fileLocation, 'filecontent'=> fileContent }
}
return fileDetails
end
end
そして、次のように人形クラス内で使用します
define create_files() {
$fileName = $name["filename"]
$fileLocation = $name['filelocation']
$fileContent = $name['filecontent']
file { "${fileLocation}/${fileName}/":
ensure => present,
owner => 'root',
group => 'root',
content => "$fileContent",
}
}
$createFileDetails = getCreateFileDetails($allConfigurations['configurations'])
create_files { $createFileDetails: }
しかし、それは常に私にエラーを与えます
Could not retrieve catalog from remote server: Could not intern from pson: Could not convert from pson: Could not find relationship target
この問題の原因がわかりません。前のテンプレートが機能し、後のテンプレートが機能しない理由は何ですか。
これについてあなたの光をありがとう