diff --git a/.gitea/workflows/provision_configure.yaml b/.gitea/workflows/provision_configure.yaml new file mode 100644 index 0000000..888503a --- /dev/null +++ b/.gitea/workflows/provision_configure.yaml @@ -0,0 +1,81 @@ +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_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 + + # Ansible + # - name: Set up SSH + # run: | + # echo "${{ secrets.AZURE_SSH_PRIVATE_KEY }}" > ~/.ssh/azure + # chmod 600 ~/.ssh/azure + # echo "${{ secrets.SKYLAB_SSH_PRIVATE_KEY }}" > ~/.ssh/skylab + # chmod 600 ~/.ssh/skylab + + # - name: Install Ansible + # shell: bash + # run: | + # sudo apt update + # sudo apt install -y ansible + + # - name: Run Ansible Playbook + # env: + # ANSIBLE_USER: ${{ secrets.ANSIBLE_USER }} + # ANSIBLE_HOST_KEY_CHECKING: False + # run: | + # ansible-playbook -i ../ansible/inventory.ini ../ansible/main.yml