如何在groovy中读取ansible yml配置文件

如何在groovy中读取ansible yml配置文件,groovy,yaml,ansible,jenkins-job-dsl,Groovy,Yaml,Ansible,Jenkins Job Dsl,我想在groovy中为jenkins编写一个DSL作业构建脚本,它会自动为我们的项目生成部署作业。每个项目中都有一个用于ansible角色和hosts参数的通用yml文件,我希望读取该文件并使用其内容来配置作业 问题是,到目前为止,我使用snakeyml读取yml文件,但它返回一个arraylist(更像一个映射),我无法有效地使用它 有人知道更好的解决办法吗 我的yml示例文件: --- - hosts: app.host roles: - role: app-db db_na

我想在groovy中为jenkins编写一个DSL作业构建脚本,它会自动为我们的项目生成部署作业。每个项目中都有一个用于ansible角色和hosts参数的通用yml文件,我希望读取该文件并使用其内容来配置作业

问题是,到目前为止,我使用snakeyml读取yml文件,但它返回一个arraylist(更像一个映射),我无法有效地使用它

有人知道更好的解决办法吗

我的yml示例文件:

---
- hosts: app.host
  roles:
  - role: app-db
    db_name: myproje_db
    db_port: "3306"
    migrate_module: "my-proje-api"
  - role: java-app
    app_name: "myproje-api"
    app_artifact_name: "my-proje-api"
    app_links:
    - myproje_db
我在主groovy脚本中从工作区读取文件:

InputStream  configFile = streamFileFromWorkspace('data/config.yml')
并在另一类的另一个函数中处理它:

public String configFileReader(def out, InputStream  configFile){
      def map
      Yaml configFileYml = new Yaml()
      map = configFileYml.load(configFile)
}

它以arraylist的形式返回映射类类型。

这是预期的输出,此配置以“-”开头,表示列表。它是“一个主机集合,每个主机都有一组角色”

如果要在每个主机上迭代,可以执行以下操作:

Yaml configFileYml = new Yaml()
configFileYml.load(configFile).each { host -> ... }
读取此配置时,它相当于以下结构(groovy格式):


这是预期的输出,此配置以“-”开头,表示列表。它是“一个主机集合,每个主机都有一组角色”

如果要在每个主机上迭代,可以执行以下操作:

Yaml configFileYml = new Yaml()
configFileYml.load(configFile).each { host -> ... }
读取此配置时,它相当于以下结构(groovy格式):


提前谢谢,我弄错了。您介意为这个yaml编写一个完整的示例代码吗?例如,我如何在java应用程序角色的应用程序链接中访问项目myproje\u db?因为示例代码对我不起作用,它使我在将指针转换为字符串时出错。如果我不知道属性的名称,该怎么办?就像我不知道有一个属性作为migrate_module,但我正在另一个配置文件中编写这个属性,或者我正在制作它的映射。我真的很感激你能给我提供任何关于这方面的线索。在阅读配置时,我添加了一个到groovy结构的映射。这只是一组地图。提前谢谢,我弄错了。您介意为这个yaml编写一个完整的示例代码吗?例如,我如何在java应用程序角色的应用程序链接中访问项目myproje\u db?因为示例代码对我不起作用,它使我在将指针转换为字符串时出错。如果我不知道属性的名称,该怎么办?就像我不知道有一个属性作为migrate_module,但我正在另一个配置文件中编写这个属性,或者我正在制作它的映射。我真的很感激你能给我提供任何关于这方面的线索。在阅读配置时,我添加了一个到groovy结构的映射。这只是一组地图。