# Load previous state if [ -f "$STATE_DIR/.env" ]; then source "$STATE_DIR/.env" fi {% if volumes and volumes|length > 0 %} echo "" echo "=== Processing Volumes ===" {% for volume in volumes %} echo "" echo "Processing volume: {{ volume.name }} (state={{ volume.volume_state | default(value='new') }})" {# ── Step 1: Create if new ────────────��───────────────────────────────── #} {% if volume.volume_state is not defined or volume.volume_state == "new" %} if hcloud volume describe "{{ volume.name }}" &>/dev/null; then echo " Volume '{{ volume.name }}' already exists, skipping creation" else hcloud volume create \ --name "{{ volume.name }}" \ --size "{{ volume.size }}" \ --location "{{ volume.location | default(value='nbg1') }}" \ --format "{{ volume.format | default(value='ext4') }}" echo " ✓ Volume '{{ volume.name }}' created ({{ volume.size }}GB)" fi {% else %} echo " Volume '{{ volume.name }}' pre-existing — skipping creation (no format)" {% endif %} {# ── Step 2: Attach ───────────��───────────────────────────────────────── #} {% if server is defined and server.hostname is defined %} _vol_server=$(HJSON="$(hcloud volume describe "{{ volume.name }}" -o json 2>/dev/null)" \ nu -c '$env.HJSON | from json | get -o server.name | default ""' 2>/dev/null || echo "") if [ "$_vol_server" = "{{ server.hostname }}" ]; then echo " Volume '{{ volume.name }}' already attached to '{{ server.hostname }}'" elif [ -n "$_vol_server" ]; then echo " ⚠ Volume '{{ volume.name }}' attached to a different server: $_vol_server — skipping" else hcloud volume attach "{{ volume.name }}" --server "{{ server.hostname }}" echo " ✓ Volume '{{ volume.name }}' attached to '{{ server.hostname }}'" fi {% else %} echo " No server specified — volume created/exists but not attached" {% endif %} {# Format and mount are handled by the vol-prepare taskserv on the remote server #} {% endfor %} echo "" echo "=== Volume Deployment Complete ===" echo "VOLUME_IDS={{ volumes | map(attribute='name') | join(d=',') }}" >> "$STATE_DIR/.env" {% else %} echo "No volumes defined for this configuration." {% endif %}