Ansible-EC2标签替换为变量

时间:2018-08-25 04:44:59

标签: amazon-web-services ansible

我正试图根据其标签获取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变量。

1 个答案:

答案 0 :(得分:0)

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

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