Cool Solution - Using UCC as Image-Distribution-Server for other Univention Corporate Clients
From Univention Wiki
The default partitioning of a Univention Corporate Client separates user data and system data. This allows a complete replacement of the system image with a newer one without loosing user data or the domain join status. Usually, these images are distributed through a NFS share created automatically on the Univention Corporate Server that has the UCC-App installed.
In some cases one might not want to use a Univention Corporate Server to provide the NFS share. For example in a small branch office with very poor connection to the main office. Using an Univention Corporate Client as NFS server for the other UCCs might be an alternative that is described in this article. Since the free space is always limited on a thinclient, in such case one probably wants to use an USB pendrive containing the images.
Please note that this article does not take care of the PXE configuration. As this article addresses scenarios with small branch offices, we assume that the Univention Corporate Clients boot directly from harddisk (Local boot) and not via PXE. If that is not the case in your scenario, you need to adjust the PXE settings.
Hint: You can follow UCC PXE rollout an replace the nfsroot= part with the IP address of the UCC-Image-Distribution-Server.
The following steps need to be completed:
- Install the designated UCC-Image-Distribution-Server with a normal Univention Corporate Client image
- Create the NFS share and mount the USB pendrive
- Specify the UCC-Image-Distribution-Server as server that holds the UCC-Image for the other Univention Corporate Clients
- Optionally: configure security settings to limit access to the NFS share
- Optionally: configure PXE-Settings
- Make the UCC-Thinclients update their system image from the UCC-Image-Distribution-Server
Install a Univention Corporate Client as Image-Distribution-Server
At first, we need to install the designated UCC-Image-Distribution-Server with a standard UCC-Image. This should be done according to the UCC manual. In the following we will assume that the official UCC thin client image is used.
After the installation is finished, log in to the UCC via ssh:
We need to disable the overlay filesystem and the read-only mode:
ucr set ucc/thinclientoverlayfs=false ucr set ucc/boot/mount=rw
We assume that an USB pendrive is used to contain the image(s). So we need to create a directory to mount the USB pendrive and copy the images from the Univention Corporate Server that holds the original UCC images:
mkdir /var/lib/univention-client-boot umount /dev/sdb mount /dev/sdb1 /var/lib/univention-client-boot scp email@example.com:/var/lib/univention-client-boot/ucc-1.0-rev2-thinclient-image.img* /var/lib/univention-client-boot/
Note: While publishing this article, UCC 1.0 rev2 is the current version, so we use ucc-1.0-rev2-thinclient-image.img in the examples. If you want to use a different image, you need to adjust the image name accordingly.
Note: On an Univention Corporate Client with the official thin client image, the first USB device will always be /dev/sdb. If you don't use the official image or if you use more than one USB device, you need to replace sdb with the correct device name.
For upcoming reboots you probably want to add this to your /etc/fstab to make sure the USB pendrive gets mounted automatically:
/dev/sdb1 /var/lib/univention-client-boot ext4 defaults 0 0
Alternatively, it is also possible to use blkid for an unique identifier of a filesytem (block device).
blkid /dev/sdb1 /dev/sdb1: UUID="ee4aa6c3-6335-48f0-ba45-7a458d25aac4" TYPE="ext4"
In such case the line can be added as:
UUID="ee4aa6c3-6335-48f0-ba45-7a458d25aac4" /var/lib/univention-client-boot ext4 defaults 0 0
Note: In this example we assume the filesystem is Ext4, please change the line to reflect the filesystem in your disk (vfat -for FAT32-, ntfs or ext3 are other typical examples).
Now we can install the NFS server components:
apt-get install nfs-common nfs-kernel-server
To configure the desired NFS share, append the following to /etc/exports:
Then export (= publish) the share:
Alternatively, restarting the NFS server will do the same:
service nfs-kernel-server restart
Configure the image
The server that holds the image (assigned server) is specified at the LDAP object of the image.
To be able to set a Univention Corporate Client as image server, we first need to change the syntax of the corresponding UMC field. Otherwise there is a dropdown containing only UCS Domaincontroller and Memberserver:
ucr set directory/manager/web/modules/settings/ucc_image/properties/server/syntax=string
Note: This needs to be set on every server where UDM/UMC is used. It is recommended to use a UCR Policy to apply this setting to all required servers.
After setting the syntax, log in to the UMC, open the LDAP directory module and navigate to univention -> UCC -> Images. Then open your UCC image.
In the Server field insert the name of your UCC-Image-Distribution-Server. Please check for typos and use the full name (FQDN, e.g. ucc-image-server.univention.test). Then click Save changes.
Alternatively we can change the assigned server using the Univention Directory Manager command line tool on an Univention Corporate Server Domaincontroller:
udm settings/ucc_image modify \ --dn univentionCorporateClientImageName=ucc-1.0-rev2-thinclient-image.img,cn=Images,cn=UCC,cn=univention,dc=univention,dc=test \ --set server=ucc-image-server.univention.test
Note: Multiple servers are possible. If you need to specify more than one server, use --append server=... instead of --set server=....
If you changed/updated the image, do not forget to change the md5 file as well:
md5sum /var/lib/univention-client-boot/ucc-1.0-rev2-thinclient-image.img | cut -c-32 > /var/lib/univention-client-boot/ucc-1.0-rev2-thinclient-image.img.md5
Configure the clients
Now set the clients to check for an update on next boot:
They should now check for a new system image on the given UCC-Image-Distribution-Server and replace it.
One might want to limit access to the images. This can be done by specifying only certain hosts or IP addresses in /etc/exports. The following example limits access to the 10.200.30.0/24 subnet:
Please refer to the man page of exports ('man exports' on the UCS master) for more options.