Installation AWS ECS

Appmixer can be installed in an AWS account via our public Terraform module.

Prerequisities

Installation Types

There are two types of installations:

  • Default installation

  • Custom installation

Default Installation

This type of installation assumes that you don't have any preferences regarding AWS Networking (VPC) and want leave all attributes in default. This kind of installation will create a new VPC and all required network parts (Internet Gateway, NAT Gateway, subnets, route tables, etc.). Then it will provision all the four required AWS managed services:

  • Amazon DocumentDB (MongoDB)

  • ElastiCache (Redis)

  • Opensearch (Elasticsearch)

  • Amazon MQ (RabbitMQ)

Next, it will provision AWS ECS (Elastic Container Service) with all Appmixer applications (Engine, Frontend, Backoffice, Quota and Logstash).

Custom Installation

By configuring external_* values, you have a choice where to install the Appmixer stack and choose external services like:

  • external_vpc: your specific VPC

  • external_redis: external Redis (running either in AWS or somewhere else)

  • external_rabbitmq: external RabbitMQ (running either in AWS or somewhere else)

  • external_elasticsearch: external Elasticsearch (running either in AWS or somewhere else)

  • external_documentdb: external MongoDB (running either in AWS or somewhere else)

Preparation

First, clone the Appmixer Module AWS git project with the Terraform code:

$ git clone https://github.com/clientIO/appmixer-module-aws.git
$ cd appmixer-module-aws/

This repository contains examples for both dev and production use cases. Also, both of these examples include autoscaling configuration. Let's start with dev example:

$ cd examples/development

This example defines a new VPC and it's CIDR block. You will need to configure:

  • zone_id (line #44) -> if set AWS Route53 will be used and you should also update aws_route53_zone (line #33) and set the domain name to be used.

  • ecs_autoscaling_config (line #52) -> Docker registry credentials, base64 encoded string.

  • input_init_user (line #54) -> here you can configure credentials for the initial user (Appmixer admin).

Installation

You should now be ready to provision the Appmixer stack.

$ terraform init
$ terraform plan

In the ouptput of the above commands, you can see the exact resources that will be provisioned. If the output looks right we can proceed:

$ terraform apply

Again, you'll have a chance to check what exactly will be provisioned. If it looks correct, you can approve. After the Terraform run, you'll get the so called Terraform output, where you can find a lot of useful information like Loadbalancer name, service URLs, managed services, etc.

Last updated