Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/plex.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ permissions:
on:
push:
paths:
- 'terraform/deployments/plex/**'
- '.github/workflows/plex.yaml'
- '.github/workflows/terraform-ci.yaml'
- '.github/workflows/terraform-cd.yaml'
- "terraform/deployments/plex/**"
- ".github/workflows/plex.yaml"
- ".github/workflows/terraform-ci.yaml"
- ".github/workflows/terraform-cd.yaml"
branches:
- main
pull_request:
paths:
- 'terraform/deployments/plex/**'
- '.github/workflows/plex.yaml'
- '.github/workflows/terraform-ci.yaml'
- '.github/workflows/terraform-cd.yaml'
- "terraform/deployments/plex/**"
- ".github/workflows/plex.yaml"
- ".github/workflows/terraform-ci.yaml"
- ".github/workflows/terraform-cd.yaml"

env:
PROXMOX_VE_API_TOKEN: ${{ secrets.PROXMOX_VE_API_TOKEN }}
Expand All @@ -27,7 +27,7 @@ jobs:
plex-ci:
strategy:
matrix:
environment: ["plex-dev"]
environment: ["plex-dev", "plex-prd"]
uses: ./.github/workflows/terraform-ci.yaml
with:
working_directory: terraform/deployments/plex
Expand All @@ -43,7 +43,7 @@ jobs:
needs: plex-ci
strategy:
matrix:
environment: ["plex-dev"]
environment: ["plex-dev", "plex-prd"]
uses: ./.github/workflows/terraform-cd.yaml
with:
working_directory: terraform/deployments/plex
Expand Down
3 changes: 3 additions & 0 deletions terraform/deployments/plex/env/plex-dev/terraform.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@ plex_host = {
os_disk_size = 30
disk_interface = "virtio0"
network_bridge = "vmbr0"
vlan_id = 201
}
nfs_server_ip = "192.168.201.9"
nfs_server_path = "/export/nfs/media"
18 changes: 18 additions & 0 deletions terraform/deployments/plex/env/plex-prd/terraform.tfvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
clone_vm_id = 9000
vm_disk_datastore_id = "ssd_1641G_thin"
vm_cloudinit_datastore_id = "ssd_1641G_thin"
plex_host = {
env = "prd"
name_prefix = "plex-hibiscus"
description = "Plex Media Server"
tags = ["plex", "prd"]
bios = "ovmf"
cpu_cores = 4
memory_mb = 8192
os_disk_size = 30
disk_interface = "virtio0"
network_bridge = "vmbr0"
vlan_id = 10
}
nfs_server_ip = "192.168.10.9"
nfs_server_path = "/export/nfs/media"
5 changes: 4 additions & 1 deletion terraform/deployments/plex/locals.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
locals {
docker_compose = templatefile("${path.module}/templates/docker-compose.yaml.tftpl", {
release_tag = var.plex_release_tag
release_tag = var.plex_release_tag
volume_mount_path = local.volume_mount_path
})
volume_mount_path = "/home/plex/media"

}
13 changes: 8 additions & 5 deletions terraform/deployments/plex/main.tf
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
resource "proxmox_virtual_environment_file" "plex_cloudinit" {
provider = pve
content_type = "snippets"
datastore_id = "snippets"
node_name = var.pve.host

source_raw {
data = templatefile("${path.module}/templates/setup-plex.yaml.tftpl", {
hostname = "${var.plex_host.name_prefix}-${var.plex_host.env}",
admin_username = "plex"
docker_compose = indent(6, local.docker_compose)
hostname = "${var.plex_host.name_prefix}-${var.plex_host.env}",
admin_username = "plex"
docker_compose = indent(6, local.docker_compose)
volume_mount_path = local.volume_mount_path
nfs_server = var.nfs_server_ip
nfs_path = var.nfs_server_path
})
file_name = "setup-plex-${var.plex_host.env}.yaml"
}
}

module "plex_host" {
source = "git::https://github.com/krakenhavoc/HomeLab.git//terraform/modules/compute/pm-cloudinit-vm?ref=v0.1"
source = "git::https://github.com/krakenhavoc/HomeLab.git//terraform/modules/compute/pm-cloudinit-vm?ref=v0.2.0"

vm_name = "${var.plex_host.name_prefix}-${var.plex_host.env}"
vm_node_name = var.pve.host
Expand All @@ -31,4 +33,5 @@ module "plex_host" {
vm_cloudinit_datastore_id = var.vm_cloudinit_datastore_id
vm_cloudinit_user_data_file_id = proxmox_virtual_environment_file.plex_cloudinit.id
vm_network_bridge = var.plex_host.network_bridge
vm_vlan_id = var.plex_host.vlan_id
}
2 changes: 1 addition & 1 deletion terraform/deployments/plex/providers.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
provider "pve" {
provider "proxmox" {
endpoint = var.pve.endpoint
insecure = false

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ services:
- VERSION=docker
- PLEX_CLAIM= #optional
volumes:
- /home/plex/library:/config
- /home/plex/tvseries:/tv
- /home/plex/movies:/movies
- ${volume_mount_path}/library:/config
- ${volume_mount_path}/tvseries:/tv
- ${volume_mount_path}/movies:/movies
restart: unless-stopped
12 changes: 8 additions & 4 deletions terraform/deployments/plex/templates/setup-plex.yaml.tftpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ packages:
- qemu-guest-agent
- docker-ce
- docker-ce-cli
- nfs-common

users:
- name: ${admin_username}
Expand All @@ -30,11 +31,14 @@ write_files:
content: |
${docker_compose}

mounts:
- [ "${nfs_server}:${nfs_path}", "${volume_mount_path}", "nfs", "defaults", "0", "0" ]

runcmd:
- mkdir -p /home/${admin_username}/library
- mkdir -p /home/${admin_username}/tvseries
- mkdir -p /home/${admin_username}/movies
- chown -R ${admin_username}:${admin_username} /home/${admin_username}
- mkdir -p ${volume_mount_path}/library
- mkdir -p ${volume_mount_path}/tvseries
- mkdir -p ${volume_mount_path}/movies
- chown -R ${admin_username}:${admin_username} ${volume_mount_path}
- mv /tmp/docker-compose.yaml /home/${admin_username}/docker-compose.yaml || true
- chown ${admin_username}:${admin_username} /home/${admin_username}/docker-compose.yaml || true
- sudo -u ${admin_username} sudo docker compose -f /home/${admin_username}/docker-compose.yaml up -d
Expand Down
13 changes: 13 additions & 0 deletions terraform/deployments/plex/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ variable "plex_host" {
os_disk_size = optional(number, 30)
disk_interface = optional(string, "virtio0")
network_bridge = optional(string, "vmbr0")
vlan_id = optional(number, null)
})
default = {}
}
Expand All @@ -47,3 +48,15 @@ variable "plex_release_tag" {
type = string
default = "latest"
}

variable "nfs_server_ip" {
description = "IP of the NFS server to mount shares from"
type = string
default = ""
}

variable "nfs_server_path" {
description = "Path on the NFS server to mount"
type = string
default = "/export/nfs"
}
2 changes: 1 addition & 1 deletion terraform/deployments/plex/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_version = "~> 1.14.3"

required_providers {
pve = {
proxmox = {
source = "bpg/proxmox"
version = ">= 0.93.0, < 1.0"
}
Expand Down