是否可以将自定义运行器输出存储到 SALTSTACK 中的支柱数据?

是否可以将自定义运行器输出存储到 SALTSTACK 中的支柱数据?

我有一个 Salt 公式在我的 minions 上运行,它运行一个自定义模块,该模块会访问网络以获取最新版本的 chrome 的一些 JSON 数据。它工作得很好,但我认为最好将它作为 master 上的运行器运行,并将其存储为 pillar 数据以供 minions 访问。这样,我就不需要数百个 minions 不必要地查询网络,而只需要在 master 上查询一次。

我在网上找不到任何有用的信息。这可能吗?

def latest():

    import json
    import urllib.request

    url = 'https://omahaproxy.appspot.com/all.json'
    resp = urllib.request.urlopen(url)

    data = json.loads(resp.read())

    for each in data:
        if each.get("os") == "win":
            versions = each.get("versions")
            for version in versions:
                if version.get("channel") == "stable":
                    latest = (version.get("current_version"))
    return latest

我可以在 /etc/salt/_modules 中按原样运行它,也可以在主服务器上的 /etc/salt/_runners 中作为运行器运行它。

答案1

显而易见的方法是让它成为定制支柱但是,这仅仅意味着 master 为每个 minion 运行一次,而不是 minion 自己运行。

为了让你的运行器将结果放在所有 minions 都可以获取的地方,你可以这样做,例如,假设默认的 pillar root 配置:

__salt__["file.write"]("/srv/pillar/omahaproxy.sls", 
                       "omahaproxy.latest: " + latest)

相关内容