fix: auto-import existing Hetzner servers into Terraform state in CI
This commit is contained in:
@@ -58,6 +58,41 @@ jobs:
|
||||
echo "${{ secrets.SSH_PUBLIC_KEY }}" > ~/.ssh/id_ed25519.pub
|
||||
chmod 644 ~/.ssh/id_ed25519.pub
|
||||
|
||||
- name: Install jq
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y jq
|
||||
|
||||
- name: Import existing servers into state (if missing)
|
||||
working-directory: terraform
|
||||
env:
|
||||
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
|
||||
run: |
|
||||
set -e
|
||||
ensure_import() {
|
||||
address="$1"
|
||||
name="$2"
|
||||
if terraform state show "$address" >/dev/null 2>&1; then
|
||||
echo "$address already in state"
|
||||
return
|
||||
fi
|
||||
id=$(curl -sS -H "Authorization: Bearer ${HCLOUD_TOKEN}" "https://api.hetzner.cloud/v1/servers?name=${name}" | jq -r '.servers[0].id // empty')
|
||||
if [ -n "$id" ]; then
|
||||
echo "Importing $address from server $name ($id)"
|
||||
terraform import "$address" "$id"
|
||||
else
|
||||
echo "No existing server found for $name; skipping import"
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_import 'hcloud_server.control_plane[0]' 'k8s-cluster-cp-1'
|
||||
ensure_import 'hcloud_server.control_plane[1]' 'k8s-cluster-cp-2'
|
||||
ensure_import 'hcloud_server.control_plane[2]' 'k8s-cluster-cp-3'
|
||||
ensure_import 'hcloud_server.workers[0]' 'k8s-cluster-worker-1'
|
||||
ensure_import 'hcloud_server.workers[1]' 'k8s-cluster-worker-2'
|
||||
ensure_import 'hcloud_server.workers[2]' 'k8s-cluster-worker-3'
|
||||
ensure_import 'hcloud_server.workers[3]' 'k8s-cluster-worker-4'
|
||||
|
||||
- name: Terraform Plan
|
||||
id: plan
|
||||
working-directory: terraform
|
||||
|
||||
Reference in New Issue
Block a user