@@ -1004,8 +1004,8 @@ users:
10041004 - name: workshop
10051005 primary_group: workshop
10061006 sudo: ALL=(ALL) NOPASSWD:ALL
1007- groups: adm,cdrom,sudo,dip,plugdev,audio,netdev,lxd,video,render
10081007 shell: /bin/bash
1008+ {GROUPS}
10091009apt:
10101010 conf: |
10111011 # Installed by workshop
@@ -1040,6 +1040,50 @@ runcmd:
10401040 - networkctl reload
10411041`
10421042
1043+ groups := `create_groups: false
1044+ groups:
1045+ - 'adm'
1046+ - 'cdrom'
1047+ - 'sudo'
1048+ - 'dip'
1049+ - 'plugdev'
1050+ - 'audio'
1051+ - 'netdev'
1052+ - 'lxd'
1053+ - 'video'
1054+ - 'render'
1055+ # Compatibility GIDs for various host systems:
1056+ - '108' # netdev on 26.04
1057+ - '111' # netdev on 24.04
1058+ - '118' # netdev on 20.04
1059+ - '119' # netdev on 22.04
1060+ - '109' # render on 20.04
1061+ - '110' # render on 22.04
1062+ - '990' # render on 26.04
1063+ - '992' # render on 24.04
1064+ bootcmd:
1065+ - |
1066+ set -e
1067+ maybe_groupadd() {
1068+ # Ignore GID not unique (exit code 4) or group name not unique (exit code 9)
1069+ groupadd -g "$1" -r "$2" || case $? in 4|9) ;; *) return $? ;; esac
1070+ }
1071+ maybe_groupadd 1000 workshop
1072+ maybe_groupadd 108 netdev-compat-108
1073+ maybe_groupadd 111 netdev-compat-111
1074+ maybe_groupadd 118 netdev-compat-118
1075+ maybe_groupadd 119 netdev-compat-119
1076+ maybe_groupadd 109 render-compat-109
1077+ maybe_groupadd 110 render-compat-110
1078+ maybe_groupadd 990 render-compat-990
1079+ maybe_groupadd 992 render-compat-992
1080+ `
1081+ if format .N < 2 {
1082+ groups = `groups: adm,cdrom,sudo,dip,plugdev,audio,netdev,lxd,video,render
1083+ `
1084+ }
1085+ cloudInitConfig = strings .Replace (cloudInitConfig , "{GROUPS}\n " , groups , 1 )
1086+
10431087 // Based on lxd-imagebuilder Ubuntu template. By default
10441088 // systemd-networkd derives the DHCP client ID from /etc/machine-id,
10451089 // which can change when refreshing to a new base image.
0 commit comments