--- - name: Register SSH key with Hetzner hetzner.hcloud.ssh_key: name: "{{ admin_user }}" public_key: "{{ admin_ssh_key }}" api_token: "{{ hcloud_token }}" state: present - name: Create server hetzner.hcloud.server: name: "{{ server_name }}" server_type: "{{ hcloud_server_type }}" image: "{{ hcloud_image }}" location: "{{ hcloud_location }}" ssh_keys: - "{{ admin_user }}" api_token: "{{ hcloud_token }}" state: present register: server_result - name: Set server IP fact ansible.builtin.set_fact: server_ip: "{{ server_result.hcloud_server.ipv4_address }}" - name: Wait for SSH to become available ansible.builtin.wait_for: host: "{{ server_ip }}" port: 22 timeout: 300 - name: Update inventory with new IP ansible.builtin.lineinfile: path: "{{ lookup('env', 'LINDERHOF_DIR') }}/hosts.yml" regexp: '^\s+ansible_host:' line: " ansible_host: {{ server_ip }}" delegate_to: localhost - name: Update config with new IP ansible.builtin.lineinfile: path: "{{ lookup('env', 'LINDERHOF_DIR') }}/group_vars/all/config.yml" regexp: '^server_ip:' line: "server_ip: {{ server_ip }}" delegate_to: localhost - name: Print server IP ansible.builtin.debug: msg: "Server '{{ server_name }}' provisioned at {{ server_ip }}"