_permissions.tpl 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. {{/* Returns an init container that fixes permissions */}}
  2. {{/* Call this template:
  3. {{ include "ix.v1.common.app.permissions" (dict "UID" 568 "GID" 568 "type" "init") }}
  4. type (optional): init or install (default: install)
  5. UID: UID to change permissions to
  6. GID: GID to change permissions to
  7. */}}
  8. {{- define "ix.v1.common.app.permissions" -}}
  9. {{- $type := .type | default "install" -}}
  10. {{- $containerName := .containerName | default "permissions" -}}
  11. {{- $mode := .mode | default "always" -}}
  12. {{- $UID := .UID -}}
  13. {{- $GID := .GID -}}
  14. {{- $modes := (list "always" "check") -}}
  15. {{- if not (mustHas $mode $modes) -}}
  16. {{- fail (printf "Permissions Container - [mode] must be one of [%s]" (join ", " $modes)) -}}
  17. {{- end -}}
  18. {{- if (kindIs "invalid" $type) -}}
  19. {{- fail "Permissions Container - [type] cannot be empty" -}}
  20. {{- end -}}
  21. {{- if (kindIs "invalid" $containerName) -}}
  22. {{- fail "Permissions Container - [containerName] cannot be empty" -}}
  23. {{- end -}}
  24. {{- if (kindIs "invalid" $GID) -}}
  25. {{- fail "Permissions Container - [GID] cannot be empty" -}}
  26. {{- end -}}
  27. {{- if (kindIs "invalid" $UID) -}}
  28. {{- fail "Permissions Container - [UID] cannot be empty" -}}
  29. {{- end }}
  30. {{ $containerName }}:
  31. enabled: true
  32. type: {{ $type }}
  33. imageSelector: bashImage
  34. resources:
  35. limits:
  36. cpu: 1000m
  37. memory: 512Mi
  38. securityContext:
  39. runAsUser: 0
  40. runAsGroup: 0
  41. runAsNonRoot: false
  42. readOnlyRootFilesystem: false
  43. capabilities:
  44. add:
  45. - CHOWN
  46. command: bash
  47. args:
  48. - -c
  49. - |
  50. for dir in /mnt/directories/*; do
  51. if [ ! -d "$dir" ]; then
  52. echo "[$dir] is not a directory, skipping"
  53. continue
  54. fi
  55. echo "Current Permissions on ["$dir"]:"
  56. stat -c "%u %g" "$dir"
  57. {{- if eq $mode "check" }} {{/* If mode is check, check parent dir */}}
  58. if [ $(stat -c %u "$dir") -eq {{ $UID }} ] && [ $(stat -c %g "$dir") -eq {{ $GID }} ]; then
  59. echo "Permissions are correct. Skipping..."
  60. fix_perms="false"
  61. else
  62. echo "Permissions are incorrect. Fixing..."
  63. fix_perms="true"
  64. fi
  65. {{- else if eq $mode "always" }} {{/* If mode is always, always fix perms */}}
  66. fix_perms="true"
  67. {{- end }}
  68. if [ "$fix_perms" = "true" ]; then
  69. echo "Changing ownership to {{ $UID }}:{{ $GID }} on: ["$dir"]"
  70. chown -R {{ $UID }}:{{ $GID }} "$dir"
  71. echo "Finished changing ownership"
  72. echo "Permissions after changing ownership:"
  73. stat -c "%u %g" "$dir"
  74. fi
  75. done
  76. {{- end -}}