brabster / crucible

AWS CloudFormation templates built with Clojure
Eclipse Public License 1.0
72 stars 18 forks source link

[WIP] - ecs support #127

Closed garethmdavies closed 6 years ago

garethmdavies commented 6 years ago

Hi @brabster,

Whilst I was at the AWS builders container event in Manchester yesterday (very good event) I decided to add the ecs-support to crucible. We are looking at moving the web/mid tier platform to containers possibly fargate when it becomes available. I'm looking at comparing crucible to terraform for the cloudformation templates for this bit of work.

Once I did the code changes I realised @keerts was already adding this support but had gaps in the container definition. I thought I would create a pull request anyway in case what I've done saves @keerts some time. I'm missing some tests but have added, cluster, service and task definitions specs. Probably could do with some sensible defaults for some of the specs as well. I also found it easier to read by splitting the code into different namespaces especially when there are multiple resources using properties with the same name but of different type e.g. cpu

cheers

brabster commented 6 years ago

Nice @taffowl, @keerts you OK if I merge this?

keerts commented 6 years ago

Splitting up into different namespaces is a good alternative to what I did to resolve the problem of duplicate property names:

(s/def :crucible.aws.ecs.task-definition.key-value-pair/name (spec-or-ref string?)) (s/def :crucible.aws.ecs.task-definition.key-value-pair/value (spec-or-ref string?)) (s/def ::key-value-pair (s/keys :req [:crucible.aws.ecs.task-definition.key-value-pair/name :crucible.aws.ecs.task-definition.key-value-pair/value]))

This is inherently hard when writing the cloudformation template.

When we choose to go this route, we have to split existing namespaces, like lambda, as well to make it consistent.

brabster commented 6 years ago

Available in 0.30.0