]>
Commit | Line | Data |
---|---|---|
4882b0d3 | 1 | # ansible-clever |
3ed1cca7 PB |
2 | |
3 | [![Build Status](https://travis-ci.com/fretlink/ansible-clever.svg?token=D3nFpUxMu7vStDHwUNy4&branch=master)](https://travis-ci.com/fretlink/ansible-clever) | |
4 | ||
e6428dce | 5 | Ansible role for Clever Cloud deployment |
f7dd5848 | 6 | ======= |
f7dd5848 | 7 | |
e6872941 | 8 | This role deploys applications on clever cloud (https://www.clever-cloud.com). |
e6428dce | 9 | It handles the publication over git, as well as configuring domain names, environment variables and log drains, dedicated build instances, and scalability parameters. |
f7dd5848 GD |
10 | |
11 | Requirements | |
12 | ------------ | |
13 | ||
e6428dce PB |
14 | This role requires [`clever-tools`](https://github.com/CleverCloud/clever-tools) CLI version `2.6.1` or higher. |
15 | ||
16 | If 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. | |
f7dd5848 GD |
17 | |
18 | Role Variables | |
19 | -------------- | |
20 | ||
e6428dce PB |
21 | Variables 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. | |
f7dd5848 GD |
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 }` | |
e6428dce | 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. |
1157a45f | 30 | - `clever_domain`: the domain from which the application should be reachable, optional. |
23c0fc8a | 31 | - `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`. |
e6428dce | 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. |
e6872941 | 33 | - `clever_disable_metrics`: a boolean to disable metrics support. Optional, default to `false`. |
e6428dce | 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. |
1c139365 | 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. |
96f02eb1 | 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. |
f7dd5848 | 37 | |
ab73076c | 38 | Variables specific to deployment, defaults should be fine: |
e6428dce | 39 | |
8a5d45d7 | 40 | - `clever_cli_version`: Version of clever cli tools, default to `2.6.1`. |
f7dd5848 | 41 | - `clever_user_path`: Path relative to ansible_user home dir where cli tools and helpers are installed default to `.local/bin`. |
e6428dce | 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. |
f7dd5848 GD |
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"`. | |
ab73076c | 45 | - `clever_restart_only`: set to `true` to skip any deployment related tasks (domain, scaling, env, deploy, …) and only restart the application. Optional. |
f7dd5848 | 46 | |
e6428dce PB |
47 | Variables specific to Haskell applications: |
48 | ||
49 | - `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional. | |
50 | ||
96f02eb1 CD |
51 | Scaling configuration |
52 | --------------------- | |
53 | ||
54 | ```yaml | |
55 | clever_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 | ||
f7dd5848 GD |
65 | Dependencies |
66 | ------------ | |
67 | ||
68 | None | |
69 | ||
70 | Example Playbook | |
71 | ---------------- | |
72 | ||
73 | Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: | |
74 | ||
e6428dce | 75 | - hosts: localhost |
f7dd5848 | 76 | roles: |
e6428dce PB |
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}}" | |
f7dd5848 GD |
82 | |
83 | ||
e6428dce | 84 | Tests |
f7dd5848 GD |
85 | ---- |
86 | ||
e6428dce | 87 | The role is tested with automated continuous integration on Travis. Please check the `tests/` directory for other usage examples of this role. |
f7dd5848 GD |
88 | |
89 | License | |
90 | ------- | |
91 | ||
92 | BSD | |
93 | ||
94 | Author Information | |
95 | ------------------ | |
96 | ||
e6428dce | 97 | Developped at Fretlink (https://www.fretlink.com) |