DEv-452: added recursive _set_server_state.yml to work around hetzners...

feature/DEV-380
Görz, Friedrich 4 years ago
parent 7a9bd9411e
commit 37ca359842

@ -24,12 +24,8 @@ roles:
version: 3.3.2
collections:
#- name: hetzner.hcloud
# version: 1.6.0
- name: hetzner.hcloud
src: https://github.com/fredFromJupiter/hetzner.hcloud.git
github_branch: "fredFromJupiter-patch-1"
scm: git
version: 1.6.0
- name: community.general
- name: community.docker
version: 2.1.1

@ -68,6 +68,8 @@
roles:
- role: hcloud
vars:
sma_digitalocean_ttl: 60 # set it to 60sec to reduce DNS caching problems with internal IT in case of debugging ansible problems ;)
#############################################################
# Provisioning server(s) for created inventory

@ -17,6 +17,9 @@ BACKUP_FILE_FOR_TRANSFER=$(find "${LOCAL_BACKUP_DIR}/${DATE}/" -name *.gz.gpg |
REMOTE_BACKUP_DIR="/home/${REMOTE_SYSTEM_USER}/backups/${STAGE}/${DATABASE_ENGINE}"
DEST_DIR="${REMOTE_BACKUP_DIR}/${DATE}/"
# avoid "REMOTE HOST IDENTIFICATION HAS CHANGED" - errors due to dynamic created server on restore process
ssh-keygen -f "/home/backuphamster/.ssh/known_hosts" -R ${DATABASE_SERVER_IP}
SSH_OPTIONS='-o StrictHostKeyChecking=no'
# needed due to unknown rsync option --mkpath in rsync version 3.1.3

@ -1,4 +1,12 @@
---
- name: "Block to handle hetzner server state in case of problems"
vars:
max_retries: "{{ max_retries | default(15) | int }}"
retry_delay: "{{ retry_delay | default(60) | int }}"
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:
@ -17,7 +25,12 @@
register: hcloud_response
ignore_errors: yes
# poweron server if server not running
- 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 }}"
@ -25,45 +38,27 @@
state: "started"
delegate_to: 127.0.0.1
become: false
async: 300
async: 150
poll: 15
register: hcloud_response
when:
- server_state == 'present'
- not hcloud_response.msg is defined
# just catching hetzner error and trying to avoid manual interaction
- name: "DEBUGGING Block for hetzner << message not found >> - error"
block:
- name: "DEBUG: hcloud_response"
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: "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
retries: 40
delay: 15
until: server_locked.rc == 0
register: server_locked
when:
- server_state == 'present'
- hcloud_response.msg == 'cannot perform operation because server is locked'
- 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
- name: "RESCUE: wait_for between retries"
wait_for:
timeout: "{{ retry_delay }}"
delegate_to: localhost
become: false
async: 300
poll: 15
when:
- server_state == 'present'
when:
- hcloud_response.msg is defined
- name: "Include _set_server one time again - retry_count: {{ retry_count }}"
include_tasks: _set_server_state.yml

@ -68,7 +68,7 @@
vars:
create_record:
type: 'A'
ttl: 1800
ttl: "{{ sma_digitalocean_ttl | default(1800) }}"
data: "{{ record_data }}"
name: "{{ record_name }}"
when:

@ -80,7 +80,7 @@
<bpmn2:startEvent id="Event_0wqvypp">
<bpmn2:outgoing>Flow_1a8vxf0</bpmn2:outgoing>
<bpmn2:timerEventDefinition id="TimerEventDefinition_1geoi5v">
<bpmn2:timeCycle xsi:type="bpmn2:tFormalExpression">0 0 0 * * ?</bpmn2:timeCycle>
<bpmn2:timeCycle xsi:type="bpmn2:tFormalExpression">0 0 * * * ?</bpmn2:timeCycle>
</bpmn2:timerEventDefinition>
</bpmn2:startEvent>
<bpmn2:sequenceFlow id="Flow_0zzip76" sourceRef="Gateway_1f7y3mt" targetRef="Activity_12c4494" />

Loading…
Cancel
Save