我可以在 playbook 中使用来自 Web 服务的清单数据吗?

Can I use inventory data from a web service within a playbook?

我目前 运行 我的剧本来自

# ansible-playbook -i myscript.py myplaybook.yaml

其中 myscript.py 生成相关主机信息(根据 documentation)并且 myplaybook.py

开头
---
- hosts: all
(...)

这很好用。

我现在想

这在 ansible 中是可能的吗? 我的印象是在剧本开始时需要库存(=它不能在剧本中生成)

您可以使用 add_host 模块动态创建库存。
从类似这样的东西开始,然后根据您的需要对其进行修改:

---
- hosts: localhost
  tasks:
    - add_host: name={{item}} group=hosts_from_webservice
      with_url: https://mywebservice/host_list_as_simple_strings
      # in this example web service should return one ip/hostname by line:
      # 10.1.1.1
      # 10.1.1.2
      # 10.1.1.3

    - add_host: name={{(item | from_json).host}} group=hosts_from_webservice description={{(item | from_json).desc}}
      with_url: https://mywebservice/host_list_as_json_strings
      # in this example web service should return JSON object on every line:
      # {"host":"10.1.1.1","desc":"hello"}
      # {"host":"10.1.1.2","desc":"world"}
      # {"host":"10.1.1.3","desc":"test"}

- hosts: hosts_from_webservice
  tasks:
    - debug: msg="I'm a host from webservice"