【问题标题】:How to read an Ansible variable from a string containing YAML?如何从包含 YAML 的字符串中读取 Ansible 变量?
【发布时间】:2017-10-18 10:38:02
【问题描述】:

我有一个任务,它运行uri 调用来获取一个包含 YAML 片段的 JSON 文件(它是从 Rancher API 获得的)。我可以使用以下任务提取 YAML 片段

- name: generate_stack_call_body.yml read docker compose from catalog
  set_fact:
    docker_compose: '{{ template_detail|json_query(dc_query) }}'

当我运行 ansible 调试策略时,它表明我的 docker_compose 变量包含

(debug) p vars['docker_compose']
u"consul:\n  labels:\n    io.rancher.container.hostname_override: container_name\n    io.rancher.container.pull_image: always\n    io.rancher.container.hostname_override: container_name\n    io.rancher.scheduler.global: 'true'\n  stdin_open: true\n  image: registry.mycompany.com/my-project/consul-rancher:0.9.0\n  volumes:\n  - /data/consul:/consul/data\nload-balancer:\n  ports:\n  - 8500:8500\n  labels:\n    io.rancher.container.hostname_override: container_name\n    io.rancher.scheduler.global: 'true'\n  stdin_open: true\n  image: rancher/load-balancer-service\n  links:\n
  - consul:consul\n"

对我来说,这看起来像是有效的 YAML。

因此,我想应该可以将该值解释为有效的 Ansible 变量。

但是我怎样才能把它解释为一个变量呢?

我以后如何将该变量放回字符串中?

【问题讨论】:

    标签: ansible yaml ansible-template


    【解决方案1】:

    但是我怎样才能将它解释为一个变量呢?

    set_fact:
      docker_compose: '{{ template_detail | json_query(dc_query) | from_yaml }}'
    

    我以后如何将该变量放回字符串中?

    {{ docker_compose | to_yaml }}
    

    Reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      相关资源
      最近更新 更多