Ansible - 读取库存文件

Ansible - reading inventory file

我有库存文件

[hosttype1]
Server
Server2
[hosttype2]
server3
server4

我正在尝试将其作为一个整体读入 ansible。该文件以正常方式用于定义代码部署的主机和类型,但我还需要阅读完整内容以添加到配置文件中。

库存文件因部署环境不同而不同,因此没有固定位置。

是否可以读取文件并创建一个变量,然后我可以循环使用该变量并使用主机类型和比较器?

最简单的方法是将其用作库存。例如

shell> cat hosts
[hosttype1]
Server
Server2
[hosttype2]
server3
server
shell> cat pb.yml
- hosts: localhost
  vars:
    my_groups: "{{ groups|difference(['all', 'ungrouped']) }}"
    my_hosts: "{{ my_groups|map('extract', groups)|list }}"
    my_inventory: "{{ dict(my_groups|zip(my_hosts)) }}"
  tasks:
    - debug:
        var: my_inventory

给予

shell> ansible-playbook -i hosts pb.yml 

PLAY [localhost] ******************************************************

TASK [debug] **********************************************************
ok: [localhost] => 
  my_inventory:
    hosttype1:
    - Server
    - Server2
    hosttype2:
    - server3
    - server