#!/usr/bin/env bash # One-command deploy: pulumi up → ansible provision set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" echo "=== Step 1: Pulumi — creating Azure infrastructure ===" cd "$PROJECT_DIR" pulumi up --yes --stack dev # grab outputs VM_IP=$(pulumi stack output vm_public_ip --stack dev) ADMIN_USER=$(pulumi stack output admin_username --stack dev) echo "" echo "VM is up at: $VM_IP" echo "User: $ADMIN_USER" echo "" echo "=== Step 2: Generating Ansible inventory ===" if [ ! -f "$PROJECT_DIR/ansible/inventory.yml" ]; then cat > "$PROJECT_DIR/ansible/inventory.yml" </dev/null; then echo "SSH is ready!" break fi echo " waiting for SSH... (attempt $i/$MAX_RETRIES)" sleep 10 done echo "" echo "=== Step 4: Ansible — configuring the VPS ===" cd "$PROJECT_DIR/ansible" ansible-playbook playbook.yml echo "" echo "=== Done! ===" echo "SSH in: ssh ${ADMIN_USER}@${VM_IP}" echo "Next: clone your repos and docker compose up"