Regardless of the service model that your company follows, server profiles help you achieve your goals. At a basic level, a server profile defines a format for the configuration of a server by combining the following files into a single concrete structure:
- Setup arguments
- Server SDK extensions
- Additional miscellaneous files
The primary goal of a server profile is to simplify the deployment of PingDataSync and related products by using deployment automation frameworks. When products support this capability, the amount of scripting that is required across automation frameworks — like Docker, Kubernetes, and Ansible — is reduced considerably.
The following image shows the role that a server profile plays in building a fully functional running server.
As a declarative form of a full server configuration, a server profile provides the following advantages:
- Provides a more complete and easily comparable way to define an individual server’s configuration. Changes between different servers are easier to understand, and incremental changes to a server’s configuration are easier to track.
- Ensures that each server instance is configured identically to its peers.
- Can be applied directly to new as well as previously installed instances.
- Shares a common configuration across a deployment pipeline of development, test, and production environments without unnecessary duplication. For information about substituting variables that differ by environment, see Variable substitution.
- Facilitates deployment automation by representing configuration as code.
- Reduces the number of additional configuration steps that are required to place a server into production.
- Makes the execution of various configuration changes more consistent and repeatable. The strategy of using a server profile to represent the final state of a server is less error-prone than recording a step-by-step process to attain that state.
- Can be managed easily in a version-control system.
- Simplifies the management of servers outside deployment automation frameworks.
A continuous deployment workflow can work with server profiles to make certain that changes to a server profile are moved automatically into production. In a stateful environment, the manage-profile replace-profile subcommand can be used to update existing servers. In a stateless environment, in which servers are considered immutable, manage-profile setup can be used to deploy new servers whenever a profile changes. With multiple environments, this deployment can be performed in a test environment before moving to production.
When working with zipped server SDK extensions and other files that might not be stored in a version-control system, the server profile can be modified to include these files prior to its use. For example, if the code for an extension is stored in a separate repository, it can be built and dropped into the server profile immediately before the manage-profile tool is run. This process is part of the deployment automation logic that uses the server profile, and it can be followed for any files that are needed by the server profile but whose versions are not controlled.
For more information about the manage-profile tool, see About the manage-profile tool.