Road Map ======== 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. General Features ---------------- - 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 - Implement ``--dry-run``. - 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. - Autoscale servers. - 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. Providers --------- - AWS - 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. - Docker/LXC - Add Docker and LXC images as base images. - Add Docker and LXC containers to Ansible inventories. - Use Ansible playbooks to make changes within containers. - Rackspace - HP Cloud - DB Security Groups - RightScale - Add support for server arrays.