链接傀儡供应商

时间:2017-04-26 05:20:01

标签: puppet apache-nifi

我正在使用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完美地解释了它。

1 个答案:

答案 0 :(得分:0)

可能有一种更简单的方法可以实现此目的,但Puppet允许您exec arbitrary commands,并且您可以将其与curl结合使用以点击NiFi REST API并检索所需的任何进程组ID 。将PG ID解压缩为Ruby变量,并在下一个命令中引用它。