--- ### tags: - name: Get all Firewalls from Hetzner uri: url: "https://api.hetzner.cloud/v1/firewalls" headers: accept: application/json authorization: Bearer {{ hetzner_authentication_token }} return_content: yes register: hetzner_firewalls_response delegate_to: 127.0.0.1 - name: Save firewall entries as variable (fact) set_fact: hetzner_firewalls_response_json: "{{ hetzner_firewalls_response.json }}" - name: Parse firewall entry for default set_fact: firewall_record: "{{ hetzner_firewalls_response_json.firewalls | json_query(jmesquery) | first | default({'name': '-', 'id': '-'}) }}" vars: jmesquery: '[*].{id: id, name: name}' - name: Print firewall entry for default debug: msg: "{{ firewall_record }}" - name: Save firewall entry default uri: method: POST url: "https://api.hetzner.cloud/v1/firewalls" body_format: json body: "{{ lookup('template','firewall-default.json.j2') }}" headers: accept: application/json authorization: Bearer {{ hetzner_authentication_token }} return_content: yes status_code: 201 when: firewall_record.id == '-' delegate_to: 127.0.0.1 - name: Update firewall entry default uri: method: PUT url: "https://api.hetzner.cloud/v1/firewalls/{{ firewall_record.id }}" body_format: json body: "{{ lookup('template','firewall-default.json.j2') }}" headers: accept: application/json authorization: Bearer {{ hetzner_authentication_token }} return_content: yes status_code: 200 when: firewall_record.id != '-' delegate_to: 127.0.0.1 - name: Create new server {{ inventory_hostname }} hetzner.hcloud.hcloud_server: api_token: "{{ hetzner_authentication_token }}" name: "{{ inventory_hostname }}" server_type: "{{ hetzner_server_type }}" image: "{{ hetzner_server_image }}" ssh_keys: "{{ hetzner_ssh_keys }}" location: nbg1 state: present delegate_to: 127.0.0.1 - name: Gather current server infos hcloud_server_info: api_token: "{{ hetzner_authentication_token }}" register: hetzner_server_infos delegate_to: 127.0.0.1 - name: Save current server infos as variable (fact) set_fact: hetzner_server_infos_json: "{{ hetzner_server_infos.hcloud_server_info }}" delegate_to: 127.0.0.1 - name: Read ip for {{ inventory_hostname }} set_fact: stage_server_ip: "{{ item.ipv4_address }}" when: item.name == inventory_hostname with_items: "{{ hetzner_server_infos_json }}" - name: Print the gathered infos debug: var: stage_server_ip delegate_to: 127.0.0.1 - name: "Setup DNS configuration for {{ inventory_hostname }}" include_role: name: _digitalocean tasks_from: domain vars: record_data: "{{ stage_server_ip }}" record_name: "{{ inventory_hostname }}"