From 28ebbd929bbe90d39b26ce49b340071820e227d8 Mon Sep 17 00:00:00 2001 From: Niklas Yann Wettengel Date: Sun, 12 Mar 2017 17:55:26 +0100 Subject: [PATCH] added boot-rescue role --- bootstrap_arch.yml | 9 +++++ new_inventory.ini.sample | 7 ++++ roles/boot-rescue/tasks/main.yml | 58 ++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 bootstrap_arch.yml create mode 100644 new_inventory.ini.sample create mode 100644 roles/boot-rescue/tasks/main.yml diff --git a/bootstrap_arch.yml b/bootstrap_arch.yml new file mode 100644 index 0000000..28e93eb --- /dev/null +++ b/bootstrap_arch.yml @@ -0,0 +1,9 @@ +--- +- name: reboot vserver into rescue image + hosts: new_fastds + connection: local + gather_facts: no + vars: + ansible_python_interpreter: /usr/bin/python + roles: + - role: boot-rescue diff --git a/new_inventory.ini.sample b/new_inventory.ini.sample new file mode 100644 index 0000000..0e1e3ea --- /dev/null +++ b/new_inventory.ini.sample @@ -0,0 +1,7 @@ +[new_fastds] +123.123.123.123 arch_hostname=fastd1 + +[all:vars] +hetzner_webservice_username= +hetzner_webservice_password= +rescue_authorized_key= diff --git a/roles/boot-rescue/tasks/main.yml b/roles/boot-rescue/tasks/main.yml new file mode 100644 index 0000000..ad7ff9a --- /dev/null +++ b/roles/boot-rescue/tasks/main.yml @@ -0,0 +1,58 @@ +--- +- name: check rescue mode + uri: + url: https://robot-ws.your-server.de/boot/{{ inventory_hostname }}/rescue + method: GET + user: "{{ hetzner_webservice_username }}" + password: "{{ hetzner_webservice_password }}" + force_basic_auth: yes + status_code: 200 + register: rescue + +- name: activate rescue mode + when: rescue.json.rescue.active == false + uri: + url: https://robot-ws.your-server.de/boot/{{ inventory_hostname }}/rescue + method: POST + user: "{{ hetzner_webservice_username }}" + password: "{{ hetzner_webservice_password }}" + force_basic_auth: yes + body: "os=linux&arch=64&authorized_key={{ rescue_authorized_key }}" + status_code: 200 + HEADER_Content-Type: "application/x-www-form-urlencoded" + register: activated + +#- debug: var=activated + +- name: Execute hardware reset + uri: + url: https://robot-ws.your-server.de/reset/{{ inventory_hostname }} + method: POST + user: "{{ hetzner_webservice_username }}" + password: "{{ hetzner_webservice_password }}" + force_basic_auth: yes + body: "type=hw" + status_code: 200 + HEADER_Content-Type: "application/x-www-form-urlencoded" + register: reset + +- name: remove server from local known_hosts file + local_action: shell ssh-keygen -R {{ inventory_hostname }} + ignore_errors: true + +- name: waiting for server to go down + local_action: + module: wait_for + host: "{{ inventory_hostname }}" + port: 22 + delay: 1 + timeout: 120 + state: stopped + +- name: waiting for server to come back + local_action: + module: wait_for + host: "{{ inventory_hostname }}" + port: 22 + delay: 1 + timeout: 120