我正在尝试创建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,创建卷代码仍在执行。
答案 0 :(得分:0)
register: ec2
创建一个包含有关已运行任务的所有信息的对象。您正在尝试仅对该命令的结果进行操作。
您可能需要:
when: "ec2_device_name not in ec2.stdout_lines" # ec2.stdout_lines should be a list
但是我不确定该命令的输出是否100%。通过添加调试语句进行检查:
- debug: var=ec2