|
102 | 102 | - name: "DigitalOcean: Get fingerprint for SSH key '{{ ssh_key_name | default('') }}'" |
103 | 103 | ansible.builtin.set_fact: |
104 | 104 | ssh_key_fingerprint: "{{ [item.fingerprint] }}" |
105 | | - loop: "{{ ssh_keys.data | lower }}" |
106 | | - loop_control: # do not display the public key |
107 | | - label: "{{ item.name }}" |
| 105 | + loop: "{{ ssh_keys.data | default([]) }}" |
| 106 | + loop_control: |
| 107 | + label: "{{ item.name | default('unknown') }}" |
108 | 108 | when: |
109 | 109 | - ((ssh_key_name | length > 0 and ssh_key_name != (tmp_ssh_key_name | default(''))) or |
110 | | - (ssh_key_name == (tmp_ssh_key_name | default('')) and ssh_public_keys | default('') | length > 0)) |
111 | | - - item.name == ssh_key_name | lower |
| 110 | + (ssh_key_name == (tmp_ssh_key_name | default('')) and (ssh_public_keys | default('') | length > 0))) |
| 111 | + - (item.name | lower) == (ssh_key_name | lower) |
112 | 112 |
|
113 | 113 | # Stop, if the ssh key is not found |
114 | 114 | - name: "DigitalOcean: Fail if SSH key '{{ ssh_key_name | default('') }}' is not found" |
|
122 | 122 | # get the fingerprint of all ssh keys |
123 | 123 | - name: "DigitalOcean: Get fingerprint for all SSH keys" |
124 | 124 | ansible.builtin.set_fact: |
125 | | - ssh_key_fingerprint: "{{ ssh_key_fingerprint | default([]) + [item.fingerprint] }}" |
126 | | - loop: "{{ ssh_keys.data | lower }}" |
127 | | - loop_control: # do not display the public key |
128 | | - label: "{{ item.name }}" |
| 125 | + ssh_key_fingerprint: "{{ (ssh_key_fingerprint | default([])) + [item.fingerprint] }}" |
| 126 | + loop: "{{ ssh_keys.data | default([]) }}" |
| 127 | + loop_control: |
| 128 | + label: "{{ item.name | default('unknown') }}" |
129 | 129 | when: |
130 | | - - (ssh_key_name | length < 1 or ssh_key_name == (tmp_ssh_key_name | default(''))) |
131 | | - - (ssh_public_keys is not defined or ssh_public_keys | length < 1) |
| 130 | + - (ssh_key_name | length < 1) or (ssh_key_name == (tmp_ssh_key_name | default(''))) |
| 131 | + - (ssh_public_keys is not defined) or ((ssh_public_keys | length) < 1) |
132 | 132 | when: state == 'present' |
133 | 133 |
|
134 | 134 | # Create (if state is present) |
|
687 | 687 | | map(attribute='data') | map('default', []) | list | flatten |
688 | 688 | | selectattr('id','defined') | map(attribute='id') | list |
689 | 689 | }} |
690 | | - loop: "{{ droplet_result.results | selectattr('data', 'defined') }}" |
| 690 | + loop: "{{ droplet_result.results | selectattr('data','defined') | list }}" |
691 | 691 | loop_control: |
692 | 692 | label: >- |
693 | 693 | public_ip: {{ (item.data.droplet.networks.v4 | selectattr('type', 'equalto', 'public')).0.ip_address | default('') }}, |
|
697 | 697 | ansible.builtin.import_tasks: inventory.yml |
698 | 698 | when: |
699 | 699 | - droplet_result.results is defined |
700 | | - - droplet_result.results | selectattr('data', 'defined') |
| 700 | + - (droplet_result.results | selectattr('data','defined') | list | length) > 0 |
701 | 701 |
|
702 | 702 | # Delete the temporary SSH key from the cloud after creating the droplet |
703 | 703 | - name: "DigitalOcean: Remove temporary SSH key '{{ ssh_key_name | default('') }}' from cloud" |
|
757 | 757 | - sync |
758 | 758 | loop_control: |
759 | 759 | label: "{{ patroni_cluster_name }}-{{ item }}" |
| 760 | + register: do_lb_del_result |
| 761 | + failed_when: do_lb_del_result is failed and ('not found' not in (do_lb_del_result.msg | default('') | lower)) |
760 | 762 | when: cloud_load_balancer | bool and |
761 | 763 | (item == 'primary' or |
762 | 764 | (item == 'replica' and server_count | int > 1) or |
|
0 commit comments