Generic deployment guidelines
Depending on the desired deployment scenario, there are a handful of different alternatives that can be approached for a particular customer installation.
The Devo Endpoint Agent installation process is flexible to allow a number of deployment models by using a specific inventory file. In this document, the most common scenarios are depicted, as well as the list of additions to the inventory that are required to fulfill those. Thus, each subsection can be considered as an installation step that offers different alternatives for completion, and not a step-by-step installation procedure.
If there is any special need not covered in this guideline, contact Devo for more detailed information.
The inventory
The deployment of the Endpoint Agent is done via Ansible playbooks. The playbook instruments need steps to deploy the platform according to your needs, defining what and where you want to deploy every component. To do so, the Ansible playbooks use a YAML inventory file (How to build your inventory — Ansible Documentation) to understand what tasks are needed to accomplish this. The YAML inventory file is the core of the deployment and it is very important to have clear what type of deployment you want to achieve and to create a valid inventory file before starting the deployment process.
When preparing a new deployment of the Endpoint Agent, it is important to have in mind some questions:
The Endpoint Agent provides several YAML templates to base your inventory file in, depending on the case that you are trying to deploy. An Ansible YAML inventory file is composed of three main sections:
| This section defines all the variables that are going to be used in the tasks during the playbook run. |
| This section defines the information related to the hosts where the solution is going to be deployed. It can include one or more hosts, and it is composed of blocks named after the hostname of the destination host. |
| This section defines the topology that is going to be deployed. You can define host groups with a specific name and include the hosts defined in the The pre-defined host groups are the following:
|
Standalone deployment template
The below snippet is a valid inventory file for a standalone deployment.
all:
vars:
deam_fqdnname: << FQDN >>
dea_ap_builder_update_etc_host: << yes/no >>
dea_ap_overwrite_deam_fqdnname: << PUBLIC_HOST_IP >>
set_deam_fqdnname_as_hostname: false
deam_admin_username: << ADMIN_USER >>
deam_admin_passwd: << ADMIN_PASS >>
dea_ap_repo_user: << REPO_USER >>
dea_ap_repo_passwd: << REPO_PASS >>
deam_redis_address: << REDIS_ADDRESS:PORT >>
deam_mysql_address: << MYSQL_ADDRESS:PORT >>
deam_relay_entrypoint: << ENTRYPOINT_URL >>
deam_packs_enabled:
- configuration.yaml
- events.yaml
- fetchfiles.yaml
- performance.yaml
- status.yaml
hosts:
<< HOST_NAME >>:
ansible_host: << HOST_IP >>
ansible_user: << HOST_USER >>
ansible_ssh_pass: << HOST_PASS >>
# Only required if you connect with password
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
ansible_python_interpreter: << PYTHON_INTERPRETER >>
children:
devoeamanagerserverone:
hosts:
<< HOST_NAME >>:
deamintsrvs:
hosts:
<< HOST_NAME >>:
deaagentpackager:
hosts:
<< HOST_NAME >>:
selfsigenedcertificates: # Alternative providedcertificates
hosts:
<< HOST_NAME >>:
vars:
#If no Subject Alternate Names are required, completely remove the SAN_extensions block.
SAN_extensions:
- IP: << HOST_PUBLIC_IP >>
- DNS: << HOST_FQDN >>
- DNS: << HOST_FQDN_2 >>
Check the descriptions of the parameters below:
Distributed deployment template
The following template is a deployment of Endpoint Agent with two EA Managers using existing databases. This deployment also requires a Load Balancer to be placed between the endpoints and the two EA Managers.
all:
vars:
deam_fqdnname: << FQDN >>
dea_ap_builder_update_etc_host: << yes/no >>
set_deam_fqdnname_as_hostname: false
deam_admin_username: << ADMIN_USER >>
deam_admin_passwd: << ADMIN_PASS >>
dea_ap_repo_user: << REPO_USER >>
dea_ap_repo_passwd: << REPO_PASS >>
deam_redis_address: << REDIS_ADDRESS:PORT >>
deam_redis_password: << REDIS_PASSWORD >>
deam_mysql_address: << MYSQL_ADDRESS:PORT >>
deam_mysql_database: << MYSQL_DATABASE_NAME >>
deam_mysql_username: << MYSQL_USER >>
deam_mysql_password: << MYSQL_PASSWORD >>
deam_relay_entrypoint: << ENTRYPOINT_URL >>
deam_packs_enabled:
- configuration.yaml
- events.yaml
- fetchfiles.yaml
- performance.yaml
- status.yaml
hosts:
<< HOST_NAME_SERVER_1 >>:
ansible_host: << HOST_IP >>
ansible_user: << HOST_USER >>
ansible_ssh_pass: << HOST_PASS >>
# Only required if you connect with password
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
ansible_python_interpreter: << PYTHON_INTERPRETER >>
<< HOST_NAME_SERVER_2 >>:
# Set ansible_host your public ip used to conncet from ansbile and devo-ea agents
ansible_host: << HOST_IP >>
ansible_user: << HOST_USER >>
ansible_ssh_pass: << HOST_PASS >>
# Only required if you connect with password
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
# python3 required for Ubuntu 18 ansible-playbooks
ansible_python_interpreter: << PYTHON_INTERPRETER >>
children:
devoeamanagerserverone:
hosts:
<< HOST_NAME_SERVER_1 >>:
devoeamanagerreplicas:
hosts:
<< HOST_NAME_SERVER_2 >>:
vars:
deam_am_i_replica: true
deamintsrvs:
hosts:
<< HOST_NAME_SERVER_1 >>:
deaagentpackager:
hosts:
<< HOST_NAME_SERVER_1 >>:
<< HOST_NAME_SERVER_2 >>:
selfsigenedcertificates: # Alternative providedcertificates
hosts:
<< HOST_NAME_SERVER_1 >>:
Check the descriptions of the parameters below:
Deployment credentials
The Devo EA Deployer uses SSH to connect to the different servers where it needs to install different components. When configuring the hosts in the inventory file, it is necessary to configure the SSH user and authentication method that the deployer needs to use in each task.
Initial packs configuration
From v1.1.0 onwards, the Endpoint Agent deployer enables customers to decide which query packs are deployed with the solution, as opposed to all of them being added automatically during the installation process. Therefore, the installer must decide which packs to add to the baseline configuration to fulfill the customer’s particular needs and use cases. The complete list of available packs, along with a description of their functionality and set of supported use cases, can be found in the preintegrated query packs section.
The process to enable packs is handled with two parameters in the inventory file:
1 |
| Sets what packs to be deployed when running both In the following example, only the configuration (represented by The file names included in this list come from the files placed in |
2 |
| Use this option when you do not want to deploy a pack anymore. Once the packs are deployed for the first time, they are cached under ( In the following example, the installation user is deploying only the |
Python Interpreter
When deploying in CentOS 7 or Red Hat 7 OS, make sure that the host is configured to use python 2 instead of python 3 in the inventory file.
Endpoint Agent <> EA Manager communication
EA Manager <> Devo communication
Other special deployment cases
High availability configuration
Some deployment scenarios will require the deployment of more than one EA Manager to cater to all the traffic generated from the endpoints, and to ensure that high availability of the data processing and forwarding is observed. In this case, a specific configuration during the installation process is required to instruct the Devo EA Deployer how to instantiate those roles.
Devo EA Deployer will take care of deploying several EA Managers, but in order to provide a single entry point to the endpoints, it is necessary to set up a Load Balancer separately.
Databases installation
The EAM relies on MySQL and Redis for data (configurations, etc.) persistence. There are several scenarios to consider depending on the type of installation required for a particular customer.
The next section summarizes the most common alternatives for the deployment of the databases, as well as the procedure to implement them.
Devo EA Manager users and passwords
After a successful deployment of Devo EA Manager, two services that require authentication will be created. User and password can be configured to include your own passwords. If these parameters are not included in the inventory file, default values are used.
Devo EA Manager Web Interface (port 8080): To control the user and password for this service, the following parameters can be used in the inventory file:
#deam_admin_username: _Devo EA manager_ username for initial admin user setup. Default value: `admin`
deam_admin_username: admin
#deam_admin_passwd: _Devo EA manager_ password for initial admin user setup. Default value: `Th3Adm1n!`
duam_admin_passwd: Th3Adm1n!
Devo Endpoint Agent download (port 8081): To control the user and password for this service, the following parameters can be used in the inventory file:
Certificates
The Devo EA Deployer is configured to generate self-signed certificates and configure them by default but you can configure EA Deployer to use your own certificates.
It is recommended to use ECDSA certificates instead of RSA as TLS decryption in the EA Manager side is smoother and increases the performance significantly. The EA Deployer will generate ECDSA certificates by default when using self-generated certificates.
Example inventory files