Ansible 如何在不在变量中时检查字符串

Ansible 如何在不在变量中时检查字符串,ansible,Ansible,我正在尝试创建一个ec2卷,并在设备不存在时附加到ec2 这是我的密码: vars: region: us-east-1 ec2_instance_id: i-xxxxxxxx ec2_volume_size: 5 ec2_volume_name: chompx ec2_device_name: "/dev/sdf" tasks: - name: List volumes for an instance ec2

我正在尝试创建一个ec2卷,并在设备不存在时附加到ec2

这是我的密码:

vars:
      region: us-east-1
      ec2_instance_id: i-xxxxxxxx
      ec2_volume_size: 5
      ec2_volume_name: chompx
      ec2_device_name: "/dev/sdf"

tasks:
     - name: List volumes for an instance
       ec2_instance_facts:
         instance_ids: "{{ ec2_instance_id }}"
         region: "{{ region }}"
       register: ec2
     - debug: msg="{{ ec2.instances[0].block_device_mappings | list }}"

     - name: Create new volume using SSD storage
       ec2_vol:
         region: "{{ region }}"
         instance: "{{ ec2_instance_id }}"
         volume_size: "{{ ec2_volume_size }}"
         volume_type: gp2
         state: present
       when: "ec2_device_name not in ec2"
问题,,
即使ec2变量中存在/dev/sdf,创建卷代码仍将被执行。

寄存器:ec2
创建一个包含有关已运行任务的所有信息的对象。您试图仅对该命令的结果进行操作

您可能需要:

when: "ec2_device_name not in ec2.stdout_lines"  # ec2.stdout_lines should be a list
但我不能100%确定该命令的输出。通过添加调试语句进行检查:

- debug: var=ec2