Files
les-06/.gitea/workflows/provision_configure.yaml
2025-06-11 19:26:18 +00:00

106 lines
2.9 KiB
YAML

name: Provision & Configure
on:
push:
branches:
- main
paths:
- terraform/**/*.tf
- terraform/**/*.tfvars
- terraform/**/*.tftpl
workflow_dispatch:
jobs:
terraform:
name: Terraform Apply
runs-on: skylab
defaults:
run:
working-directory: ./terraform
env:
TF_VAR_azure_subscriptionid: ${{ secrets.AZURE_SUBSCRIPTIONID }}
TF_VAR_azure_resourcegroup: ${{ secrets.AZURE_RESOURCEGROUP }}
TF_VAR_esxi_hostname: ${{ secrets.ESXI_HOSTNAME }}
TF_VAR_esxi_username: ${{ secrets.ESXI_USERNAME }}
TF_VAR_esxi_password: ${{ secrets.ESXI_PASSWORD }}
TF_VAR_skylab_ssh_public_key: ${{ secrets.SKYLAB_SSH_PUBLIC_KEY }}
TF_VAR_skylab_ssh_private_key: ${{ secrets.SKYLAB_SSH_PRIVATE_KEY }}
TF_VAR_azure_ssh_public_key: ${{ secrets.AZURE_SSH_PUBLIC_KEY }}
TF_VAR_azure_ssh_private_key: ${{ secrets.AZURE_SSH_PRIVATE_KEY }}
steps:
- name: Checkout code
uses: actions/checkout@v4
# Terraform
- name: Set up Terraform
uses: hashicorp/setup-terraform@v3
- name: Install ovftool
run: |
wget https://github.com/rgl/ovftool-binaries/raw/main/archive/VMware-ovftool-4.6.3-24031167-lin.x86_64.zip
unzip VMware-ovftool-4.6.3-24031167-lin.x86_64.zip
mv ovftool vmware-ovftool
mv vmware-ovftool /usr/bin/
chmod +x /usr/bin/vmware-ovftool/ovftool*
ln -s /usr/bin/vmware-ovftool/ovftool /usr/bin/ovftool
- name: Terraform Init
run: terraform init
- name: Terraform Format
run: terraform fmt -check
- name: Terraform Validate
run: terraform validate
- name: Terraform Plan
run: terraform plan
- name: Terraform Apply
run: terraform apply -auto-approve
- name: Upload inventory as artifact
uses: christopherhx/gitea-upload-artifact@v4
with:
name: ansible_inventory
path: ansible/inventory.ini
ansible:
name: Ansible Apply
needs: terraform
runs-on: skylab
defaults:
run:
working-directory: ./ansible
steps:
- name: Download artifact
uses: christopherhx/gitea-download-artifact@v4
with:
name: ansible_inventory
- name: Set up SSH
run: |
# mkdir -p ~/.ssh
# printf "%s" "${{ secrets.AZURE_SSH_PRIVATE_KEY }}" > ~/.ssh/azure
# chmod 600 ~/.ssh/azure
mkdir -p ~/.ssh
printf "%s" "${{ secrets.SKYLAB_SSH_PRIVATE_KEY_BASE64 }}" | base64 -d > ~/.ssh/skylab
chmod 600 ~/.ssh/skylab
- name: Install Ansible
shell: bash
run: |
apt update -y
apt install python3-pip -y
python3 -m pip install ansible
- name: Run Ansible Playbook
env:
ANSIBLE_USER: ${{ secrets.ANSIBLE_USER }}
ANSIBLE_HOST_KEY_CHECKING: False
run: |
ansible-playbook -i inventory.ini main.yml