Deploy Terminals

When you have the Uyuni Server and Branch Server set up, you are ready to deploy point-of-service terminals by following these steps:

  1. Create hardware type groups

  2. Assign and configure the Saltboot formula for each hardware type group

  3. Synchronize images to the branch server

  4. Deploy images to the terminals

Each procedure is detailed in this section.

For other methods of booting terminals, including using a USB device, or booting over a wireless network, see retail:retail-deploy-terminals-other.adoc.

For Uyuni 4.2 and later, terminals can be either x86-64 or ARM64 architecture. For earlier versions, terminals must be x86 architecture only.

If you have many terminals, you can handle them with a script. For more information, see retail:retail-mass-config.adoc.

Before terminals can be deployed, ensure you have prepared a Saltboot-based operating system image. For more information about building OS images, see administration:image-management.adoc.

After you have registered new terminals, always check the Uyuni Web UI to ensure your terminals have connected successfully to the branch server. The terminals must not have directly connected to the Uyuni Server by mistake.

1. Create A Hardware Type Group

Each terminal requires a specific hardware type, which contains information about the product name and terminal manufacturer. However, at the beginning, the Uyuni database does not have this information. To tell Uyuni what image to deploy on each terminal, you can set hardware type groups. After you have created a new hardware type group, you can apply the Saltboot formula to the group and configure it for your environment.

Hardware types allow you to group devices according to manufacturer and device name. Then, all devices of a particular type can be managed as one.

Empty profiles can be assigned to a hardware type group either before or after registration. If an empty profile is not assigned to a hardware type group before registration, it will be assigned to group that best matches the product information available to it.

For this procedure, you will require the system manufacturer name and product name for your terminal.

Procedure: Creating a Hardware Type Group
  1. Determine the hardware type group name. Prefix the name with HWTYPE:, followed by the system manufacturer name and product name, separated by a hyphen. For example:

  2. In the Uyuni Web UI, navigate to Systems  System Groups, and click the Create Group button.

  3. In the Create System Group dialog, create a new system group, using the hardware type group name you determined in step one of this procedure.

Only use colons, hyphens, or underscores in hardware type group names. Spaces and other non-alphanumeric characters will be removed when the name is processed.

2. Assign and Configure the Saltboot Formula for Each Hardware Type Group

Each hardware type group must have the Saltboot formula applied.

Procedure: Assigning the Saltboot Formula
  1. Open the details page for your new hardware type group, and navigate to the Formulas tab.

  2. Select the Saltboot formula and click Save.

  3. Navigate to the Formulas  Saltboot tab.

  4. Configure the Saltboot formula. For more information about the Saltboot formula, see specialized-guides:salt/salt-formula-saltboot.adoc.

3. Synchronize Images to the Branch Server

Procedure: Synchronizing Images to the Branch Server
  1. On the Uyuni server, run this command:

    salt <branch_server_salt_id> state.apply image-sync

3.1. Using a SUSE Linux Enterprise Server11 SP3 32-bit based images

If you have 32-bit machines included in your branch, then you must use a 32-bit boot image as a default boot image.

If a 32-bit boot image is not used as a default boot image, 32-bit terminals will be unable to boot and operate properly.

Check the available boot images and their architecture from the command line:

salt <branch_server_salt_id> pillar.item boot_images



In this example, the legacy-6.0.0 boot image is 32-bit.

You can set the default boot image in the Image Synchronization formula on the branch server, by adding the chosen boot image name to the Default boot image field. For more information about Image Synchronization formula, see specialized-guides:salt/salt-formula-imagesync.adoc.

retail imagesync formula

4. Deploy Images to the Terminals

When you have your bootstrap image ready, you can deploy the image to the terminals.

Procedure: Deploying Images to the Terminals
  1. Power on your POS terminals.

  2. The branch server will bootstrap the terminals according to the data you have provided.

5. Re-Deploy Images to the Terminals

You can instruct terminals to download and deploy images when they are restarted. This is achieved using a Salt state.

Procedure: Forcing a Terminal to Re-Deploy Images
  1. On the Uyuni Server, at the command prompt, as root, apply this Salt state:

    salt $terminal_minion_id state.apply saltboot.force_redeploy
  2. Restart the terminal to pick up the changes.

If your terminal encounters a problem with the file system or the partition table, you might need to remove the partition table and reformat the terminal.

Re-partitioning a terminal removes all data stored on the terminal hard disk, including any persistent partitions.

Procedure: Forcing a Terminal to Re-partition the Hard Disk
  1. On the Uyuni Server, at the command prompt, as root, apply this Salt state:

    salt $terminal_minion_id state.apply saltboot.force_repartition
  2. Restart the terminal to pick up the changes.

6. Customize the Terminal Image Download Process

You can change the terminal boot process using Salt pillars. Two Salt pillars allow you to change the protocol and server used to download the image.

  • The saltboot_download_protocol pillar specifies which protocol should be used to download the image to the terminal. This overrides the default protocol specified in the image pillar. Allowed values are http, https, ftp, or tftp.

  • The saltboot_download_server pillar specifies which server to use to download the image. This overrides the default hostname specified in the image pillar.

Example: Changing the Saltboot Image Download Protocol

This example changes the protocol used for all terminals.

Edit the /srv/pillar/top.sls file:

    - saltboot_proto

Edit the /srv/pillar/saltboot_proto.sls file:

saltboot_download_protocol: http
# can be http, https, ftp, tftp
Example: Changing the Saltboot Image Download Location

This example changes the download location for all terminals on a specified branch server.

Edit the /srv/pillar/top.sls file:

     - match: grain
     - $branch_prefix

Edit the /srv/pillar/$branch_prefix.sls file:

saltboot_download_server: $download_server_fqdn

In this example, the download server must be prepared by the image_sync state before you begin.