diff --git a/.github/workflows/proxmox-update-vms.yml b/.github/workflows/proxmox-update-vms.yml new file mode 100644 index 0000000..c15d3ae --- /dev/null +++ b/.github/workflows/proxmox-update-vms.yml @@ -0,0 +1,67 @@ +name: "Update VMS" + +on: + push: + branches: + - main + - test + - dev + paths: + - 'proxmox/prx-prod-2/terraform/*.tf' + pull_request: + branches: + - main + - test + - dev + paths: + - 'proxmox/prx-prod-2/terraform/*.tf' + workflow_dispatch: + +defaults: + run: + working-directory: proxmox/prx-prod-2/terraform + +env: + TF_VAR_PRX_PROD_2_URL: ${{ secrets.PRX_PROD_2_URL }} + TF_VAR_PRX_PROD_2_USER: ${{ secrets.PRX_PROD_2_USER }} + TF_VAR_PRX_PROD_2_TOKEN: ${{ secrets.PRX_PROD_2_TOKEN }} + +jobs: + terraform: + runs-on: "self-hosted" + steps: + + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1 + with: + # terraform_version: 0.13.0: + cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} + + - name: Terraform Format + id: fmt + run: terraform fmt -check + + - name: Terraform Init + id: init + run: terraform init + + - name: Terraform Validate + id: validate + run: terraform validate -no-color + + - name: Terraform Plan + id: plan + if: github.event_name == 'pull_request' + run: terraform plan -no-color -input=false + continue-on-error: true + + - name: Terraform Plan Status + if: steps.plan.outcome == 'failure' + run: exit 1 + + - name: Terraform Apply + if: github.event_name == 'push' + run: terraform apply -auto-approve -input=false diff --git a/proxmox/prx-prod-2/terraform/_provider.tf b/proxmox/prx-prod-2/terraform/_provider.tf new file mode 100644 index 0000000..2d4b35f --- /dev/null +++ b/proxmox/prx-prod-2/terraform/_provider.tf @@ -0,0 +1,38 @@ +terraform { + + required_version = ">= 0.13.0" + + required_providers { + proxmox = { + source = "telmate/proxmox" + version = "=2.9.14" + } + } + + cloud { + organization = "clcreative" + workspaces { + name = "prx-prod-2" + } + } +} + +variable "PRX_PROD_2_URL" { + type = string +} + +variable "PRX_PROD_2_USER" { + type = string +} + +variable "PRX_PROD_2_TOKEN" { + type = string + sensitive = true +} + +provider "proxmox" { + pm_api_url = var.PRX_PROD_2_URL + pm_api_token_id = var.PRX_PROD_2_USER + pm_api_token_secret = var.PRX_PROD_2_TOKEN + pm_tls_insecure = false +} diff --git a/proxmox/prx-prod-2/terraform/server/server.tf b/proxmox/prx-prod-2/terraform/server/server.tf new file mode 100644 index 0000000..241a630 --- /dev/null +++ b/proxmox/prx-prod-2/terraform/server/server.tf @@ -0,0 +1,90 @@ +resource "proxmox_vm_qemu" "srv-demo-5" { + name = "srv-demo-5" + desc = "Demo Server 5" + agent = 1 + target_node = "prx-prod-1" + + tags = "test" + + onboot = true + automatic_reboot = true + qemu_os = "other" + + vmid = 307 + clone = "ubuntu-server-test-1" + full_clone = true + define_connection_info = true + + cores = 1 + sockets = 1 + cpu = "host" + memory = 2048 + + network { + bridge = "vmbr0" + model = "virtio" + } + + scsihw = "virtio-scsi-pci" + + disk { + storage = "local-ssd" + type = "virtio" + size = "40G" + } + + # Cloud Init Settings + os_type = "cloud-init" + ipconfig0 = "ip=10.20.3.7/16,gw=10.20.0.1" + nameserver = "10.20.0.1" + ciuser = "xcad" + cipassword = "testtest" + sshkeys = <