Blue Medorathon 14 brought many cool projects, that add a lot of value to our business, and one project that we wanted to highlight was some great automation work done by none other than our very talented DevOps engineering team, specifically Joe Sirianni. The title says it all. Joe, took it upon himself to figure out how to make deploying BindPlane even easier than it already is, and he achieved this with great success! Now the reason for this may seem impossible since BindPlane can already be deployed through a few presses of your mouse. But now through the creation of our BindPlane CLI tool (BPCLI) and the integration of Terraform Provider(coming soon), nearly the whole process can be done for you automatically and intelligently.
BPCLI: What is it?
Our BindPlane CLI (BPCLI) is a lightweight open source utility that automates the deployment and configuration of all of your BindPlane sources, and collectors. On the front end, the tool is a very simple command line interface (CLI). On the back end, BPCLI manages several public BindPlane APIs that control Credentials, Jobs, Collectors and Sources. It simplifies interacting with these APIs based on common use cases. Joe has pretty much done all the heavy lifting to programmatically configure and control BindPlane, which is super useful when you have large on-premesis environments or deploy frequently in cloud environments (or you just live for the command line).
BPCLI: Getting Started
To get started with automating your deployment, all you will need to do is visit our GitHub repository, here you will find and download the BPCLI executable.
To do this, find the “README” text file found in the repo and follow the instructions to get everything you need to start. After you download what you need, using commands found here, you can use the BPCLI to connect your BindPlane account and export your BindPlane API key. Once your API connections have been set up, you will be able to create and edit your source credentials as well as create templates to help you with future configurations. The BPCLI also lets you easily run commands to grab a collector ID, apply the necessary credentials and configure your sources. Just like with credentials, it also has the ability to create source templates so that you can easily recreate similar source deployments. Once everything is set up, you can watch the Job status from the BPCLI to make sure everything is running smoothly. Now you can repeat this simple step-by-step process for any new sources you would like to configure.
This is great for managing sources in BindPlane. But if you want to automate the deployment of BindPlane collectors with dynamic infrastructure environments, or simplify a large initial setup, you’ll need something like Terraform. Below you will see the BPCLI being run to set up a source configuration.
Terraform: Intelligent Automation
Now, if you’re not familiar with it, Terraform is an open source infrastructure-as-code automation tool created by HashiCorp. Terraform enables easy collaboration as configurations can be stored in version control and be shared to the team of operators. Terraform providers are responsible for understanding API interactions and exposing resources. The Blue Medora Terraform provider for BindPlane really helps extend the automation capabilities of the BPCLI, allowing you to easily deploy, destroy and change BindPlane collectors in your environment—safely and securely. When the Terraform provider for BindPlane is live, you will also be able to find it in our public repository . When Terraform runs with the CLI, it will create a Postgres server, its credentials and a BindPlane collector on immediately. The animated gif below shows Terraform being applied to the system.
The BPCLI allows you to create, view, and list resources like your sources, collectors and templates through executing commands. Combined with the Terraform provider the tool can also create and destroy as many sources and collectors as you want (to an extent) declaratively. This means that along with being able to create everything for you, it can intelligently manage the relationships between the different sources, collectors and their credentials. The animated gif below shows an example of applying a change with Terraform
This is a really cool feature, because when you change or destroy a source or collector, Terraform automatically determines the dependencies between everything else in your BindPlane configuration, allowing it to prevent destroying anything that has multiple dependent processes, meaning you won’t have to dig around to see if anything was left floating or orphaned. When you run a change, it will prompt you with a check to make sure you want to make the change. Below is the prompt you receive when trying to destroy resources with Terraform
What Else can it do?
Along with integration, monitoring and an easy deployment, we also take security here at Blue Medora very seriously. Staying true to our values, the Terraform provider adds Vault support to the BPCLI right out of the box. Using Vault helps you protect your secrets like passwords, usernames and other sensitive data that you don’t want to show up when you run the command lines and ensures your secrets don’t show up if your code is made public. Another great feature of the Terraform provider interfaced with the BPCLI is it allows you to version and share your work across the team. This helps stop multiple people working on the same project from deploying at the same time and lets you revert to your previous work in case something goes wrong.
Get it all from our Repo
Well, what are you waiting for? The BPCLI is live today, head over to our GitHub public repository and get started on making your easy BindPlane deployment even easier! The Terraform provider is still a work in progress and will be coming soon, so keep an eye out for that announcement. Until then, you can still use the BPCLI to automate most of your deployment, you will just need to be careful about destroying resources, so you don’t break any important relationships.