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
我有库存文件
[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