如何从包含 YAML 的字符串中读取 Ansible 变量?
How to read an Ansible variable from a string containing YAML?
我的任务是 运行 调用 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 变量。
但是我怎样才能将它解释为一个变量呢?
我以后如何将该变量放回字符串中?
But how can I have it interpreted as a variable?
set_fact:
docker_compose: '{{ template_detail | json_query(dc_query) | from_yaml }}'
And how can I later put back that variable in a string?
{{ docker_compose | to_yaml }}
我的任务是 运行 调用 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 变量。
但是我怎样才能将它解释为一个变量呢?
我以后如何将该变量放回字符串中?
But how can I have it interpreted as a variable?
set_fact:
docker_compose: '{{ template_detail | json_query(dc_query) | from_yaml }}'
And how can I later put back that variable in a string?
{{ docker_compose | to_yaml }}