在ansible任务中包含外部yaml文件

时间:2016-10-04 12:16:45

标签: ansible

我在ansible中创建了一个ecs_taskdefinition,但是我想在sperate文件中创建任务定义。我能以某种方式做这样的事情:

ecs_taskdefintion:
  containers: {{ load_external_yaml containers.yaml }}
  volumes: {{ load_external_yaml_volumes.yaml }}

所以我想从外部文件加载yaml数据。

2 个答案:

答案 0 :(得分:7)

您可以尝试将file查找和from_yaml过滤器组合在一起:

{{ lookup('file','containers.yaml') | from_yaml }}

请记住,查找是本地的,因此containers.yaml应位于ansible控制主机上。

答案 1 :(得分:1)

由于您的文件为YAML,因此您可以使用include_vars 来自https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_vars_module.html

- name: Setup vars
  tags: ["always"]
  include_vars:
    file: "./vars/tintin.yaml"
    name: tintin

在任何地方都将tintin用作普通变量!