我希望创建一个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