Ansible Quickstart Examples#
This section contains examples for how to set up a Squirro installation using Ansible. Please refer to the full documentation at Install and Manage Squirro with Ansible for more information.
Basic Setup#
If you’re looking for a quick single server setup of the latest Squirro release, follow the steps below.
Secure a Rocky Linux 8, Red Hat Enterprise Linux 8, or Red Hat Enterprise Linux 7 Linux server. Squirro recommends AWS, GCP, Azure, Hetzner Cloud, or any physical server.
For development, Vagrant is a great choice, but any VM solution such as VirtualBox, Proxmox, VMware Workstation/Fusion/Player, etc. will work.
Ensure your setup meets the requirements detailed in System Requirements.
Log in to the server and become root.
Install Ansible using the following commands:
yum install -y epel-release yum install -y ansible
Note: Ansible is a Python application and can also be installed using pip.
Unzip the downloaded Squirro Ansible Module using the following command:
unzip squirro-ansible-x.x.x-release.zip
Note: Replace
x.x.x
with the desired version number. If there is no version that matches the exact Squirro version you’re using, use the latest squirro-ansible version in the same minor version. E.g. if you are using Squirro 3.6.9, use the latest squirro-ansible release in the 3.6.x series.Edit
playbook-quickstart.yml
to and edit the yum username and password to match your Squirro mirror username and password.Example code shown below:
- name: Quickstart Install Squirro hosts: all become: true vars: squirro_clusternode: True squirro_storagenode: True yum_user: ... yum_password: ... squirro_channel: stable squirro_version: latest elasticsearch_discovery_type: single-node roles: - role: squirro-ansible
Install Squirro using the following command:
ansible-playbook --connection=local --inventory 127.0.0.1, playbook-quickstart.yml
Note
Depending on your system, the installation can take 15 to 20 minutes.
Open the HTTP and HTTPS port on the firewall as shown below:
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https
Validate if all services are running using the following command:
squirro_status
Access the service at
https://your-sytems-ip
orhttp://your-systems-ip
.
Note
To learn how to use Squirro, visit the Squirro Academy.
Offline Installation#
If your machine cannot reach mirror.squirro.net, you can install Squirro offline as shown below:
- name: Offline Squirro
hosts: all
become: true
vars:
squirro_clusternode: True
squirro_storagenode: True
squirro_install_mode: offline
squirro_packages_tar: /path/to/os-n.n-stable-x86_64-n.n.n.tar.gz
squirro_channel: stable
squirro_version: latest
elasticsearch_discovery_type: single-node
roles:
- role: squirro-ansible
The corresponding tar.gz
file can be downloaded from the mirror.
Example: For Rocky Linux 8, you can get the correct package from: https://mirror.squirro.net/rocky/8/stable/x86_64/
.
If you expect to run multiple installations, you can speed things up by extracting the tar.gz
file and placing it on a shared file system, as shown below:
- name: Offline Squirro
hosts: all
become: true
vars:
squirro_clusternode: True
squirro_storagenode: True
squirro_install_mode: filesystem
yum_repo_folder: /path/to/offline/yum/repo
squirro_channel: stable
squirro_version: latest
elasticsearch_discovery_type: single-node
roles:
- role: squirro-ansible
This can be faster as the unzipping will not take place each time.
Note: The yum_repo_folder
variable needs to point at the location that contains the repodata
folder.
AWS Standalone Playbook#
Expanding on the quickstart example, on Amazon Web Services, when deploying Squirro, it is best practice to leverage managed services to increase availability and enable horizontal scaling.
In the example below, the following are leveraged:
RDS to externalize MariaDB / MySQL
ElastiCache to externalize the Key/Value Store
ElastiCache again to externalize the In-Memory Cache
EFS as a shared file system
These resources can be spun up manually in the AWS web console.
Important: Squirro highly recommends you leverage infrastructure automation solutions such as AWS CloudFormation or Terraform.
Once complete, edit the playbook-quickstart-aws.yml
file to fill in all the blanks and adjust the RDS and ElastiCache endpoints, credentials, and IP addresses.
- name: Quickstart Install Squirro on AWS
hosts: all
become: true
vars:
squirro_clusternode: True
squirro_storagenode: True
yum_user: ...
yum_password: ...
squirro_channel: stable
squirro_version: latest
elasticsearch_squirro_cluster_name: squirro-quickstart
elasticsearch_cluster_nodes: ['10.1.0.2', '10.1.0.3', '...']
elasticsearch_network_interface: eth0
remote_mysql_server: True
mysql_host: yourproject-db.abcdefghij.eu-central-1.rds.amazonaws.com
mysql_root_user: root
mysql_root_password: ...
mysql_shared_service_password: ...
remote_redis_server: True
redis_tls: True
redis_storage_host: master.storage-abcdefgh.euc1.cache.amazonaws.com
redis_storage_port: 6379
redis_storage_password: ...
redis_cache_host: master.storage-abcdefgh.euc1.cache.amazonaws.com
redis_cache_port: 6380
redis_cache_password: ...
remote_filesystem: True
remote_filesystem_path: /mnt/efs/squirro
roles:
- role: squirro-ansible
You then run the same steps as under the Quickstart section to install Ansible, but instead run this command to execute the install:
ansible-playbook --connection=local --inventory 127.0.0.1, playbook-quickstart-aws.yml
You can now repeat this on each EC2 instance.
Tip: For production deployments, Squirro typically recommends at least three instances.
This procedure can be fully automated with Cloud-init user data methods to bootstrap new instances or even to build AMI images using frameworks such as Packer.
Caution
This only serves as an example, for full production readiness you will need to delegate the secrets to a secrets manager (e.g. Hashicorp Vault) and also leverage the AWS EC2 discovery plugin for Elasticsearch.