首页 > 解决方案 > Ansible - ec2 标签替换为变量

问题描述

我正在尝试根据其标签获取 ec2 的实例 ID。

 - name: get instance_id of the last created ec2
    ec2_instance_facts:
      filters:
        "tag:Name": Example
    register: ec2_facts_result

在我的过滤器上,我有一个例子,但它是硬编码的。我想用变量替换“名称”和“示例”。有人可以帮我吗?

我已经声明了这些变量

tag_name_1 :“环境”
tag_value_1:“分期”

尝试使用此语法运行过滤器

- name: get instance_id of the last created ec2
  ec2_instance_facts:
  filters:
    "tag:{{ tag_name_1 }}": "{{ tag_value_1 }}"
  register: ec2_facts_result

但这是我得到的结果。

"tag: {{ tag_name_1 }}": "staging"

它能够捕获 tag_value_1 的值,但不能捕获 tag_name_1 变量。

标签: amazon-web-servicesansible

解决方案


您需要提供一个 Jinja2 模板,将字典呈现为filters参数的值,而不是在 YAML 中指定字典:

filters: "{{ {'tag:' + tag_name_1: tag_value_1} }}"

推荐阅读