我正在使用Apache Nifi而我正在编写tool以根据Nifi API自动执行此操作。这个工具是一个红宝石宝石,所以我想把它当作我Nifi manifest里面的木偶类型/提供者。
类型( lib / puppet / type / 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 / puppet / provider / 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),以便将其用于上传,例如,将模板上传到此新流程组。 Puppet资源不会返回任何内容。
有什么想法可以解决吗?
我认为答案不是。
这explanation完美地解释了它。
答案 0 :(得分:0)
可能有一种更简单的方法可以实现此目的,但Puppet允许您exec
arbitrary commands,并且您可以将其与curl
结合使用以点击NiFi REST API并检索所需的任何进程组ID 。将PG ID解压缩为Ruby变量,并在下一个命令中引用它。