name: OpenTofu Scaleway IAC Apply

on:
  schedule:
    - cron: "0 1 * * 0"
  push:
    branches:
      - main
    paths:
      - "terraform/scaleway-iac/**"
jobs:
  iac-apply:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup environment
        uses: ./.github/actions/setup-env

      - name: Setup Ansible environment
        uses: ./.github/actions/setup-ansible-env
        with:
          project-id: ${{ secrets.BW_PROJECT_ID }}
          organization-id: ${{ secrets.BW_ORGANIZATION_ID }}
          access-token: ${{ secrets.BW_ACCESS_TOKEN }}
          ansible-user: ${{ secrets.ANSIBLE_USER }}
          host-group: iac

      - name: Get Host Info
        uses: ./.github/actions/get-host-info
        id: get-host-info
        with:
          project-id: ${{ secrets.BW_PROJECT_ID }}
          organization-id: ${{ secrets.BW_ORGANIZATION_ID }}
          access-token: ${{ secrets.BW_ACCESS_TOKEN }}
          ansible-user: ${{ secrets.ANSIBLE_USER }}
          target-host: iac

      - name: Setup OpenTofu environment
        uses: ./.github/actions/setup-opentofu-env

      - name: OpenTofu Init and Apply
        env:
          BW_PROJECT_ID: ${{ secrets.BW_PROJECT_ID }}
          BW_ORGANIZATION_ID: ${{ secrets.BW_ORGANIZATION_ID }}
          BW_ACCESS_TOKEN: ${{ secrets.BW_ACCESS_TOKEN }}
          SYSTEM_ID: ${{ steps.get-host-info.outputs.system-id }}
        run: |
          cd terraform/scaleway-iac
          export TF_VAR_system_id=$SYSTEM_ID
          sectool -f ../../sectool.json exec tofu init
          sectool -f ../../sectool.json exec tofu apply --auto-approve
