私はApache Nifiを使用しています。私はNifi APIに基づいてそれを自動化するためにtoolを書いています。このツールはルビーの宝石ですので、私はNifi manifestの中の人形タイプ/プロバイダとして使いたいと思っています。傀儡プロバイダの連鎖
タイプ(のlib /人形/タイプ/ nifi_pg.rb)は次のようになります。
Puppet::Type.newtype(:nifi_pg) do
@doc = "Manage Nifi process groups"
ensurable
newparam(:name) do
isnamevar
desc "Process group Name"
validate do |value|
end
end
newparam(:id) do
desc "Process group ID"
validate do |value|
end
end
end
プロバイダ(のlib /人形/プロバイダ/ nifi_pg/ruby.rb)次のようになります。
require 'nifi_sdk_ruby'
Puppet::Type.type(:nifi_pg).provide(:ruby) do
def create
nifi_client = Nifi.new()
nifi_client.set_debug(true)
nifi_client.create_process_group(:name => resource[:name])
end
def destroy
nifi_client = Nifi.new()
nifi_client.set_debug(true)
nifi_client.delete_process_group(resource[:id])
end
def exists?
false
end
end
それを使用することは簡単です:
nifi_pg {"test":
ensure => present
}
問題は、たとえば、この新しいプロセスグループにテンプレートをアップロードするために、作成したリソース(新しいプロセスグループIDのような)に関するいくつかの情報が必要です。パペットのリソースは何も返しません。
回避策はありますか?
私は答えがないと思います。
このexplanationは完全に説明しています。
ファクトと関数がコンパイル時に実行され、この問題を解決するにはどちらかまたは両方が必要なので、これは不可能です。しかし、この理論的なテンプレートの質問を、リソースとテンプレートの外観について編集できますか?その場合の回避策があるかもしれません。 –
あるいは、これはノード上で実行する必要があるものですか?そうでなければ、そこにも道があります。 –