如何将Groovy列表转换为Ansible Inventory YAML格式?
解决方案:Groovy列表转Ansible Inventory YAML格式
方法1:手动字符串拼接(简单场景)
如果仅处理基础主机列表,直接通过字符串拼接即可快速生成目标格式:
def array = ['hostname1','hostname2','hostname3'] // 初始化YAML头部 def yamlContent = "---\nall:\n hosts:\n" // 遍历列表追加主机条目 array.each { host -> yamlContent += " ${host}:\n" } // 输出最终内容 println yamlContent
运行后会直接输出符合要求的Ansible Inventory YAML文本。
方法2:使用SnakeYAML库生成(可靠方案)
若后续需要扩展Inventory结构(比如添加主机变量、子组等),推荐用SnakeYAML库生成标准YAML,避免手动拼接可能出现的格式错误。
先确保项目引入依赖(以Gradle为例,添加到build.gradle):
dependencies { implementation 'org.yaml:snakeyaml:2.2' }
然后编写Groovy代码:
import org.yaml.snakeyaml.Yaml def array = ['hostname1','hostname2','hostname3'] // 构建对应Inventory的Map结构 def inventoryMap = [ all: [ hosts: array.collectEntries { [(it): [:]] } ] ] // 生成并输出YAML内容 def yaml = new Yaml() println yaml.dump(inventoryMap)
该方案会自动生成标准格式的YAML,dump方法默认会添加---头部,主机条目也会按规范缩进排列。
内容的提问来源于stack exchange,提问作者Eran Mor
相关产品推荐
相关产品推荐

