Some of the feature ideas below will be implemented in bang. Some may be better suited for a bang-utils project. They’re listed here so they won’t be forgotten along the way.
Allow overriding path to .bangrc via environment variable. This allows external utilities to manage multiple sets of deployer_credentials (e.g. a bangrc per client).
Add extension/plugin mechanism. At the moment, the mercurial-style (i.e. using an rc-file for registering extensions) is the most palatable because it does not demand using setuptools, and because it allows the user to manage files how they please.
- The corollary is that the setuptools-style (i.e. entry points defined in setup.py) mechanism is not desirable.
In addition to the plugin mechanism, have some hookable events to make integration easier with existing tools that can’t easily be converted to plugins. E.g.:
exec_hooks: pre_deploy: post_success: - /bin/echo yay post_failure: - /bin/echo boo
Validate stack configuration.
- Check for any build artifacts in the deployment S3 bucket/other central storage location.
Allow absolute paths to playbooks, or a customizable playbook search path.
Add playbook parallelization. Allow running multiple playbooks at once. Leave it up to the deployers to sort out inter-playbook dependencies.
Integrate with revision control system.
- Autoincrement stack version in config file.
- Tag any config scope that defines a source_code attribute.
- Generate release notes between tags.
Add --destroy to automate destruction of stacks.
Support ansible-playbook runtime options (e.g. vault and tag values).
Allow selecting public or private IP addresses for cloud hosts.
- Add any deployers that don’t really apply to less featureful public cloud providers. E.g. SQS, ELB, SNS, etc...
- Create ssh keypairs if specified by the user in their ~/.bangrc.
- Add DNS updates via Route53 API.
- Add Docker and LXC images as base images.
- Add Docker and LXC containers to Ansible inventories.
- Use Ansible playbooks to make changes within containers.
- DB Security Groups
- Add support for server arrays.