questions.yaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. groups:
  2. - name: "Plex Configuration"
  3. description: "Configure plex deployment"
  4. - name: "Networking"
  5. description: "Configure networking for container"
  6. - name: "Storage"
  7. description: "Persist and share data that is separate from the lifecycle of the container"
  8. - name: "Workload Details"
  9. description: "Configure how workload should be deployed"
  10. - name: "Scaling/Upgrade Policy"
  11. description: "Configure how pods are replaced when configuration is upgraded"
  12. - name: "Restart Policy"
  13. description: "Configure when pod should be restarted in case of failure"
  14. - name: "Resource Reservation"
  15. description: "Specify resources to be allocated to workload"
  16. - name: "Advanced DNS Settings"
  17. description: "Configure DNS settings"
  18. - name: "Resource Limits"
  19. description: "Set CPU/memory limits for Kubernetes Pod"
  20. portals:
  21. web_portal:
  22. protocols:
  23. - "http"
  24. host:
  25. - "$node_ip"
  26. ports:
  27. - "$variable-plexServiceTCP.port"
  28. path: "/web"
  29. questions:
  30. - variable: enablePlexPass
  31. label: "Use PlexPass"
  32. group: "Plex Configuration"
  33. schema:
  34. type: boolean
  35. default: false
  36. - variable: dnsConfig
  37. label: "DNS Configuration"
  38. group: "Advanced DNS Settings"
  39. schema:
  40. type: dict
  41. attrs:
  42. - variable: options
  43. label: "DNS Options"
  44. schema:
  45. type: list
  46. items:
  47. - variable: optionsEntry
  48. label: "Option Entry Configuration"
  49. schema:
  50. type: dict
  51. attrs:
  52. - variable: name
  53. label: "Option Name"
  54. schema:
  55. type: string
  56. required: true
  57. - variable: value
  58. label: "Option Value"
  59. schema:
  60. type: string
  61. required: true
  62. - variable: claimToken
  63. label: "Plex Claim Token"
  64. group: "Plex Configuration"
  65. description: "The claim token for the server to obtain a real server token. If not provided, server is will not be automatically logged in. If server is already logged in, this parameter is ignored. You can obtain a claim token to login your server to your plex account by visiting https://www.plex.tv/claim."
  66. schema:
  67. type: string
  68. default: ""
  69. - variable: hostNetwork
  70. label: "Configure Host Network"
  71. group: "Networking"
  72. schema:
  73. type: boolean
  74. default: false
  75. - variable: environmentVariables
  76. label: "Environment Variables for Plex"
  77. group: "Plex Configuration"
  78. schema:
  79. type: list
  80. default: []
  81. items:
  82. - variable: environmentVariable
  83. label: "Environment Variable"
  84. schema:
  85. type: dict
  86. attrs:
  87. - variable: name
  88. label: "Name"
  89. schema:
  90. type: string
  91. - variable: value
  92. label: "Value"
  93. schema:
  94. type: string
  95. - variable: timezone
  96. label: "Plex container timezone"
  97. group: "Plex Configuration"
  98. schema:
  99. type: string
  100. default: "Etc/UTC"
  101. $ref:
  102. - "definitions/timezone"
  103. # Update strategy
  104. - variable: updateStrategy
  105. description: "Upgrade Policy"
  106. label: "Update Strategy"
  107. group: "Scaling/Upgrade Policy"
  108. schema:
  109. type: string
  110. default: "Recreate"
  111. enum:
  112. - value: "RollingUpdate"
  113. description: "Create new pods and then kill old ones"
  114. - value: "Recreate"
  115. description: "Kill existing pods before creating new ones"
  116. # Port configuration
  117. - variable: plexServiceTCP
  118. label: "Configure Plex TCP Service"
  119. group: "Networking"
  120. schema:
  121. type: dict
  122. attrs:
  123. - variable: port
  124. label: "Port to expose for Plex UI"
  125. schema:
  126. type: int
  127. min: 9000
  128. max: 65535
  129. default: 32400
  130. # Specify GPU configuration
  131. - variable: gpuConfiguration
  132. label: "GPU Configuration"
  133. group: "Resource Reservation"
  134. schema:
  135. type: dict
  136. $ref:
  137. - "definitions/gpuConfiguration"
  138. attrs: []
  139. - variable: appVolumeMounts
  140. label: "Plex Storage"
  141. group: "Storage"
  142. schema:
  143. type: dict
  144. attrs:
  145. - variable: transcode
  146. label: "Transcode Volume"
  147. schema:
  148. type: dict
  149. attrs:
  150. - variable: datasetName
  151. label: "Plex Transcode Volume Name"
  152. schema:
  153. type: string
  154. $ref:
  155. - "normalize/ixVolume"
  156. show_if: [["hostPathEnabled", "=", false]]
  157. default: "ix-plex_transcode"
  158. hidden: true
  159. editable: false
  160. - variable: mountPath
  161. label: "Plex Transcode Mount Path"
  162. description: "Path where the volume will be mounted inside the pod"
  163. schema:
  164. type: path
  165. hidden: true
  166. editable: false
  167. default: "/transcode"
  168. - variable: hostPathEnabled
  169. label: "Enable Host Path for Plex Transcode Volume"
  170. schema:
  171. type: boolean
  172. default: false
  173. show_subquestions_if: true
  174. subquestions:
  175. - variable: hostPath
  176. label: "Host Path for Plex Transcode Volume"
  177. schema:
  178. type: hostpath
  179. required: true
  180. $ref:
  181. - "validations/lockedHostPath"
  182. - variable: data
  183. label: "Data Volume"
  184. schema:
  185. type: dict
  186. attrs:
  187. - variable: datasetName
  188. label: "Plex Data Volume Name"
  189. schema:
  190. type: string
  191. $ref:
  192. - "normalize/ixVolume"
  193. show_if: [["hostPathEnabled", "=", false]]
  194. default: "ix-plex_data"
  195. editable: false
  196. hidden: true
  197. - variable: mountPath
  198. label: "Plex Data Mount Path"
  199. description: "Path where the volume will be mounted inside the pod"
  200. schema:
  201. type: path
  202. hidden: true
  203. editable: false
  204. default: "/data"
  205. - variable: hostPathEnabled
  206. label: "Enable Host Path for Plex Data Volume"
  207. schema:
  208. type: boolean
  209. default: false
  210. show_subquestions_if: true
  211. subquestions:
  212. - variable: hostPath
  213. label: "Host Path for Plex Data Volume"
  214. schema:
  215. type: hostpath
  216. required: true
  217. $ref:
  218. - "validations/lockedHostPath"
  219. - variable: config
  220. label: "Config Volume"
  221. schema:
  222. type: dict
  223. attrs:
  224. - variable: datasetName
  225. label: "Plex Config Volume Name"
  226. schema:
  227. type: string
  228. $ref:
  229. - "normalize/ixVolume"
  230. show_if: [["hostPathEnabled", "=", false]]
  231. default: "ix-plex_config"
  232. editable: false
  233. hidden: true
  234. - variable: mountPath
  235. label: "Plex Config Mount Path"
  236. description: "Path where the volume will be mounted inside the pod"
  237. schema:
  238. type: path
  239. editable: false
  240. hidden: true
  241. default: "/config"
  242. - variable: hostPathEnabled
  243. label: "Enable Host Path for Plex Config Volume"
  244. schema:
  245. type: boolean
  246. default: false
  247. show_subquestions_if: true
  248. subquestions:
  249. - variable: hostPath
  250. label: "Host Path for Plex Config Volume"
  251. schema:
  252. type: hostpath
  253. required: true
  254. $ref:
  255. - "validations/lockedHostPath"
  256. - variable: shared
  257. label: "Shared Volume"
  258. schema:
  259. type: dict
  260. hidden: true
  261. attrs:
  262. - variable: emptyDir
  263. label: "Temporary Volume"
  264. schema:
  265. type: boolean
  266. default: true
  267. editable: false
  268. - variable: mountPath
  269. label: "Plex Shared Mount Path"
  270. description: "Path where the volume will be mounted inside the pod"
  271. schema:
  272. type: path
  273. editable: false
  274. default: "/shared"
  275. - variable: shared-logs
  276. label: "Shared Logs Volume"
  277. schema:
  278. type: dict
  279. hidden: true
  280. attrs:
  281. - variable: emptyDir
  282. label: "Temporary Volume"
  283. schema:
  284. type: boolean
  285. default: true
  286. editable: false
  287. - variable: mountPath
  288. label: "Plex Shared Logs Mount Path"
  289. description: "Path where the volume will be mounted inside the pod"
  290. schema:
  291. type: path
  292. editable: false
  293. default: "/config/Library/Application Support/Plex Media Server/Logs"
  294. - variable: extraAppVolumeMounts
  295. label: "Plex Extra Host Path Volumes"
  296. group: "Storage"
  297. schema:
  298. type: list
  299. items:
  300. - variable: extraAppVolume
  301. label: "Plex Host Path Volume"
  302. description: "Add an extra host path volume for plex application"
  303. schema:
  304. type: dict
  305. attrs:
  306. - variable: mountPath
  307. label: "Mount Path in Pod"
  308. description: "Path where the volume will be mounted inside the pod"
  309. schema:
  310. type: path
  311. required: true
  312. - variable: hostPath
  313. label: "Host Path"
  314. description: "Host path"
  315. schema:
  316. type: hostpath
  317. required: true
  318. $ref:
  319. - "validations/lockedHostPath"
  320. - variable: readOnly
  321. label: "Read Only"
  322. description: "Mount hostpath in read-only mode"
  323. schema:
  324. type: boolean
  325. default: false
  326. - variable: enableResourceLimits
  327. label: "Enable Pod resource limits"
  328. group: "Resource Limits"
  329. schema:
  330. type: boolean
  331. default: false
  332. - variable: cpuLimit
  333. label: "CPU Limit"
  334. description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
  335. group: "Resource Limits"
  336. schema:
  337. type: string
  338. show_if: [["enableResourceLimits", "=", true]]
  339. valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
  340. default: "4000m"
  341. - variable: memLimit
  342. label: "Memory Limit"
  343. group: "Resource Limits"
  344. description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
  345. schema:
  346. type: string
  347. show_if: [["enableResourceLimits", "=", true]]
  348. valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
  349. default: "8Gi"