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

If statement 是否可以在.yml文件ansible中添加条件语句?,if-statement,amazon-ec2,ansible,tagging,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 EC

我已经创建了一个角色和一个剧本,现在在我的剧本中,我正在定义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
现在您可以在这里看到实例_标记,我想在此实例_标记下添加一个条件:当bld_env为“test”时,添加另一个标记“Label=ec2start stop”
因此,只有当bld_env为“test”时,才必须添加此标签,因为我在这里处理的是多个env。

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


如果
bld_env!='测试“
,其他标签=
否则。

谢谢,但我可以在我的剧本中添加if条件,这是一个.yml文件?请在操作中提供更多上下文。现在检查描述。我现在更新了一个示例。不,您不能将任何类型的条件附加到变量定义,只能使表达式本身具有条件(如我所示)。
instance_tags: "Name={{ name }},bld_env={{ bld_env }},server={{ app_name }}-{{ bld_env }}{{ '' if bld_env != 'test' else ',other_tag='+other_tag_value }}"