You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
YAML
62 lines
1.8 KiB
YAML
---
|
|
- name: "Block to handle hetzner server state in case of problems"
|
|
block:
|
|
- name: "Increment the retry count"
|
|
set_fact:
|
|
retry_count: "{{ retry_count | default(0) | int + 1 }}"
|
|
|
|
- name: "Checking state for server <{{ inventory_hostname }}> is <{{ server_state }}>"
|
|
hetzner.hcloud.hcloud_server:
|
|
api_token: "{{ hetzner_authentication_ansible }}"
|
|
name: "{{ inventory_hostname }}"
|
|
server_type: "{{ hetzner_server_type }}"
|
|
image: "{{ hetzner_server_image }}"
|
|
ssh_keys: "{{ hetzner_ssh_keys }}"
|
|
labels: "{{ hetzner_server_labels }}"
|
|
location: nbg1
|
|
state: "{{ server_state }}"
|
|
delegate_to: 127.0.0.1
|
|
become: false
|
|
async: 300
|
|
poll: 5
|
|
register: hcloud_response
|
|
ignore_errors: yes
|
|
|
|
- name: "Block - DEBUG: hcloud_response"
|
|
debug:
|
|
msg: '{{ hcloud_response.msg }}'
|
|
when:
|
|
- hcloud_response.msg is defined
|
|
|
|
- name: "Ensure Server is STARTED when server_state=present"
|
|
hetzner.hcloud.hcloud_server:
|
|
api_token: "{{ hetzner_authentication_ansible }}"
|
|
name: "{{ inventory_hostname }}"
|
|
state: "started"
|
|
delegate_to: 127.0.0.1
|
|
become: false
|
|
async: 150
|
|
poll: 15
|
|
register: hcloud_response
|
|
when:
|
|
- server_state == 'present'
|
|
|
|
rescue:
|
|
- name: "RESCUE - fail: Maximum retries reached"
|
|
fail:
|
|
msg: "max_retries of {{ max_retries }} reached. Plz check."
|
|
when: retry_count | int == max_retries | int
|
|
|
|
- name: "RESCUE-fail DEBUG: hcloud_response"
|
|
debug:
|
|
msg: '{{ hcloud_response.msg }}'
|
|
|
|
- name: "RESCUE: wait_for {{ retry_delay }} sec. between retries"
|
|
wait_for:
|
|
timeout: "{{ retry_delay }}"
|
|
delegate_to: localhost
|
|
become: false
|
|
|
|
- name: "Include _set_server one time again => increase retry_count"
|
|
include_tasks: _set_server_state.yml
|