When I started working with Splunk, our installations were mostly small with less than 10 servers and the rest of the devices mainly involved switches, routers, and firewalls. In the current environments which we manage most installations have more than three hundred servers which are impossible to manage without some form of automation. As you manage your environment over time, one of the following scenarios will make you appreciate the deployment server:
- You need to update a TA (technology add-on) on some, if not all, of your Universal Forwarders.
- Your logging needs changed over time and now you need to collect more or less data from your Universal Forwarders.
- You’re in the middle of investigating a breach, and/or an attack, and need to quickly push a monitoring change to your entire environment. – How cool is that!
What is a Deployment Server?
A deployment server is an easy way to manage forwarders without logging into them directly and individually to make any changes. Forwarders are the Linux or Microsoft Windows servers that you are collecting logs from by installing the Splunk Universal Forwarder.
Deployment servers also provide a way to show you which server has which Apps and whether those servers are in a connected state or offline.
Please note that whether you use Splunk Cloud or on-prem, the Universal Forwarders are still your responsibility and I hope that this blog will provide you with some good insights.
Deployment Server Architecture:
The below image shows how a deployment architecture looks conceptually.
There are three core components of the deployment server architecture:
- Deployment Apps
Splunk Apps that will be deployed to the forwarders.
- Deployment Client
The forwarder instances on which Splunk Apps will be deployed.
- Server Classes
A logical way to map between Apps and Deployment Clients.
- You can have multiple Apps within a Server Class.
- You can deploy multiple Server Classes on a single Deployment Client.
- You can have the same Server Class deployed on multiple Clients.
How Deployment Server Works:
- Each deployment client periodically polls the deployment server, identifying itself.
- The deployment server determines the set of deployment Apps for the client based on which server classes the client belongs to.
- The deployment server gives the client the list of Apps that belong to it, along with the current checksums of the Apps.
- The client compares the App info from the deployment server with its own App info to determine whether there are any new or updated Apps that it needs to download.
- If there are new or updated Apps, the Deployment Client downloads them.
- Depending on the configuration for a given App, the client might restart itself before the App changes take effect.
Where to Configure the Deployment Server:
The recommendation is to use a dedicated machine for the Deployment Server. However, you can use the same machine for other management components like “License Master”, “SH Cluster Deployer” or “DMC”. Do not combine it with Cluster Master.
I started writing this in a loose format explaining the concepts but quickly realized that a step by step is a much easier method to digest the process
1. Create a Deployment Server
By default, a Splunk server install does not have the deployment server configured and if you were to go to the GUI and click on settings, forwarder management, you will get the following message.
To enable a deployment server, you start by installing any App in $SPLUNK_HOME/etc/deployment-apps directory. If you’re not sure how to do that, download any App that you want through the GUI on the server you want to configure (see the example below)
and then using the Linux shell or Windows server Cut/Paste, mv the entire App directory that was created from $SPLUNK_HOME/etc/apps where it installs by default to $SPLUNK_HOME/etc/deployment-apps. See below:
This will automatically allow your Splunk server to present you with the forwarder management interface
2. Manage Server Classes Apps and Clients
Next, you will need to add a server class. Go to Splunk UI > Forwarder Management > Server Class. Create a new server class from here.
Give it a name that is meaningful to you and your staff and go to Step 3
3. Point the Clients to this Deployment Server
You can either specify that in the GUI guided config when you install Splunk Universal Forwarder on a machine or by using the CLI post installation
Splunk set deploy-poll <IP_address/hostname>:
IP_Address – IP Address of Deployment Server
management_port – Management port of deployment server (default is 8089)
4. Whitelist the Clients on the Deployment Server
Go to any of the server classes you just created, click on edit clients.
For Client selection, you can choose the “Whitelist” and “Blacklist” parameters. You can write a comma-separated IP address list in the “Whitelist” box to select those Clients
5. Assign Apps to Server Classes:
Go to any of the server classes you just created, and click on edit Apps.
Click on the Apps you want to assign to the server class.
Once you add Apps and Clients to a Server Class, Splunk will start deploying the Apps to the listed Clients under that Server Class.