The AppDynamics Cloud Platform is a DevOps project to help automate the deployment of an HA configuration of the AppDynamics Platform in the cloud using the on-premise installers. It consists of a code repository with Infrastructure as Code (IaC) artifacts, software provisioning modules, and a runbook with step-by-step instructions for deploying the platform on Amazon AWS and the Google Cloud Platform (GCP).
It is based on the concepts of Immutable Infrastructure and Idempotent provisioning.
When installing the AppDynamics Platform software, the provisioning and configuration of an on-premise HA installation is an extremely tedious and time-consuming challenge for IT administrators. The purpose of this project is to significantly reduce the time required for these installation activities using Packer, Terraform, and Ansible.
Here is an example of the deployment architecture when deployed to the Google Cloud Platform:
AppD Cloud Platform: HA Deployment on GCP
Although there are many tools available to accomplish the automation goals of this project, it was decided to standardize on the open source tools referenced above. This is primarily due to their capability for building and deploying software platforms to multi-cloud environments, as well as having a high level of adoption within the developer community.
Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant. A machine image (or immutable VM image) is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines.
As part of this project, Packer is used to create a public immutable VM image for the HA platform consisting of a standardized installation of CentOS 7.9 along with a set of common tools (scripts, playbooks, JDK, etc.).
This public VM image is maintained by AppDynamics with new images released monthly. However, all of the artifacts used to build the image are present in this project, so customers are free to customize and build their own VM image if desired.
Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions. The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.
In this project, Terraform automates the deployment of the HA Platform infrastructure, including VPCs, subnets, security groups, load balancers, and VMs.
Ansible is a simple IT automation engine that automates cloud provisioning, configuration management, application deployment, and intra-service orchestration. It uses no agents and no additional custom security infrastructure, so it's easy to deploy--and most importantly, it uses a very simple language (YAML, in the form of Ansible Playbooks) that allow you to describe your automation jobs in a way that approaches plain English.
Although Ansible has the capability to deploy infrastructure, in this project a conscious decision was made to leave those tasks to Terraform. Ansible is used solely for provisioning the VMs. These tasks include prepping, installing, and configuring the HA Platform on the running VMs.
Ansible Provisioning Flow for GCP
To deploy the AppDynamics Cloud Platform, the first step is to set-up your local environment by installing the needed open source software.
You install Packer, Terraform, and Ansible on a control node, (usually your local laptop,) which then uses the cloud provider CLI and/or SSH to communicate with your cloud resources and managed nodes.
NOTE: Ansible installations can be run from any machine with Python 2 (version 2.7) or Python 3 (versions 3.5 and higher) installed. This includes Red Hat, Debian, CentOS, macOS, any of the BSDs, and so on. However, Windows is NOT currently supported for the Ansible control node.
The following open source software needs to be installed on the host macOS machine:
- Homebrew 3.2.0
- Git 2.32.0
- Packer 1.7.3
- Terraform 1.0.0
- Ansible 4.1.0
Perform the following steps to install the needed software:
-
Install the Homebrew 3.2.0 package manager for macOS 64-bit. Paste the following into a macOS Terminal prompt:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
-
Install Git 2.32.0 for macOS 64-bit.
$ brew install git
-
Install Packer 1.7.3 for macOS 64-bit.
$ brew tap hashicorp/tap $ brew install hashicorp/tap/packer
-
Install Terraform 1.0.0 for macOS 64-bit.
$ brew tap hashicorp/tap $ brew install hashicorp/tap/terraform
-
Install Ansible 4.1.0 for macOS 64-bit.
$ brew install ansible
-
Validate installed command-line tools:
$ brew --version Homebrew 3.2.0 $ git --version git version 2.32.0 $ packer --version 1.7.3 $ terraform --version Terraform v1.0.0 $ ansible --version ansible 4.1.0 ...
-
Configure Git for local user:
$ git config --global user.name "<first_name> <last_name>" $ git config --global user.email "<your_email>" $ git config --global --list
-
Create a folder for your AppD Cloud Platform project:
$ mkdir -p ~/projects $ cd ~/projects
-
Get the code from GitHub:
$ git clone https://github.com/Appdynamics/AppD-Cloud-Platform.git $ cd AppD-Cloud-Platform
The AppDynamics Cloud Platform project currently supports deployment to AWS and GCP. In the future, we will be adding support for Microsoft Azure. Click on a link below for specific cloud-provider instructions and Bill-of-Materials: