是否可以在.yml文件中添加条件语句ansible?

时间:2017-06-13 09:53:27

标签: if-statement amazon-ec2 ansible tagging

我创建了一个角色和一个剧本,现在在我的剧本中,我正在定义Ec2标签,例如:

instance_tags: "Name={{ name }},bld_env={{ bld_env }},server={{ app_name }}-{{ bld_env }}"

我还必须为bld_env做一个条件,假设bld_env是“test”,添加更多标签。 在条件声明的情况下,你可以帮我标记吗?

例如: 我的

tagging.yml

文件:

- name: Launch EC2 host
  hosts: localhost
  connection: local
  gather_facts: False
  vars:
    bld_env: "{{ bld_env }}"
    count: 1
    instance_type: "{{ size }}"
    image: "{{ image }}"
    ansible_ssh_user: "ec2-user"
    region: "{{ region }}"
    pem_path: "~/.ssh"
    group_name: "ec2hosts"
    vpc_subnet_id: "{{ lookup('ini', 'vpc_subnet section=vpc file=./{{ bld_env }}.ini') }}"
    assign_public_ip: "{{ ip }}"
    keypair: "{{ key }}"
    access_key: "{{ access }}"
    secret_key: "{{ secret }}"
    instance_tags: "Name={{ name }},bld_env={{ bld_env }},server={{ app_name }}-{{ bld_env }}"
    security_group: "[{{ group }}]"

  roles:
   - ec2

现在你可以在这里看到instance_tags,我想在这个instance_tags下添加一个条件:当bld_env是“test”时添加另一个标签“Label = ec2start-stop” 因此,只有当bld_env为“test”时才需要添加此Label,因为我在这里处理多个env ..

1 个答案:

答案 0 :(得分:0)

例如,你可以在表达式中使用任何Jinja2条件(参见行尾):

instance_tags: "Name={{ name }},bld_env={{ bld_env }},server={{ app_name }}-{{ bld_env }}{{ '' if bld_env != 'test' else ',other_tag='+other_tag_value }}"

如果bld_env != 'test',other_tag=<other_tag_value>,则会追加空行。