Web Stack Migration to Virtual Appliance

Moving to the Virtual Appliance from Web Stack is both an upgrade and a migration. It’s an upgrade to a new on-prem version of PrinterLogic, but it is also a migration to a different platform. Web Stack runs on a Windows server and the Virtual Appliance comes as a pre-installed Virtual Appliance running on Ubuntu server utilizing Docker containers and microservices. The MySQL database gets migrated during the process, which includes the configuration, printer drivers and reporting data.

Prerequisites and Requirements

Minimum System Requirements

Depending on the configured features and user count, the minimum requirements for the Virtual Appliance may increase. Use the recommendations below when creating your Virtual Appliance, but continue to monitor the CPU and RAM utilization and allocate additional resources as needed.

  • Four 3.5-4.0 GHz processors. Add two 3.5 GHz processors for each additional 15,000 users.
  • 16GB RAM for up to 15,000 users.
    • Add 2 CPUs / 8GB RAM for each additional 15,000 users.
    • Add a minimum of 2 CPUs and 4GB RAM if using the Internal Service Client.
    • Add 2 CPUs and 4GB RAM per 500 CPA/Simple Badge Release installations.
  • 150GB free hard disk space for the host disk.
  • There should be 50GB of free hard disk space on the persistent storage disk (add 4GB for every 100 printers).
  • There is a requirement for NTLMv2 to connect to the appliance-storage shared folder of the PrinterLogic Virtual Appliance.

Authorization codes are required on the Virtual Appliance. This will ensure communication and security between the client and Virtual Appliance.

Readiness Checklist

  1. Web Stack instance must be at version 19.1 Service Pack 3.
  2. MySQL must be version 8 or higher. Contact PrinterLogic support for instructions to upgrade MySQL.

    If an update needs to be made, as a best practice, make sure to make a backup of the printer_installer database before performing the MySQL update.

  3. MySQL configured to allow external access.
    1. Locate your root password. This is found in c:\inetpub\wwwroot\config\settings.php
    2. Open a MySQL command prompt from the Web Stack server and run the following query (all on one line):

      use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;

    3. Copy Code
      use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;
    4. When you are prompted for a password, enter the root password obtained in step a.

  4. DNS configured properly.
    1. Identify a FQDN to use for the PrinterLogic Virtual Appliance (i.e., printerlogic.mycompany.com).
    2. Create an A record in DNS (i.e., printerlogic.mycompany.com) that points to the IP address of the Virtual Appliance.
    3. Create a CNAME record in DNS (i.e., *.printerlogic.mycompany.com) that points to the A record above (i.e., printerlogic.mycompany.com)
  5. SSL certificates created and available.
    1. The SubjectAlternativeName extension must list the two DNS entries above (i.e., printerlogic.mycompany.com and *.printerlogic.mycompany.com). In depth information can be found in the Virtual Appliance SSL Certificates document.
  6. Verify if your current Web Stack instance is configured to use authorization codes and if the clients were installed with authorization codes. This will help determine the type of cut-over performed.
    1. Check the OAUTH_ENABLED and ALWAYS_GRANT_READ_INSTANCE_SCOPE in the C:\inetpub\wwwroot\.env file.
      1. If ALWAYS_GRANT_READ_INSTANCE_SCOPE=false and OAUTH_ENABLED=true, this indicates that Auth Codes are being used. You can then check to see if you have a non-expiring Auth Code by going to Tools > Authorized Devices in the Admin Console. If so, then Auth Codes won’t be an issue if a DNS cut-over is desired.
      2. If ALWAYS_GRANT_READ_INSTANCE_SCOPE=true and OAUTH_ENABLED=true, this indicates that Auth codes aren’t being used, but the handshake has been authorized. Therefore, a DNS cut-over can still be successful. If it is not, it would require a reinstallation of clients. A Client Cut-over is the recommended option in this case.
      3. If ALWAYS_GRANT_READ_INSTANCE_SCOPE=true and OAUTH_ENABLED=false, this indicates Auth Codes are not required and are not being used. A DNS cut-over would require a client to reinstall during the cut-over, which will be challenging to do if all workstations are not accessible during cut-over. A Client Cut-over is the recommended option in this case.
  7. Open ports for DB access from your machine:
    1. TCP 3306 - MySQL
    2. TCP 80 - HTTP
    3. TCP 443 - HTTPS
    4. TCP 8000 - Configuration API
    5. TCP 8080 - Configuration UI
    6. TCP 445 - SMB

Migration Stages

  1. Ensure the readiness checklist is complete.
  2. Decide on type of cut-over desired (DNS cut-over vs. Client cut-over). Note the requirements above for DNS cut-over.
  3. Deploy the Virtual Appliance using a supported hypervisor:
    1. Hyper-V
    2. Workstation Pro
    3. ESXi
    4. Google Cloud Platform
    5. New Install: Virtual Machine Manager

    (Hypervisor deployment steps are also included in Step 6 of each cutover option below)

  4. Perform the migration from Web Stack to the newly configured Virtual Appliance.
    1. DNS Cut-over
    2. Client Cut-over

Option 1 – Client Cut-over

With this method, you will end up with a different FQDN than the current prod environment. It also requires a re-install of the client, which gets it re-homed and updated. The advantage of this method is that you can do more testing of the Virtual Appliance environment and you don’t have the downtime of a single all-at-once cut-over. Another advantage is you don’t have to create two sets of license files, DNS records and cert files.

A potential downside of this method is you have to re-install all the clients to achieve the cut-over and you have to choose a different FQDN.

Client Cut-over Steps

This example will use printers.company.org as the production FQDN running on Web Stack. The Web Stack server’s host name is server1.company.org and is also listed in the license file. The FQDN for the Virtual Appliance will be printers2.company.org. After the cut-over, the production FQDN will be printers2.company.org.

  1. If Web Stack is not running on version 19.1 SP3, perform an upgrade to 19.1 SP3.
  2. If the version of MySQL is 5.5, upgrade MySQL to version 8 or higher.
    • Contact PrinterLogic support for instructions to upgrade MySQL at support@printerlogic.com.
  3. Create a DNS A record for the FQDN of the Virtual Appliance (printers2.company.org) and a wildcard CNAME record for the wildcard underneath the FQDN of the Virtual Appliance (*.printers2.company.org) which points to the FQDN of the Virtual Appliance (printers2.company.org).
  4. [Optional] If you plan on using any features that require HTTPS, create both:
    • A SAN certificate (following the Virtual Appliance SSL Certificates) for the FQDN of the Virtual Appliance (printers2.company.org)
    • And the wildcard underneath the FQDN of the Virtual Appliance (*.printers2.company.org),
  5. Download the latest Virtual Appliance image. Release Notes 2024.
    • Links are also included in the drop-downs below.
  6. Deploy the image to your hypervisor.
  7. If not already started, start the Virtual Appliance.
  8. For VM Workstation Pro, HyperV, and ESXi hypervisors ONLY. (For AWS and Google Cloud Platform skip to Step 9.)
    • Launch the remote VM console of your hypervisor and login to the Virtual Appliance Console with the network user credentials specified. Configure TCP/IP settings as applicable (use either manual settings or DHCP reservation).
    • The Virtual Appliance starts as a DHCP client. It’s possible to leave it that way and configure the TCP/IP settings via DHCP Reservation. Otherwise, use the steps below to configure a static IP and to optionally change the private IP range that the Virtual Appliance uses by default so that it doesn’t conflict with existing subnets in the environment.
  9. Run the Virtual Appliance Configuration UI by navigating to http://VA_IP_Address:8080 .

    VA configuration wizard with the orange Lets do this button in the lower middle.

  10. On the Configure Storage page, select VM-Attached Virtual Disk for the Storage Type and click Format Attached Storage.

    Configure Storage tab of wizard displaying the Storage Type drop-down and the Format Attached Storage button.

  11. Choose the Upgrade my Current Instance option.

    VA wizard interface with and arrow pointing to the Upgrade my Current Instance button.

  12. On the Migrate Database page, enter the FQDN of the production Web Stack instance (printers.company.org) in the Host field.

    Migrate Database window showing the field for Host highlighted in the middle.

  13. Enter in your Username and Password.

    Migrate Database tab with the Username and Password fields highlighted.

  14. Enter the APP_KEY from your Web Stack instance.

    Migrate database tab with the field for the App Key highlighted.

  15. By default, the Web Stack MySQL instance is configured to only allow local connections. If the MySQL Connection Test fails on this step, this restriction can be lifted so that the Virtual Appliance Migration can access the production MySQL database.

    Run the following command at a MySQL Command Prompt on the production Web Stack server (the MySQL root password can be found inside the c:\inetpub\wwwroot\config\settings.php file on the production Web Stack instance):

    use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;

    Copy Code
    use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;

    To revert this setting, run the following command at a MySQL Command Prompt on the production Web Stack server:

    use mysql; update user set host='localhost' where user='root' and host='%'; flush privileges;

    Copy Code
    use mysql; update user set host='localhost' where user='root' and host='%'; flush privileges;
  16. On the General Settings page, enter the FQDN of the Virtual Appliance (printers2.company.org) in the Domain Name field. Keep the suggested Shared Storage Password or set it to something else, and click Continue. Ensure you document the password!

    Va wizard General Settings tab with the Domain Name and Shared Storage Password highlighted.

  17. Request that your PrinterLogic representative give you your Virtual Appliance license that will match your Web Stack license capabilities, except use the new FQDN of the Virtual Appliance (printers2.company.org).

    General Settings tab with the License file field and Upload button highlighted.

  18. [Optional] If you created a SSL certificate for the Virtual Appliance, upload the certificate and key here, and click Continue.

    General Settings tab with the SSL Certificate, SSL Key, and their related Upload buttons highlighted.

  19. Select Continue on the Setup Database page.
  20. Click the final Finish Upgrade button and wait for it to complete.

    VA Wizard, Let's Migrate your WebStack database tab with an arrow pointing to the Start Migration button.

    A large database could take a couple hours to complete.

  21. Perform any testing with clients that are re-homed to printers2.company.org.
  22. After successful testing, setup the uninstall/reinstall script and start pushing it out.

    1. To uninstall/reinstall the client follow these steps:
      1. In Apps and Features, uninstall the Printer Installer Client.
      2. Delete the following directory on the workstation: C:\Program Files (X86)\Printer Properties Pro
      3. Install new client with new URL and Auth Code.

    Further information on Installing and Uninstalling the Client can be found in the PrinterLogic Client section.

  23. New clients will start pointing to the Virtual Appliance and old clients will continue to point to Web Stack until they are updated.
  24. After all the clients are converted, have your PrinterLogic representative update the prod license file to reflect the new single URL .
  25. Copy the license file to the /pi/storage folder on the shared drive.

Option 2 – DNS Cut-over

This method eliminates the need to re-install the clients during cut-over. However, you will still want to update the clients after migration, since the latest client provided by Web Stack does not support every new feature in the Virtual Appliance. The clients can be updated after the migration using the auto-update settings in the Admin Console.

You will use a different (temporary) FQDN during the migration so that you can access both the Virtual Appliance and the Web Stack server while testing. This will require a temporary DNS A/CNAME record and license file as well. When you are ready to cut-over, shut down Web Stack, change the FQDN of the Virtual Appliance, the DNS A/CNAME records, and the license file to the production FQDN. The next time the clients check in, they will be accessing the Virtual Appliance instead of Web Stack.

A potential downside of this method is that you can’t test the Virtual Appliance with the production FQDN prior to cut-over (unless you are able to change DNS temporarily during off-hours). Because the Virtual Appliance leverages DNS to communicate with the individual microservices internally, it's not possible to simply change the hosts file on a workstation to test connectivity to the Virtual Appliance using a different IP for the FQDN. The Virtual Appliance will still be pointing to the company's DNS servers, which will not include these temporary DNS settings -- the production FQDN will still resolve to the Web Stack instance, and the Virtual Appliance microservices will fail on name resolution. The FQDN of the Virtual Appliance must be changed in the secrets.env file at the same time DNS is changed.

When editing the secrets.env file, an editor like Notepad ++, Sublime Text, or Visual Studio Code must be used to ensure the file uses Unix line endings (LF only) and is saved in UTF-8 format with no byte-order mark.

DNS Cut-over Steps

This example will use printers.company.org as the production FQDN running on Web Stack. The Web Stack server’s host name is server1.company.org and is also listed in the license file. The temporary FQDN for the Virtual Appliance will be va.company.org. After the cut-over, the Virtual Appliance will be using printers.company.org.

  1. If Web Stack is not running on version 19.1 SP3, perform an upgrade to 19.1 SP3.
  2. If the version of MySQL is 5.5, upgrade MySQL to version 8 or higher.
    • Contact PrinterLogic support for instructions to upgrade MySQL at support@printerlogic.com.
  3. Create a DNS A record for the temporary FQDN of the Virtual Appliance (va.company.org) and a wildcard CNAME record for the wildcard underneath the temporary FQDN of the Virtual Appliance (*.va.company.org) which points to the temporary FQDN of the Virtual Appliance (va.company.org).
  4. [Optional] If you plan on using any features that require HTTPS, create both:
    • A temporary SAN certificate (following the Virtual Appliance SSL Certificates) for the temporary FQDN of the Virtual Appliance (va.company.org).
    • And the wildcard underneath the temporary FQDN of the Virtual Appliance (*.va.company.org).
  5. Download the latest Virtual Appliance image. Release Notes 2024.
    • Links are also included in the drop-downs below.
  6. Deploy the image to your hypervisor.
  7. If not already started, start the Virtual Appliance.
  8. For VM Workstation Pro, HyperV, and ESXi hypervisors ONLY. (For AWS and Google Cloud Platform skip to Step 9.)
    • Launch the remote VM console of your hypervisor and login to the Virtual Appliance Console with the network user credentials specified. Configure TCP/IP settings as applicable (use either manual settings or DHCP reservation).
    • The Virtual Appliance starts as a DHCP client. It’s possible to leave it that way and configure the TCP/IP settings via DHCP Reservation. Otherwise, use the steps below to configure a static IP and to optionally change the private IP range that the Virtual Appliance uses by default so that it doesn’t conflict with existing subnets in the environment.
  9. Run the Virtual Appliance Configuration UI by navigating to http://VA_IP_Address:8080

    VA configuration wizard with the orange Lets do this button in the lower middle.

  10. Choose the Upgrade my Current Instance option.

    VA wizard interface with and arrow pointing to the Upgrade my Current Instance button.

  11. On the Configure Storage page, select VM-Attached Virtual Disk for the Storage Type and click Format Attached Storage.

    Configure Storage tab of wizard displaying the Storage Type drop-down and the Format Attached Storage button.

  12. On the Migrate Database page, enter the IP Address of the production Web Stack instance (printers.company.org) in the Host field.

    Migrate Database window showing the field for Host highlighted in the middle.

  13. Enter in your Username and Password.

    Migrate Database tab with the Username and Password fields highlighted.

  14. Enter the APP_KEY from your Web Stack instance.

    Migrate database tab with the field for the App Key highlighted.

  15. By default, the Web Stack MySQL instance is configured to only allow local connections. If the MySQL Connection Test fails on this step, this restriction can be lifted so that the Virtual Appliance Migration can access the production MySQL database.

    Run the following command at a MySQL Command Prompt on the production Web Stack server (the MySQL root password can be found inside the c:\inetpub\wwwroot\config\settings.php file on the production Web Stack instance):

    use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;

    Copy Code
    use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges;

    To revert this setting, run the following command at a MySQL Command Prompt on the production Web Stack server:

    use mysql; update user set host='localhost' where user='root' and host='%'; flush privileges;

    Copy Code
    use mysql; update user set host='localhost' where user='root' and host='%'; flush privileges;
  16. On the General Settings page, enter the temporary FQDN of the Virtual Appliance (va.company.org example used in image) in the Domain Name field. Keep the suggested Shared Storage Password or set it to something else, and click Continue. Ensure you document the password!

    Ensure that the entire FQDN is used and not just the domain name in the Domain field.
    Ensure you document and save the Shared Storage Password so you can access the Data Drive later as needed.

    General Settings page of the wizard with the Domain Name and Shared Storage password fields highlighted at the top.

  17. Request that your PrinterLogic representative create a trial license that will match your production license capabilities, except use the temporary FQDN of the Virtual Appliance (va.company.org).

    General Settings tab with the License file field and Upload button highlighted.

  18. [Optional] If you created a temporary SSL certificate for the Virtual Appliance, upload the certificate and key here, and click Continue.

    General Settings tab with the SSL Certificate, SSL Key, and their related Upload buttons highlighted.

  19. Select Continue on the Setup Database page.
  20. Click the final Finish Upgrade button and wait for it to complete.

    VA Wizard, Let's Migrate your WebStack database tab with an arrow pointing to the Start Migration button.

    A large database could take a couple hours to complete.

  21. Perform any testing with one or more clients that have been updated to point to the temporary FQDN of the Virtual Appliance (va.company.org).
  22. Schedule cut-over to the Virtual Appliance in production.
  23. Cut-over steps:

    1. [Optional] Install the updated PrinterLogic Client on end-user workstations (this can be done automatically after cut-over in the Virtual Appliance Admin Console by configuring client automatic updates.
    2. Shutdown the Web Stack server.
    3. Copy the production license file to the /pi/storage folder on the Virtual Appliance appliance-storage share, overwriting the existing.
    4. [Optional] Copy the new production Virtual Appliance certificate files (referenced above in the requirements section) to the certs folder on the Virtual Appliance appliance-storage share, overwriting the existing files. The SSL certificate files need to be named ssl.crt and ssl.key.
    5. Edit the secrets.env file at the root of the Virtual Appliance appliance-storage share and change the PRINTERCLOUD_DOMAIN variable to the production FQDN (printers.company.org).

      When editing the secrets.env file, an editor like Notepad ++, Sublime Text, or Visual Studio Code must be used to ensure the file uses Unix line endings (LF only) and is saved in UTF-8 format with no byte-order mark.

    6. Modify the existing DNS A record for the production FQDN (printers.company.org) to point to the IP address of the Virtual Appliance.
    7. Create a DNS CNAME record for the wildcard underneath the production FQDN (*.printers.company.org) and point it to the production FQDN (printers.company.org).
    8. Reboot the Virtual Appliance. Once the Virtual Appliance is in a “Running” state, clients should be able to connect.

Features Impacting Migrations

Data Warehouse

If you are currently using the Data Warehouse feature, you will lose that capability until PrinterLogic releases the new reporting API.

Mobile Printing

The migration will create a Service Client object “Service Client Migrated” if Web Stack didn’t have one defined. It will place any Mobile Print settings on the SC, but they will not be functional because Mobile Print needs to run on an external SC. If you had a SC already on Web Stack, the settings will reside there. You will need to create an external SC and copy those settings over.

Control Panel Application

If you are using the CPA on any printers, it is recommended that you uninstall them prior to cut-over and then reinstall from the Virtual Appliance.

Simple Badge Release

If you are using Simple Badge Release, it is recommended that the configuration be undone prior to cut-over and then reconfigure with the new SBR interface.

External Service Client

Uninstall existing external Service Clients, and set them up again after cut-over.