terraform for a 2-instance jambonz system
This terraform configuration generates a jambonz deployment suitable for testing or small production loads.
The deployment generated consists of:
- a VPC along with public subnets, internet gateway, routing table and the like.
- 2 EC2 instances: 1 Session Border Controller (SBC) and 1 feature server (FS)
- an EIP (elastic IP) for the SBC instance
- an autoscale group containing the FS instance, allowing for horizontal scaling of the FS
- an SNS topic that is used to notify autoscale lifecycle events to the FS instance(s)
- an aurora mysql serverless database
- an elasticache redis server
Running the script
Prerequisites
Before running the terraform script you need to create amis for the SBC and the Feature server by running the jambonz-sbc-sip-rtp and jambonz-feature-server packer scripts.
Please refer to the above packer scripts for generating your AMIs.
It's go time!
After installing terraform install the dependencies on your local machine:
terraform init
At that point you are ready to run the script. There are a couple of variables that you must supply, and some others that are optional. These variables can either be defined by editing the [./variables.tf] file or supplied on the command line in var='variable=value' format.
| Variable Name | Value | Required? | Default Value |
|---|---|---|---|
| ami_owner_account | your aws account id | Yes | None |
| key_name | name of existing aws key-pair to use to access the instances (e.g. my-keypair) | Yes | None |
| ssh_key_path | path to key-pair file on local machine (e.g. ~/credentials/my-keypair.pem) | Yes | None |
| region | AWS region to create instances in | No | us-west-1 |
| ec2_instance_type_sbc | EC2 instance type for SBC | No | t3.medium |
| ec2_instance_type_fs | EC2 instance type for Feature Server | No | t3.medium |
| vpc_cidr_block | Network CIDR for the created VPC | No | 172.31.0.0/16 |
| public_subnets | Two public subnets to create within the VPC | No | {"us-west-1a" = "172.31.32.0/24""us-west-1b" = "172.31.33.0/24"} |
| cluster_id | short identifier used to prefix some names of created items | No | jb |
| prefix | name of VPC | No | jambonz |
A command line with variables supplied looks like this:
terraform apply \
-var='ami_owner_account=376029039584' \
-var='region=us-west-1' \
-var='public_subnets={"us-west-1a" = "172.31.32.0/24","us-west-1b" = "172.31.33.0/24"}' \
-var='ssh_key_path=~/aws/~/aws/aws-drachtio-us-west-1.pem' \
-var='key_name=aws-drachtio-us-west-1'
Enter 'yes' at the confirmation prompt, and very shortly you will be the proud owner of a brand-new jambonz cluster!
(Note: to destroy the cluster, simply run terraform destroy with the same command line arguments).
Access the jambonz portal
After creating the cluster, wait a few minutes before accessing the jambonz portal for the first time. There are some userdata scripts that need to finish running, and you may get a "502 Bad Gateway" error if you attempt to access the portal before they have completed. If this happens, simply wait a few minutes and try again.
Once the SBC instance is fully up, log into the jambonz portal by navigating to http://eip-of-sbc-instance in your web browser.
Log in the first time with username and password 'admin'. You will then be forced to set a new password.