name: Deploy VM and App on: push: workflow_dispatch: inputs: tfvars_file: description: "Which tfvars file to use" required: true default: "single.tfvars.example" type: choice options: - single.tfvars.example - multi.tfvars.example jobs: terraform-ansible-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check files & Select tfvars shell: bash run: | #rm ansible/inventory/inventory.yml mkdir -p ansible/inventory cd terraform #rm vm_data.yml cp "${{ inputs.tfvars_file || 'single.tfvars.example' }}" terraform.tfvars - uses: hashicorp/setup-terraform@v4 - name: Check path run: pwd - name: Terraform init run: terraform init working-directory: "terraform" - name: Terraform apply run: terraform apply -auto-approve working-directory: "terraform" - name: Install Ansible shell: bash run: | sudo apt-get update sudo apt-get install -y ansible - name: Set up SSH run: | mkdir -p ~/.ssh printf '%s\n' "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa cat > ~/.ssh/config <<'EOF' Host * StrictHostKeyChecking no UserKnownHostsFile=/dev/null EOF - name: Ansible Inventory YML run: | ls echo "ansible folder" ls ansible echo "inventory folder" ls ansible/inventory #cat ansible/inventory/inventory.yml - name: Run playbook run: | ansible-playbook ansible/playbooks/docker_copy.yml -i ansible/inventory/inventory.yml -u cloud --private-key ~/.ssh/id_rsa - name: Configure Git run: | git config user.name "git-bot" git config user.email "got-bot@text.com" - name: Commit and push to Gitea run: | git remote set-url origin https://$GITEA_USERNAME:${{ secrets.GIT_BOT_TOKEN }}@tea.charcarservices.uk/CC/N8N.git git add terraform/vm_data.yml ansible/inventory/inventory.yml git diff --cached --quiet || git commit -m "chore: update terraform outputs" git push origin HEAD:main env: GITEA_USERNAME: git-bot # or your bot account