Skip to content
Simon Caplette edited this page May 2, 2018 · 15 revisions

This page explains the short to long-term roadmap for awless and complements awless Issues.

Ideas / Upcoming Features

  • Given a remote resource id and type, awless output the template necessary to create the resource and its children and dependencies. Basically, awless can read the AWS cloud and transform it to templates.

  • Revert with nuke prompting: Being able to nuke/destroy cloud resources from a given a entry point (i.e. node in the graph of your resources). This would allow to revert anything. Since at the moment, reverting template only works for when there was no subsequent changes to the deployment, having the nuke feature would give you prompt when reverting a deployment indicating if you agree to destroy that resource along with reverting your deployment.

  • Meta templates are compact and concise template that reuse all existing basic templates. This allows user to deploy complex infrastructure using a concise yet complete template. Meta templates are hence shorter template that are behind the scene basically composed of the basic/primitive/existing awless raw template commands. The challenge (not that difficult though) is to introduce that in the compiler. Example:

      Meta template:
      create securitygroup vpc=... name=... cidr=0.0.0.0/0 portrange=22
    
      Expanded to 2 lines common template 
      sgroup = create securitygroup vpc={instance.vpc} description=ssh-access name=ssh-from-internet
      update securitygroup id=$sgroup inbound=authorize protocol=tcp cidr=0.0.0.0/0 portrange=22
    
  • Users should be able to nuke/destroy resources tree (--cascade-delete) while having sound prompting/review/confirm. For example: remove this subnet and all dandling resources; delete a VPC easily

  • List entities in all local regions (new region column added dynamically) --all-local-regions

  • Show entities across all local synced regions --all-local-regions

  • Being able to resume a awless run or awless revert --continue

  • In templates, being able to reference some AWLESS builtin and ENV data (injected during compilation). For example: .... AWLESS.MY_IP

  • Revert multiple IDs

  • In template user can reference properties of created resources (bug feature requiring lots of sound work).

  • User can show a reference from the past with the --history flag (urrently in awless, local graph & data are under git already!)

  • Fix the awless-scheduler with latest awless and make it so that we can install locally as a systemd or launchctl service.

More AWS services

  • CodeDeploy integration
  • CloudFormation support
  • DynamoDb
  • CloudTrail / CloudWatch

Queries

The RDF model at the core of awless enables to perform a lot of queries such as:

Our current RDF implementation is badwolf which supports a simple query language.

Templates

awless also includes an easy-to-write template engine (vs. CloudFormation or TerraForm).

Templates are based on a sound-language (which was prototyped in OCaml before being implemented in Go) that we plan to formalize and extend:

  • support for selectors (including regular expressions)
  • support for and foreach loops

After the template language matures, we plan to introduce type checking for templates, done locally in the awless CLI without performing any query to AWS (even a dry-run).