如何在盐堆状态和断言值为可变值的情况下查询外部 Web 服务



我希望创建一个saltstack状态并在其中使用来自外部API的数据。问题是 API 的 URL 中包含变量数据 (ID(。例如http://some.url.com/cmdbid/{host.id}.每个宿主的{host.id}都不同,存在于盐粒中。是否可以在 HTTP 状态下通过外部 API 查询数据saltstack并在 URL 中使用变量?

saltstack状态下,我尝试使用'http.query''cmd.run'.当在该状态下对host.id进行硬编码时,我会saltstate来完成它的工作,但我不能这样做,因为每个主机都有一个唯一的 ID。

{% set hostid = salt['grains.get'](id) %}
{% set url = salt['http.query']('http://some.service.com/id/{{ hostid }}') %}
...

下面是一个状态的工作示例。 请记住,您确实需要匹配状态代码或文本,因为 Salt 需要报告状态是否成功执行。

query_api:
http.query:
- name: http://example.com/restapi/{{ grains['id'] }}
- status: 200

最新更新