]> git.immae.eu Git - github/fretlink/ansible-clever.git/blame_incremental - README.md
Merge pull request #72 from clementd-fretlink/noop-if-up-to-date
[github/fretlink/ansible-clever.git] / README.md
... / ...
CommitLineData
1# ansible-clever
2
3[![Build Status](https://travis-ci.com/fretlink/ansible-clever.svg?token=D3nFpUxMu7vStDHwUNy4&branch=master)](https://travis-ci.com/fretlink/ansible-clever)
4
5Ansible role for Clever Cloud deployment
6=======
7
8This role deploys applications on clever cloud (https://www.clever-cloud.com).
9It handles the publication over git, as well as configuring domain names, environment variables and log drains, dedicated build instances, and scalability parameters.
10
11Requirements
12------------
13
14This role requires [`clever-tools`](https://github.com/CleverCloud/clever-tools) CLI version `2.6.1` or higher.
15
16If you want to configure this role with [Dhall](https://dhall-lang.org/) instead of YAML, the dhall bindings defined in the `dhall/` directory will need Dhall version `1.26.0` or higher.
17
18Role Variables
19--------------
20
21Variables for the application:
22
23- `clever_token`: clever_cloud token, **mandatory**.
24- `clever_secret`: clever_cloud secret, **mandatory**.
25- `clever_app`: the id of the app to link, **mandatory**.
26- `clever_env`: a dict of environment variables to add to the application, optional.
27- `clever_addons`: a list of dict describing addons enabled for the application from which we would use information during deploy, optional.<br/>
28 Example: `{ name: pg, env_prefix: POSTGRESQL_ADDON }`
29- `clever_app_tasks_file`: path to an Ansible tasks file to be executed after environment and addons variables where gathered. Specific to an application and should be use to run migrations for example. Optional.
30- `clever_domain`: the domain from which the application should be reachable, optional.
31- `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`.
32- _Obsolete_: `clever_metrics`: metrics used to be disabled by default. Now they are enabled by default on Clever-Cloud and can be explicitly disabled with the `clever_disable_metrics` variable.
33- `clever_disable_metrics`: a boolean to disable metrics support. Optional, default to `false`.
34- `clever_env_output_file`: as a post deploy task you might need to retrieve the full Clever environment configuration (i.e. with addon env variables). If this variable is set to a filename then the env will be retrieved after a successful deploy and written to this file. Beware, the resulting file will contain sensitive information (addon passwords, …). Optional.
35- `clever_build_flavor`: an optional text value used to configure the size of the dedicated build instance (for instance `S` or `XL`). If not defined, it delegates to clever cloud default behaviour. Setting `disabled` disables the dedicated build instance altogether.
36- `clever_scaling`: an optional object used to configure the runtime instances flavours and numbers. If not defined, it delegates to clever cloud default behaviour.
37
38Variables specific to deployment, defaults should be fine:
39
40- `clever_cli_version`: Version of clever cli tools, default to `2.6.1`.
41- `clever_user_path`: Path relative to ansible_user home dir where cli tools and helpers are installed default to `.local/bin`.
42- `clever_app_root`: Path of the application to deploy, default to `app_root` if defined or `"{{ playbook_dir }}/.."` otherwise. I.e. the default behavior will work fine if you define a playbook using this role in a one level deep directory (e.g. `deployment/`) of the root of the application.
43- `clever_app_confdir`: Path where to store clever cloud data specific to this application, default to `"{{ clever_app_root }}/.clever_cloud"`
44- `clever_login_file`: Path to store login information. Default to `"{{ clever_app_confdir }}/login"`.
45- `clever_restart_only`: set to `true` to skip any deployment related tasks (domain, scaling, env, deploy, …) and only restart the application. Optional.
46
47Variables specific to Haskell applications:
48
49- `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional.
50
51Scaling configuration
52---------------------
53
54```yaml
55clever_scaling:
56 # instances and flavors are optional and can be configured as
57 # either a fixed value (with `fixed`) or a range # (with `min` and `max`)
58 flavors:
59 fixed: XS
60 instances:
61 min: 2
62 max: 5
63```
64
65Dependencies
66------------
67
68None
69
70Example Playbook
71----------------
72
73Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
74
75 - hosts: localhost
76 roles:
77 - role: fretlink.clever,
78 vars:
79 clever_app: app_00000000-0000-0000-0000-000000000000,
80 clever_token: "{{ vault_clever_token }}",
81 clever_secret: "{{ vault_clever_secret}}"
82
83
84Tests
85----
86
87The role is tested with automated continuous integration on Travis. Please check the `tests/` directory for other usage examples of this role.
88
89License
90-------
91
92BSD
93
94Author Information
95------------------
96
97Developped at Fretlink (https://www.fretlink.com)