0
我正嘗試調配實例並對其執行一些其他角色(如果具有相同名稱的實例未運行)。我使用的EC2模塊來提供和ec2_remote_facts
過濾特定EC2名稱:如果未使用Ansible運行,則提供EC2實例
- name: Gather Facts to check if a similar instance is running
ec2_remote_facts:
filters:
instance-state-name: running
"tag:Name" : "{{ tag_name }}"
register: ec2_exists
- name: Display Details
debug: var=ec2_exists
- name: Provison "{{ count }}" ec2 instances in "{{ region }}"
ec2:
key_name: "{{ key_name }}"
instance_type: "{{ instance_type }}"
image: "{{ hip_ami_id }}"
vpc_subnet_id: "{{ vpc_subnet_id }}"
group_id: "{{ group_id }}"
region: "{{ region }}"
instance_profile_name: "{{ instance_profile_name }}"
exact_count: "{{ count }}"
count_tag: "{{ count_tag }}"
instance_tags:
CostCentre: V_EFXSales
Name: "{{ tag_name }}"
delegate_to: 127.0.0.1
register: ec2
when: ec2_exists.results[0].state != 'running'
這種運作良好,但有時我得到以下時,我顯示ec2_exists變種的結果。
TASK [provision : Display Details] *********************************************
ok: [local] => {
"ec2_exists": {
"changed": false,
"instances": []
}
}
這通常是由於先前供應和使用相同的名稱彙報與空狀態終止的實例。 在這種情況下,即使沒有以相同名稱運行的ec2實例,提供步驟也會失敗。如何解決這兩個條件?