This article provides step-by-step instructions for migrating your Aria Config RaaS (Returner as a Service) daemon from a containerized microservice deployment to a standard RPM-based deployment on the same RHEL 8 host.
The core concept of this migration is transitioning the RaaS daemon from a container runtime to a native host-level service. Because you are performing an in-place migration on the same host, the FQDN and IP address will remain unchanged. As long as you retain the /etc/raas/pki/.raas.key file—which allows the RaaS daemon to decrypt the information in your database—you can safely stop the container and install the RaaS RPM directly on the host OS seamlessly.
VMware Aria Automation Config (formerly SaltStack Config) 8.18.0 to 8.18.3
The Aria Config RaaS daemon, previously provided as a containerized microservice relying on components such as NGINX, is now distributed as an RPM package for RHEL-based systems. Administrators must migrate their existing containerized workloads to the new RPM format to resolve identified security vulnerabilities and upgrade to the 8.18.3 release.
This procedure details an in-place migration of the RaaS daemon on its current host. The expected outcome of this process is that the RaaS service will seamlessly transition from running as a containerized application to a native systemd service installed via RPM. Because this migration occurs in-place, the RaaS node will retain its exact existing FQDN and IP address, ensuring no network adjustments are needed. This is an isolated migration of the RaaS daemon only; all other components (PostgreSQL, Redis/Valkey, Salt Master) will remain completely unaffected and continue to run in their existing locations.
NOTE: Before beginning any migration tasks, we strongly recommend creating a fresh database backup using your organization's standard PostgreSQL backup procedures. Please refer to standard database backup instructions for Aria Config prior to proceeding: https://knowledge.broadcom.com/external/article/312990/backing-up-and-restoring-your-postgresql.html
The majority of the commands required for this migration process necessitate administrative privileges on the host operating system.
Connect to your existing RaaS VM via SSH.
Elevate your session to the root user:
sudo -s
On the system hosting your current RaaS container, you must back up the configuration directory. This captures your vital .raas.key and configuration files in case they are modified during the RPM installation.
Ensure you are operating in a root terminal on the host OS.
Create a backup of the /etc/raas directory using the tar command:
tar -czvf /root/raas-config-backup.tar.gz /etc/raas
Securely store the raas-config-backup.tar.gz file, as it will be required to restore connectivity to the database if the /etc/raas directory is accidentally overwritten.
To avoid port conflicts, gracefully stop the existing RaaS container before installing the native service.
Identify the RaaS container ID. In most standard deployments, the RaaS container is the only container running on the host, or its container/image name explicitly includes raas. You can try finding it with:
docker ps | grep raas
Alternative Identification Methods: If the container is not easily identifiable by name, you can verify the correct container using these methods:
Listening Ports: The Aria Config RaaS service typically binds to web/API ports such as 443 , 8080 , or 80 . Check the PORTS column in the docker ps output.
Expected Mounted Directories: The RaaS container must have the local configuration directory mounted. Look for a container that maps a volume to /etc/raas (you can verify mounts using docker inspect <container_id>).
Stop the container image using the identified ID:
docker stop <RAAS_CONTAINER_ID>
Once stopped, the required network ports on the host will be freed up for the new RPM-based service to bind to.
Before proceeding with the deployment, confirm whether the RaaS RPM package is already installed on your host. You can check this using standard dnf or rpm commands.
Run the following command to check for an existing installation:
rpm -qa | grep raas
(Alternatively, you can use dnf list installed raas)
If the package is not installed: Proceed to Step 5 to perform the installation.
If the package is already installed: Then proceed to review the instructions for how to upgrade using the standard documentation: https://techdocs.broadcom.com/us/en/vmware-cis/other/vmware-salt/8-18/using-vmware-salt/installation-for-administrators-and-deployment/upgrade-to-vcf-salt/upgrading-to-vcf-salt/vcf-salt-application-upgrade-steps.html
Proceed with the RPM installation directly on the host OS.
Note: Architectural enhancements in recent releases introduce new environmental and security isolation prerequisites. Failure to properly isolate the raas service account home directory or clear legacy directories can result in upgrade failures, schema upgrade deadlocks, or database credential authentication errors. The following steps incorporate the remediation for these prerequisites.
Installation of the RaaS RPM may require installation of additional dependencies. See the official installation documentation for additional info (https://techdocs.broadcom.com/us/en/vmware-cis/other/vmware-salt/8-18/using-vmware-salt/installation-for-administrators-and-deployment/vcf-salt-installation-overview.html). If you are on Red Hat Enterprise Linux, then you may need to have an active subscription via Red Hat’s built-in subscription-manager CLI tool. Install the newly distributed RaaS RPM package provided by Broadcom:
dnf install <path_to_raas_rpm_file>.rpm
Note: The information and remediation steps beginning in step 2 below are sourced from this KB article: https://knowledge.broadcom.com/external/article/443389/database-upgrade-fails-and-raas-service.html
Artifact Cleanup: Identify and clear out legacy state directories to prevent initialization conflicts.
rm -fRv /var/lib/raas
Secure State Directory Allocation: Create an isolated home directory for the raas service account. This allows the application to store runtime state without granting write access to the binary execution path (/opt/saltstack/raas/).
mkdir -p /app/raas
chown -R raas:raas /app/raas
Service Account Profile and Certificate Configuration: Reconfigure the service account profile to utilize the newly created isolated home directory, and enforce explicit ownership over the PKI path.
usermod -d /app/raas raas
chown -Rv raas:raas /etc/pki/raas
Secure Database Credential Re-Initialization: To prevent credential logging in plain-text .bash_history files, securely reset the PostgreSQL user password via the interactive psql password prompt.
psql -U postgres
\password salt_eapi
Virtual Environment Activation and Schema Upgrade: Switch the session context to the raas user, set the environment variables, activate the daemon's Python virtual environment, generate the raas.secconf file, and perform the necessary database schema upgrade.
sudo -u raas /bin/bash
export HOME=/app/raas
export PATH=/opt/saltstack/raas/bin:$PATH
source /opt/saltstack/raas/bin/activate
raas -l debug save_creds postgres='{"username": "salt_eapi","password":"<DB_PASS>"}' redis='{"username":"<REDIS_USER>","password":"<REDIS_PASS>"}'
raas -l debug upgrade
exit
Crucial Configuration Check: Since this is an in-place migration, your custom configuration files and .raas.key should already reside in /etc/raas. Verify that your custom settings are intact. If the RPM installation altered your configuration, restore the files from your backup:
tar -xzvf /root/raas-config-backup.tar.gz -C /
Update Ownership: The RPM installation creates a new raas user on the host OS. Because the /etc/raas files were previously accessed via a container, you must ensure the new local raas user has proper ownership of the directory and the .raas.key file:
chown -R raas:raas /etc/raas
Enable and start the new RaaS systemd service:
systemctl enable --now raas
systemctl status raas
Once you have verified that the new RPM-based RaaS daemon is running, successfully connecting to the database, and servicing your salt-masters, you should archive the old container state for emergency restoration before fully deleting it.
Commit the container state to an image to capture any runtime changes:
docker commit <RAAS_CONTAINER_ID> raas-emergency-archive
Save the image as a tarball:
docker save -o raas-container-archive.tar raas-emergency-archive
Move raas-container-archive.tar to your secure backup storage.
Emergency Rollback: If you ever need to perform an emergency rollback to the containerized version, you can disable the new raas service (systemctl disable --now raas) and restore the archived container using the command docker load -i raas-container-archive.tar.
Cleanup: Once the archive is safely stored, you may completely delete the old container and its base images from the Docker host to free up disk space.