--- title: "Zero Touch Provisioning of a Server Technology PDU" slug: "zero-touch-provisioning-of-a-servertech-pdu" updated: 2024-09-23T12:11:34Z published: 2024-09-23T12:11:34Z canonical: "docs.zpesystems.com/zero-touch-provisioning-of-a-servertech-pdu" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.zpesystems.com/llms.txt > Use this file to discover all available pages before exploring further. # Zero Touch Provisioning of a Server Technology PDU Rack Power Distribution Units (Rack PDUs) are essential components of data center infrastructure, yet it's still common to configure them manually via command-line interfaces. This approach is inefficient, especially at scale, and presents three key challenges: - Skilled engineers must be on-site to perform configuration tasks. - Rack PDUs must be configured individually, which consumes valuable time. - Manual configuration increases the risk of inconsistencies and human error, potentially leading to costly failures or compliance issues. To address these challenges, the Nodegrid platform integrates seamlessly with Server Technology PDUs' Zero Touch Provisioning (ZTP) capabilities. By combining ZTP with out-of-band remote access, the Nodegrid platform allows teams to automate deployment and centralize the management of Rack PDUs. This solution provides three main benefits: - Out-of-band access enables engineers to configure and troubleshoot remotely via a web browser. - Zero-touch provisioning automatically configures all Rack PDUs at boot-up, saving hours of manual work. - Automating configuration and firmware updates eliminates human intervention, reducing the risk of failures and non-compliance. This guide outlines the required steps to configure a Nodegrid appliance to act as a Zero Touch Provisioning Server for Server Technology PDUs and guides users through the first deployment and management of a Server Technology Rack PDU. > [!NOTE] > Model Dependencies > > Server Technology Rack PDUs support two versions of the ZTP process, which is dependent on the used controller. This guide will provide the required steps for both controller versions and will highlight the required differences as needed. ## 1 Requirement ### 1.1 ZPE Systems - Nodegrid appliance guide uses a Bold SR as an example with - Minimum one LAN port to which the Rack PDUs are connected - Minimum one USB or RJ45 Console port depending on Rack PDU model for console access - Minimum in one free Nodegrid Managed Devices Licenses, one license per Rack PDU > [!NOTE] > Managed Devices Licenses > > Depending on the Nodegrid model used, the required licenses are included with the model. ### 1.2 Server Technology Minimum 1 x Rack PDU from the Server Technology PRO1/2, PRO3X or PRO4X series ### 1.3 Accessories - Network Switch (Optional), appliances of the Nodegrid SR family provide integrated network ports, which can be used to directly connect Rack PDUs to the Nodegrid appliance - Cat5/Cat6 cables for network connectivity - PRO1/2 - Cat5/Cat6 patch cable for console access - PRO3X/4X - USB-B to USB-A cable for console access ## 2 Technical Overview This guide utilizes a Nodegrid Bold SR. The appliance will act as a DHCP and ZTP server for a directly connected Rack PDU. The appliance will host the required configuration and firmware files for the ZTP process. As part of the deployment, the Rack PDU will automatically be added to the Nodegrid management interface. This enables enable users to easily perform power control actions, such as Power-Off, Power-On or Power-Cycle, access the console interface and the WebUI of the Rack PDU, without directly exposing the Rack network interface to the management network, providing isolation to the connected Rack PDUs. ![servertech_ztp_01.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_01.png) | Appliance | Setting Type | Setting | Value | Comment | | --- | --- | --- | --- | --- | | Bold SR | Network Settings | ETH0 | DHCP or Static | Instructions on how to get started with a Bold SR see [here](https://docs.zpesystems.com/guides/docs/nodegrid-bold-sr) | | BACKPLANE0 | 192.168.100.1/24 | BACKPLANE0 interface provides connectivity to NestS1-4 via an integrated switch | | DHCP Server | Scope | 192.168.100.0 - 255.255.255.0 | | | Range | 192.168.100.10-192.168.100.200 | | | File Storage | HTTP | datastore | Required for PRO3X and PRO4X Base URL: http://192.168.100.1/datastore/ | | TFTP | datastore | Required for PRO1 and PRO2 | | Managed Devices | ttyS1 | Enabled, 9600 baud | will provide console access top Rack PDU | | Rack PDU | Config Files | ZTP Configuration File - PRO1/PRO2 | `config-servertech.ini` | For PRO1 and PRO2 | | | `fwupdate.cfg` `config.txt` `device.csv` | For PRO3X and PRO4X | | Firmware file | firmware.bin | | ## 3 Preparation The following section outlines the preparation work, which includes preparing the DHCP server, file server, and Nodegrid auto-discovery. These steps are typically only required once to set up the environment and apply to all Server Technology Rack PDU models. ### 3 Manual Configuration #### 3.1 DHCP Server Configuration The ZTP process of the Server Technology PDUs depends on Vendor-specific attributes and configurations which need to be manually added to the DHCP server configuration. These settings are Model specific, the guide will highlight the sections that must be adjusted depending on the used model. > [!WARNING] > Editing of Configuration Files > > Manual editing of configuration files can lead to configuration mistakes. We recommend that each configuration file is backed up before editing. To edit files, the user can use the vi editor, see the cheat sheet [here](https://docs.zpesystems.com/guides/docs/vi-reference) on how to use vi. To add the required configuration follow these steps: 1. In the WebUI navigate to Access and click on **Console**. This opens a new Window with the Console interface displayed. ![servertech_ztp_02.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_02.png) 2. Enter the root shell. ```shell shell sudo su - ``` 3. Create a backup of the DHCP configuration file. ```powershell cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bck ``` 4. Edit the DHCP configuration file. ```powershell vi /etc/dhcp/dhcpd.conf ``` 5. Navigate to the section that contains the vendor-specific details for the Nodegrid appliances and add the following section. ```plaintext option space servertech hash size 3; option servertech.identifier code 1 = text; option servertech.ztp-url code 2 = text; set vendor-string = option vendor-class-identifier; option space RARITAN code width 1 length width 1 hash size 3; option RARITAN.pdu-tftp-server code 1 = ip-address; option RARITAN.pdu-update-control-file code 2 = text; option RARITAN.pdu-update-magic code 3 = text; option RARITAN.pdu-model code 4 = text; option RARITAN.pdu-serial code 5 = text; option RARITAN.pdu-cascading-info code 6 = text; option RARITAN.pdu-http-uri-base code 7 = text; option local-encapsulation code 43 = encapsulate RARITAN; ``` 6. Underneath the vendor-specific scope add a vendor-specific class. This class uniquely identifies each RACK PDU and ensures that the correct PDUs receive the correct configuration files. This also enables users to define unit-specific configurations, which are based on a unit's MAC address. > [!NOTE] > Configuration details > > The following examples, require adjustments in cases where the Nodegrid IP address and the config file names deviate from the example. **Single Configuration File** ```plaintext class "servertech-ztp" { match if substring (option vendor-class-identifier, 0, 10) = "ServerTech"; vendor-option-space servertech; option servertech.identifier "STI Params"; option servertech.ztp-url "tftp://192.168.100.1/datastore/config-servertech.ini"; } class "raritan" { match if option vendor-class-identifier = "Raritan PDU 1.0"; vendor-option-space RARITAN; option RARITAN.pdu-tftp-server 192.168.100.1; option RARITAN.pdu-update-control-file "fwupdate.cfg"; option RARITAN.pdu-update-magic "20240910-0001"; option vendor-class-identifier "Raritan PDU 1.0"; } ``` **Configuration File based on MAC Address** ```plaintext class "servertech-ztp" { match if substring (option vendor-class-identifier, 0, 10) = "ServerTech"; vendor-option-space servertech; option servertech.identifier "STI Params"; option servertech.ztp-url "tftp://192.168.100.1/datastore/config-servertech-${mac}.ini"; } class "raritan" { match if option vendor-class-identifier = "Raritan PDU 1.0"; vendor-option-space RARITAN; option RARITAN.pdu-tftp-server 192.168.100.1; option RARITAN.pdu-update-control-file "fwupdate.cfg"; option RARITAN.pdu-update-magic "20240910-0001"; option ``` 7. Save the changes. > [!NOTE] > Full Example > > see [Example dhcp.conf file](/guides/docs/zero-touch-provisioning-of-a-servertech-pdu#61-example-dhcpconf-file) for a full example 8. Before restarting the service validate the config file. ```plaintext dhcpd -t -cf /etc/dhcp/dhcpd.conf ``` **Output** ```plaintext root@nodegrid:~# dhcpd -t -cf /etc/dhcp/dhcpd.conf Internet Systems Consortium DHCP Server 4.4.3 Copyright 2004-2022 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Config file: /etc/dhcp/dhcpd.conf Database file: /var/lib/dhcp/dhcpd.leases PID file: /var/run/dhcpd.pid ``` 9. Restart the DHCP server with the command. ```shell /etc/init.d/dhcp-server restart ``` #### 3.2 Configure File Server - TFTP and Web #### 3.2.1 Configure TFTP Server From the root shell edit perform the following steps 1. Create a backup of `/etc/xinetd.d/tftpd` file. ```plaintext cp /etc/xinetd.d/tftpd /etc/xinetd.d/tftpd.bck ``` 2. Edit `/etc/xinetd.d/tftpd` file. ```plaintext vi /etc/xinetd.d/tftpd ``` 3. Change the state of disabled to "no". ```plaintext service tftp {        disable         = no        socket_type     = dgram        protocol        = udp        flags           = IPv6        wait            = yes        user            = root        group           = root        server          = /usr/sbin/in.tftpd        server_args     = -s /var/opt/tftpboot } ``` 4. Save the file. 5. Start the TFTP server. ```plaintext /etc/init.d/xinetd start ``` 6. Create a symlink to the datastore directory. ```plaintext ln -s /var/local/file_manager/datastore /var/opt/tftpboot/ ``` 7. Close the root shell, by using the `exit` command or closing the session. #### 3.2.2 Configure HTTP file server 1. In the WebUI navigate to *Security :: Services*. 2. In the Web Service section, enable the option: `Enable HTTP/S File Repository`. ![servertech_ztp_03.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_03.png) 3. Click **Save**. #### 3.3 DHCP Scope Configuration This section outlines how a new DHCP scope is configured on the Nodegrid appliance, which will be used for the ZTP process. For more details on DHCP configurations see [here](https://docs.zpesystems.com/docs/dhcp-drop-down-dhcp-server-tab). 1. Navigate to *Network :: Connections*. ![servertech_ztp_04.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_04.png) 2. Select the BACKPLANE0 interface and assign a static IP address of 192.168.100.1 with a Bitmask of 24. BACKPLANE0 will be used to interact with the Rack PDU's and the DHCP server will only listen on this interface. ![servertech_ztp_05.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_05.png) 3. Save the changes. 4. Navigate to *Network :: DHCP :: DHCP Server*. ![servertech_ztp_06.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_06.png) 5. Click on **Add** to create a new DHCP scope and define the subnet as `192.168.100.0` and Netmask as `255.255.255.0.` > [!NOTE] > Additional Values > > Define additional values as desired, but they are not required ![servertech_ztp_07.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_07.png) 6. Save the configuration, this will create a new blank DHCP range. 7. Click on the newly created DHCP range, navigate to Network Range and click **Add**. ![servertech_ztp_08.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_08.png) 8. Define the network range by defining a start address (`192.168.100.10`) and an end address (`192.168.100.200`). Host Reservations The DHCP server supports as well IP address reservations in the Hosts section of the DHCP scope section see [here](https://docs.zpesystems.com/docs/manage-dhcp-server) for more details ![servertech_ztp_09.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_09.png) #### 3.4 Nodegrid Managed Device Auto-Discovery > [!NOTE] > Optional > > This step is optional and not required for the Zero Touch Provisioning process. This section enables the automatic discovery of provisioned Rack PDUs, so that the Rack PDUs can be managed through the Nodegrid appliance for ongoing maintenance and outlet control The following section outlines the required steps that will automatically add the provisioned Rack PDUS to the Nodegrid management interface. As soon as a Rack PDU is discovered, the user can utilize the Nodegrid interface, to access the Rack PDU, via the WebUI, SSH, and Console, allowing users to easily control power outlets and monitor the power consumption. > [!NOTE] > Model Dependency > > Availability of functionality will depend on the Rack PDU model used. Example: The functionality of power outlet control depends on the availability of the feature on the Rack PDU in use. Nodegrid appliances can be configured through multiple interfaces, like the WebUI and the import_settings cli command. The import_settings command makes it easy to apply golden templates to Nodegrid appliances and configure the devices as needed. The following section documents both configuration methods allowing users to choose their preferred method/ #### 3.4.1 Create a Rack PDU Device Template The Auto Discovery process will create managed devices based on user-defined device templates. #### 3.4.1.1 Import_Settings 1. Start a Nodegrid Console connection to the appliance cli, the WebUI navigate to the Access screen and click on the console button. 2. Use the following command to start the import_settings process. ```plaintext import_settings ``` 3. Use the following import_settings commands to create the template device, by pasting the text into the CLI. > [!NOTE] > IMPORTANT > > Adjust the password setting to the required value for the PDU. ```plaintext /settings/devices/_template_servertech/access name=_template_servertech /settings/devices/_template_servertech/access type=pdu_servertech /settings/devices/_template_servertech/access web_url=http://%IP /settings/devices/_template_servertech/access launch_url_via_html5=yes /settings/devices/_template_servertech/access method=internal_browser /settings/devices/_template_servertech/access username=admin /settings/devices/_template_servertech/access credential=set_now /settings/devices/_template_servertech/access password=MYPASSWORD /settings/devices/_template_servertech/access allow_pre-shared_ssh_key=no /settings/devices/_template_servertech/access enable_device_state_detection_based_on_network_traffic=yes /settings/devices/_template_servertech/access enable_hostname_detection=no /settings/devices/_template_servertech/access multisession=yes /settings/devices/_template_servertech/access read-write_multisession=no /settings/devices/_template_servertech/access enable_send_break=no /settings/devices/_template_servertech/access icon=servertech.png /settings/devices/_template_servertech/access mode=disabled /settings/devices/_template_servertech/access expiration=never /settings/devices/_template_servertech/access end_point=appliance /settings/devices/_template_servertech/management ssh_and_telnet=yes /settings/devices/_template_servertech/management credential=use_same_as_access /settings/devices/_template_servertech/management snmp=yes /settings/devices/_template_servertech/management snmp_version=v2 /settings/devices/_template_servertech/management snmp_community=private /settings/devices/_template_servertech/logging data_logging=yes /settings/devices/_template_servertech/commands/outlet command=outlet /settings/devices/_template_servertech/commands/outlet enabled=yes /settings/devices/_template_servertech/commands/outlet protocol=snmp ``` 4. Press **CTRL+D** to start the import process. the command will indicate the success of the import. ***Example:*** ```plaintext [admin@nodegrid /]# import_settings Type or paste data output from export_settings. Press to finish. /settings/devices/_template_servertech/access name=_template_servertech /settings/devices/_template_servertech/access type=pdu_servertech ..... /settings/devices/_template_servertech/commands/outlet enabled=yes /settings/devices/_template_servertech/commands/outlet protocol=snmp Path: /settings/devices/_template_servertech/access Result: succeeded Path: /settings/devices/_template_servertech/management Result: succeeded Path: /settings/devices/_template_servertech/logging Result: succeeded Path: /settings/devices/_template_servertech/commands/outlet Result: succeeded Processed paths: 4 Rejected paths: 0 ``` #### 4.4.1.2 WebUI To create a new device template follow these steps. 1. Navigate to Managed Devices. 2. Click on **Add** and create a new device with the following details: | Setting | Value | Comment | | --- | --- | --- | | Name | _template_servertech | | | Type | pdu_servertech | | | IP Address | 127.0.0.1 | | | Username | admin | | | Password | !PASSWORD! | | | Mode | disabled | | | Enable device state detection based on network traffic (icmp) | Enabled | | | Icon | Server Technology | | ![servertech_ztp_10.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_10.png) 3. Save the template, this will create a new device 4. Click on the newly created device and finalize the configuration. 5. Navigate to the Devices Management section and configure the following settings: | Setting | Value | Comment | | --- | --- | --- | | SNMP | Enable | | | SNMP Version: | Version 2 | | | Community | private | Use the SNMP Community which is configured on the Rack PDU | ![servertech_ztp_11.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_11.png) 6. Navigate to the Devices Commands section, click on Logging and enable Data Logging. | Setting | Value | Comment | | --- | --- | --- | | Data Logging | Enabled | This feature enables data logging for all ssh sessions to the rack PDU | 7. Navigate to the Devices Commands section, click on Outlet and change the Protocol to SNMP. | Setting | Value | Comment | | --- | --- | --- | | Protocol | SNMP | This protocol will be used to detect outlets and to enable power control functionality. | ![servertech_ztp_12.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_12.png) #### 3.4.2 Create Auto Discovery Rule #### 3.4.2.1 Import_Settings 1. Start a Nodegrid Console connection to the appliance cli, the WebUI navigate to the Access screen and click on the console button. 2. Use the following command to start the import_settings process. ```plaintext import_settings ``` 3. Use the following import_settings commands to create the template device, by pasting the text into the CLI. ```plaintext /settings/auto_discovery/discovery_rules/_discover_servertech rule_name=_discover_servertech /settings/auto_discovery/discovery_rules/_discover_servertech status=enabled /settings/auto_discovery/discovery_rules/_discover_servertech method=dhcp /settings/auto_discovery/discovery_rules/_discover_servertech action=clone_mode_on-demand /settings/auto_discovery/discovery_rules/_discover_servertech clone_from=_template_servertech /settings/auto_discovery/discovery_rules/_discover_servertech enforce_device_type=yes /settings/auto_discovery/discovery_rules/_discover_servertech inherit_appliance_credentials=no ``` 4. Press **CTRL+D** to start the import process. the command will indicate the success of the import. #### 3.4.2.2 WebUI 1. Navigate to *Managed Devices :: Auto Discovery :: Discovery Rules*. 2. Click **Add** and create a new rule with the following settings. | Setting | Value | Comment | | --- | --- | --- | | Rule Name | _discover_servertech | | | Status | Enabled | | | Discovery Method | DHCP | | | Action | Clone (Mode: On-Demand) | | | Clone From | _template_servertech | | | Enforce Device Type | Enabled | | ![servertech_ztp_13.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_13.png) ## 4 ZTP Configuration Files Configuration ### 4.1 Preparing ZTP Configuration Files Depending on the Rack PDU models used different configuration files are required. The following section will provide an overview and example configuration files for the Server Technology PRO1/2 and the PRO3X and PRO4X series. See the official documentation for more details: For Server Technology PRO1/2 see [here](https://www.servertech.com/support/rack-pdu-firmware-downloads/smart-rack-pdu-firmware-downloads) for reference documentation and a template file. For Server Technology PRO3X and PRO4X based on Xerus controller platform, see here. #### 4.1.1 Server Technology PRO1/2 models - Server Technology INI Configuration - Download the official [STIC template file](https://cdn10.servertech.com/assets/documents/documents/975/original/STIC_V2.22_Template.ini?1640114561) - Create a new text file, based on the downloaded template. with the name `config-servertech.ini` or `config-servertech-${mac}.ini`, where by `${mac}` represents the Rack PDUs MAC address. - Adjust values as needed and required. Ensure that username, password and SNMP settings which are configured match the created device template in step [[#3.4.1 Create a Rack PDU Device Template]] - Example: ```plaintext [snmp] get community: public set community: private v2: enabled [user] username: admn password: MYPASSWORD ``` > [!WARNING] > Firmware Update > > Server Technology PRO1 and PRO 2 Rack PDUs Zero Touch Provisioning process does not support firmware updates. #### 4.1.2 Server Technology PRO3X and PRO4X models - Conf file The Xerus platform enables a wide range of device configuration options via the ZTP process. The configuration files are the same as those used with the Mass Deployment Utility. There are four types of configuration files. To generate these files, use the Mass Deployment Utility. See [Creating Configuration Files via Mass Deployment Utility](https://help.raritan.com/pdu-g4/4.2.0/#showid/103111). | File | Comment | | --- | --- | | fwupdate.cfg | This file MUST always be present for performing configuration or firmware upgrade tasks. See [fwupdate.cfg](https://help.raritan.com/pdu-g4/4.2.0/#showid/103107). | | config.txt | This file is used for configuring device settings. See [config.txt](https://help.raritan.com/pdu-g4/4.2.0/#showid/103108). | | devices.csv | This file is required only when there are device-specific settings to configure for multiple devices. See [devices.csv](https://help.raritan.com/pdu-g4/4.2.0/#showid/103109). | | firmware.bin | This file represents the specific model's firmware file, which can be downloaded from the official web page for [PRO3X](https://www.servertech.com/support/pdu-g2/) or [PRO4X](https://www.servertech.com/support/pdu-g4/). The used file must work with the model. | - Create a new text file, called `fwupdate.cfg` and add the following content. Adjust the values for `set_password` to the correct new password. The following configuration example will read device-specific values from the `device.csv` file. each device is identified by its serial number. - Example: ***without*** Firmware Update ```plaintext user=admin password=admn set_password=newpassword logfile=log.txt config=config.txt device_list=devices.csv match=serial:1 ``` - Example: ***with*** Firmware Update ```plaintext user=admin password=admn set_password=newpassword logfile=log.txt config=config.txt device_list=devices.csv match=serial:1 firmware=pdug4-ixg4_combined-040210-50400.bin ``` Firmware update > The specified firmware file must be compatible with your device. The default is to NOT permit any firmware downgrade. To do this, the parameter "allow_downgrade" must be present and properly set in the fwupdate.cfg file. - Create a new text file called `device.csv`, by default the first column is used to identify the rack PDU. The example uses the serial number to identify each rack PDU. other columns can be defined as required. The column's names are used inside the config.txt file to define device-specific settings, like a hostname ```plaintext serial, hostname 123456, rpdu1 ``` - Create a new text file called `config.txt` and add the Rack PDU configuration settings see the official documentation for a detailed explanation. The following example configures the Rack PDUs SNMP settings. ```plaintext EXAMPLE ``` > [!WARNING] > Device Configuration > > Adjust values as needed and required. Ensure that username, password and SNMP settings which are configured match the values used to created the device template in Create a Rack PDU Device Template. #### 4.2 Upload of files to ZTP Datastore Now that all configuration files have been created they can be easily uploaded to the datastore which is used for the ZTP process. 1. In the WebUI navigate to Access. 2. Click **File Manager.** This opens a new window with Nodegrid file manager. ![servertech_ztp_14.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_14.png) 3. Navigate into the **datastore** folder. ![servertech_ztp_15.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_15.png) 4. Upload all created files into the datastore folder using the **Upload** option ![servertech_ztp_16.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_16.png) ## 5 Start the ZTP Process After the ZTP (Zero Touch Provisioning) environment is set up, the next step is to provision the Rack PDUs. All Server Technology PDUs will automatically initiate the Zero Touch Provisioning process when the controller restarts or when the Rack PDU is connected to the network. To begin, connect the Rack PDU's network interface to the Bold SR netS1 interface and power on the Rack PDU. The Rack PDU controller will then automatically reach out to the DHCP server to request a new IP address. As part of the DHCP response, the unit will receive the necessary ZTP information. The PDU will download the required files and apply the configuration. Simultaneously, the Nodegrid appliance will detect the Rack PDU and add it as a Managed Device. ![servertech_ztp_17.png](https://cdn.document360.io/763c5fb1-b9af-4ccd-9ad6-cf28ae4cd5a3/Images/Documentation/servertech_ztp_17.png) After the Rack PDU is configured, the unit can be accessed via the Nodegrid WebUI and the Outlets can be controlled directly from the Bold SR. ## 6 Appendix ### 6.1 Example dhcp.conf file ```plaintext #Events on commit {        set ClientIP = binary-to-ascii(10, 8, ".", leased-address);        set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));        set ClientHost = pick-first-value ( option host-name , "" );        set ClientVCI = pick-first-value ( option vendor-class-identifier , "" );        set client_identifier = binary-to-ascii(16, 8, ":", option dhcp-client-identifier);        execute("/usr/sbin/dhcpd_event.sh", ClientMac, ClientIP, ClientHost);        execute("/usr/sbin/dhcpd_fixed_address_lease", "--ipv4", "--lease", ClientIP, "--", "hardware_ethernet", ClientMac, "client_identifier", client_identifier, "ClientIP", ClientIP, "vendor-class-identifier", ClientVCI, "client-hostname", ClientHost); } option space servertech hash size 3; option servertech.identifier code 1 = text; option servertech.ztp-url code 2 = text; set vendor-string = option vendor-class-identifier; option space RARITAN code width 1 length width 1 hash size 3; option RARITAN.pdu-tftp-server code 1 = ip-address; option RARITAN.pdu-update-control-file code 2 = text; option RARITAN.pdu-update-magic code 3 = text; option RARITAN.pdu-model code 4 = text; option RARITAN.pdu-serial code 5 = text; option RARITAN.pdu-cascading-info code 6 = text; option RARITAN.pdu-http-uri-base code 7 = text; option local-encapsulation code 43 = encapsulate RARITAN; class "servertech-ztp" { match if substring (option vendor-class-identifier, 0, 10) = "ServerTech"; vendor-option-space servertech; option servertech.identifier "STI Params"; option servertech.ztp-url "tftp://192.168.100.1/datastore/config-servertech-${mac}.ini"; } class "raritan" { match if option vendor-class-identifier = "Raritan PDU 1.0"; vendor-option-space RARITAN; option RARITAN.pdu-tftp-server 192.168.100.1; option RARITAN.pdu-update-control-file "fwupdate-${mac}.cfg"; option RARITAN.pdu-update-magic "20240910-0001"; option vendor-class-identifier "Raritan PDU 1.0"; } subnet 192.168.100.0 netmask 255.255.255.0 { #range low_ip high_ip;        option domain-name "";        default-lease-time 86400;        max-lease-time 86400;        range 192.168.100.10 192.168.100.200; } ``` ### 6.2 Example tftpd file ```plaintext service tftp {        disable         = no        socket_type     = dgram        protocol        = udp        flags           = IPv6        wait            = yes        user            = root        group           = root        server          = /usr/sbin/in.tftpd        server_args     = -s /var/opt/tftpboot } ```