如何将CSV文件转换为Ansible INI格式清单文件?
将CSV转换为Ansible INI格式清单的方法
你的CSV文件内容如下:
id1,comp2 id1,comp4 id2,comp2 id2,comp3 id3,comp4
期望生成的Ansible INI格式清单:
[id1] comp2 comp4 [id2] comp2 comp3 [id3] comp4
以下是两种简单的实现方法:
方法1:使用Python脚本
创建一个Python脚本,读取CSV并按组生成INI文件:
import csv from collections import defaultdict # 读取CSV并按组分组主机 host_groups = defaultdict(list) with open('hosts.csv', 'r') as csv_file: csv_reader = csv.reader(csv_file) for group_name, host in csv_reader: host_groups[group_name].append(host) # 写入INI格式清单 with open('inventory.ini', 'w') as ini_file: for group, hosts in host_groups.items(): ini_file.write(f'[{group}]\n') for host in hosts: ini_file.write(f'{host}\n') ini_file.write('\n')
使用时将你的CSV文件命名为hosts.csv,运行脚本后会生成inventory.ini文件。
方法2:使用awk命令
直接用awk命令一行完成转换,无需编写脚本:
awk -F ',' '{groups[$1] = groups[$1] $2 "\n"} END {for (g in groups) printf "[%s]\n%s\n", g, groups[g]}' hosts.csv > inventory.ini
执行该命令后,转换后的内容会直接写入inventory.ini文件。
内容的提问来源于stack exchange,提问作者TimK
相关产品推荐
相关产品推荐

