Table of Contents |
---|
General
- YAML files - All yaml files should use 2 space indents and end with
.yml
- Variables - Use jinja variable syntax over deprecated variable syntax.
{{ var }}
not$var
- Use spaces around jinja variable names.
{{ var }}
not{{var}}
- Variables that are environment specific and that need to be overridden should be in ALL CAPS.
- Variables that are internal to the role should be lowercase.
- Prefix all variables defined in a role with the name of the role. Example:
EDXAPP_FOO
- Keep roles self contained - Roles should avoid including tasks from other roles when possible
- Plays should do nothing more than include a list of roles except where pre_tasks and post_tasks are required (to manage a load balancer for example)
- Plays/Playbooks that apply to the general community should be copied to configuration/playbooks
- Plays/Playbooks that apply only to a specific organization (edx-east, edx-west) should be copied to a sub-directory under configuration/playbooks
- Tests - For automated integration tests use an included play named
test.yml
is included and run when arun_tests
var is set to validate the role installation on a single instance. - Deploys - For application updates include a
deploy.yml
with a list of tasks that start with service stop and end with a service start that is run to deploy an application update. Every task indeploy.yml
should be tagged withdeploy
- Nothing outside of tasks in
deploy.yml
should affect the application state - All tasks in
deploy.yml
should be able to run as a user with limited sudo rule and not require root access. - Handlers - Every role should have one or more handlers for restarting the service(s), for tasks that run in main.yml that require service restarts they/it will be notified.
- Separators - Use underscores (e.g.
my_role
) not dashes (my-role
). - Paths - When defining paths, do not include trailing slashes (e.g.
my_path: /foo
notmy_path: /foo/
. When concatenating paths, follow the same convention (e.g.{{ my_path }}/bar
not{{ my_path }}bar
)
...