Caravan Infra AWS¶

Prerequisites¶
AWS Credentials file at
~/.aws/credentialslike
[default]
aws_access_key_id=AKIAJPZXVYEXAMPLE
aws_secret_access_key=4k6ZilhMPdshU6/kuwEExAmPlE
Prepare environment¶
You need an AWS bucket (and a DynamoDB table) for terraform state, so run the script project-setup.sh passing as arguments:
Prefix name to give to resources (look at terraform inputs)
AWS region
AWS profile
./project-setup.sh <NAME> <REGION> <PROFILE>
Running¶
Edit the generate aws.tfvars and then run:
terraform init -reconfigure -upgrade
terraform apply --var-file aws.tfvars
Modules¶
Name |
Source |
Version |
|---|---|---|
git::https://github.com/bitrockteam/caravan-bootstrap |
refs/tags/v0.2.19 |
|
git::https://github.com/bitrockteam/caravan-cloudinit |
refs/tags/v0.1.18 |
|
git::https://github.com/bitrockteam/caravan-cloudinit |
refs/tags/v0.1.18 |
|
git::https://github.com/bitrockteam/caravan-acme-le |
refs/tags/v0.0.16 |
|
terraform-aws-modules/vpc/aws |
>= 3.13.0 |
Resources¶
Name |
Type |
|---|---|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
resource |
|
data source |
|
data source |
|
data source |
|
data source |
|
data source |
|
data source |
|
data source |
Inputs¶
Name |
Description |
Type |
Default |
Required |
|---|---|---|---|---|
AWS user profile |
|
n/a |
yes |
|
IP address list for SSH connection to the VMs |
|
n/a |
yes |
|
The prefix of the objects’ names |
|
n/a |
yes |
|
AWS region to use |
|
n/a |
yes |
|
AWS credential file path |
|
n/a |
yes |
|
centos or ubuntu ssh user for bootstrap |
|
n/a |
yes |
|
Regexp to find AMI to use built with caravan-baking |
|
|
no |
|
Fake certificates from staging Let’s Encrypt |
map(object({ |
{ |
no |
|
Path to Consul Enterprise license |
|
|
no |
|
Control plane instances number |
|
|
no |
|
Control plane instance machine type |
|
|
no |
|
Example: |
|
|
no |
|
Hashicorp cluster name |
|
|
no |
|
Enable monitoring |
|
|
no |
|
Enables and setup Nomad cluster |
|
|
no |
|
Domain used for endpoints and certs |
|
|
no |
|
Monitoring instance machine type |
|
|
no |
|
Path to Nomad Enterprise license |
|
|
no |
|
n/a |
|
{ |
no |
|
S3 Bucket where Terraform state is stored |
|
|
no |
|
AWS Region where Terraform state resources are |
|
|
no |
|
DynamoDB Table where Terraform state lock is acquired |
|
|
no |
|
Use staging Let’s Encrypt endpoint |
|
|
no |
|
Path to Vault Enterprise license |
|
|
no |
|
Volume size of control plan data disk |
|
|
no |
|
Volume size of control plan root disk |
|
|
no |
|
Volume size of workers disk |
|
|
no |
|
Volume type of disks |
|
|
no |
|
VPC cidr |
|
|
no |
|
VCP private subnets |
|
[ |
no |
|
VCP public subnets |
|
[ |
no |
|
Working plane instance machine type |
|
|
no |
|
Worker plane instances number |
|
|
no |
Outputs¶
Name |
Description |
|---|---|
Caravan Application Support tfvars |
|
Caravan Platform tfvars |
|
Caravan Workload tfvars |
|
Let’s Encrypt staging CA certificates |
|
Control plane public IP addresses |
|
Control plane iam role list |
|
Control plane role name |
|
n/a |
|
Hashicorp clusters endpoints |
|
Load Balancer IP address |
|
AWS region |
|
VPC ID |
|
Worker plane ARN |
|
Worker plane iam role list |
|
Worker plane role name |
Cleaning up¶
After terraform destroy -var-file=aws.tfvars, for removing bucket and dynamodb table, run the project-cleanup.sh script:
./project-cleanup.sh <NAME> <REGION> <PROFILE>