Ansible 如何在不在变量中时检查字符串
我正在尝试创建一个ec2卷,并在设备不存在时附加到ec2 这是我的密码: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
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