The AWS provider supports the creation and configuraton of Amazon Web-Services EC2 infrastructure to deploy Ekara environments.
It can create and configure the following EC2 items:
In addition it will also attach, format and mount EBS volumes on instances.
When using the standard Ekara parent, this provider is configured with the ek-aws
name.
The following Ekara descriptor provisions 3 small EC2 instances in the “eu-west-1” region:
name: myEnvironment
ekara:
parent:
repository: ekara-platform/parent
ref: 1.0.0
nodes:
app:
instances: 3
labels:
label1: value1
provider:
name: ek-aws
params:
securityGroups:
app:
rules:
- proto: tcp
ports:
- 8080
cidr_ip: 0.0.0.0/0
rule_desc: allow all on port 8080 for the application
instances:
instance_type: "t2.micro"
volumes:
docker:
ebs:
volume_size: 10
delete_on_termination: true
device_name: /dev/xvdf
fs:
mount_path: /var/lib/docker
On the infrastructure side, a deploy
command with the descriptor above will:
app
for the application exists, opening port 8080 to all IP addresses for TCP.t2.micro
exist, based on the default AMI (Ubuntu minimal 18.04 LTS).docker
exist, formatted with the default filesystem (ext4) and mounted in /var/lib/docker
.ek_label_label1=value1
.Beyond the items described above, inheriting the Ekara parent will also add some security groups for platform operation.
The following parameters are supported by the AWS provider (in the params
element):
Name | Required | Default Value | Description |
---|---|---|---|
placementGroup |
False | - | Parameters that will be passed to the Ansible ec2_placement_group module. |
securityGroups |
False | - | A map defining the security groups to create. Key: placement group name. Value: parameters passed to the Ansible ec2_group module. |
instances |
True | - | Parameters that will be passed to the Ansible ec2 module to create instance(s). |
volumes |
False | - | A map defining the volume(s) to create and attach. Key: volume name. Value: EBS parameters and filesystem parameters. |
The placementGroup
parameter correspond to the parameters of the Ansible ec2_placement_group module.
The following parameters are set by default and can be overridden:
name: "<environment_name>_<environment_qualifier>_pg"
The following parameters are forcibly set and cannot be overriden:
region: "<provider_region>"
state: "present"
The securityGroups
parameter is a map in which:
The following parameters are set by default and can be overridden:
name: "<environment_name>_<environment_qualifier>_<security_group_name>"
description: "Security group <security_group_name> for <environment_name>_<environment_qualifier>"
The following parameters are forcibly set and cannot be overriden:
region: "<provider_region>"
state: "present"
The instances
parameter correspond to the parameters of the Ansible ec2 module.
The following parameters are set by default and can be overridden:
instance_tags:
Name: "<environment_name> (<environment_qualifier>) - <nodeset_name>"
The following parameters are forcibly set and cannot be overriden:
key_name: "ek_<environment_name>_<environment_qualifier>",
region: "<provider_region>",
wait: true,
exact_count: <nodeset_instance_count>,
count_tag:
ek_nodeset_id: "<environment_name>_<environment_qualifier>_<nodeset_name>"
instance_tags:
ek_env_id: "<environment_name>_<environment_qualifier>",
ek_nodeset_id: "<environment_name>_<environment_qualifier>_<nodeset_name>",
ek_nodeset_name: "<nodeset_name>"
If necessary, the name of the placement group is automatically injected into the instance settings as:
placement_group: "<placement_group_name>"
If necessary, the identifiers of the security group(s) are injected as:
group_id: [ "<sg1_id>", "<sg2_id>", ... ]
If necessary, the node set labels are injected as:
instance_tags:
ek_label_<label_name>: "<label_value>"
...
Elements under the volumes
parameter correspond to a map in which:
ebs
which correspond to the parameters of the Ansible ec2_vol module.fs
which correspond to the parameters of the ekara-platform/ansible-role-filesystem role.The following parameters are set by default and can be overridden:
ebs:
volume_type: "gp2"
The following parameters are forcibly set and cannot be overriden:
ebs:
state: "present"