- Seed postfix-accounts.cf before mailserver start to satisfy Dovecot's requirement for at least one account on first boot - Add failed_when: false to mail user/alias list tasks (files don't exist on first run) - Add forgejo_runner_version (was undefined); default to 12 - Create /srv/forgejo/data/gitea/conf before deploying app.ini - Decouple goaccess sync from restic: new enable_goaccess_sync flag with its own goaccess_sync_* variables - Move Docker installation to bootstrap exclusively; rename docker.yml to networks.yml (runs docker_network role only) - Add radicale_password to vault template and setup.sh - Fix goaccess sync tasks gated on enable_goaccess_sync - Add upstream bug comment to authorized_key deprecation warning - Update CLAUDE.md and README.md throughout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
47 lines
1.3 KiB
YAML
47 lines
1.3 KiB
YAML
---
|
|
- 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 }}"
|