/ansible-opsworks

Use Ansible instead of chef in AWS Opsworks

Primary LanguageRubyApache License 2.0Apache-2.0

The ansible-opsworks recipes are chef 'wrappers' for kicking off ansible playbooks from opsworks.

Opsworks has 5 lifecycle events that run during different stages of instance buildout (http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-events.html)

  • setup
  • configure
  • deploy
  • undeploy
  • shutodwn

Each lifecycle event will run a corresponding playbook in /home/ec2-user/ansbile on the remote instance (if it's present).

  • setup.yml
  • configure.yml
  • deploy.yml
  • undeploy.yml
  • shutdown.yml

Opsworks default (http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-json.html) and custom (http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html) json is also passed to the ansible playbooks.

To access opsworks default json, reference {{ opsworks.xxxxx }} from jinja2.

If you'd like to pass custom json to your ansible templates, you must use the 'ansible' key in your custom json definition.

Note that 'environment' is a required field in the custom json.

{ 
  ansible: {
    environment: 'dev',
    region: 'us-east-1',
    foo: 'bar'
  }
}

Instances will be tagged with a role matching the name of the layer that they're brought up in. This can be overwritten by specifying the following in your custom json:

{ 
  ansible: {
    environment: 'dev',
    layers: {
      <layer_name>: {
        role: "foo"
      }
    }
  }
}