name: Deploy VM and App on: 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: | pwd mkdir -p ansible/inventory cd terraform cp ${{ inputs.tfvars_file }} terraform.tfvars ls - 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: 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 - name: Install Ansible shell: bash run: | sudo apt-get update sudo apt-get install -y ansible - name: Set up SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa echo -e "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile=/dev/null\n" > ~/.ssh/config - name: Setup Ansible Directories run: | pwd cat ansible/inventory/inventory.yml ls -r - name: Run playbook run: | ansible-playbook ansible/playbooks/docker_copy.yml -i ansible/inventory/inventory.yml -u cloud --private-key ~/.ssh/id_rsa