]> git.immae.eu Git - github/fretlink/ansible-clever.git/blob - README.md
Add support for scalability configuration
[github/fretlink/ansible-clever.git] / README.md
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
5 Ansible role for clever cloud deployment
6 =======
7 Clever deploy
8 =========
9
10 This role deploys applications on clever cloud (https://www.clever-cloud.com).
11 It handles the publication over git, as well as domain names, environment variables and log drains configuration.
12
13 Requirements
14 ------------
15
16 This role requires `clever-tools` version `2.6.1` or higher.
17
18 Role Variables
19 --------------
20
21 Variables for the application
22 - `clever_token`: clever_cloud token, mandatory.
23 - `clever_secret`: clever_cloud secret, mandatory.
24 - `clever_app`: the id of the app to link, mandatory.
25 - `clever_env`: a dict of environment variables for the application (without add_ons one already available), optional.
26 - `clever_base_env`: a dict set in vars/main.yml with safe default and mandatory variables for an app to be run on clever. ` clever_base_env | combine(clever_env)` is passed to `clever env` command
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`: tasks file to be executed after environment and addons variables where gathered. Specific to an app, should be use to run migrations. Optional.
30 - `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional.
31 - `clever_domain`: the domain from which the application should be reachable, optional.
32 - _Obsolete_: `domain`: Same as above but was replaced by `clever_domain` since v1.4 of this role.
33 - `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`.
34 - _Obsolete_: `syslog_server`: Same as above but was replaced by `clever_syslog_server` since v1.5 of this role.
35 - _Obsolete_: `clever_metrics`: metrics used to be disabled by default. Now they are enabled by default and can be explicitly disabled with `clever_disable_metrics`.
36 - `clever_disable_metrics`: a boolean to disable metrics support. Optional, default to `false`.
37 - `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 inside this file. Optional.
38 - `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.
39 - `clever_scaling`: an optional object used to configure the runtime instances flavours and numbers. If not defined, it delegates to clever cloud default behaviour.
40
41 Variables specific to deployment, default should be fine:
42 - `clever_cli_version`: Version of clever cli tools, default to `2.6.1`.
43 - `clever_user_path`: Path relative to ansible_user home dir where cli tools and helpers are installed default to `.local/bin`.
44 - `clever_app_root`: Path of the application to deploy, default to `app_root` if defined or `"{{ playbook_dir }}/.."`, ie ansible directory in the root of the application.
45 - `clever_app_confdir`: Path where to store clever cloud data specific to this application, default to `"{{ clever_app_root }}/.clever_cloud"`
46 - `clever_login_file`: Path to store login information. Default to `"{{ clever_app_confdir }}/login"`.
47
48 Scaling configuration
49 ---------------------
50
51 ```yaml
52 clever_scaling:
53 # instances and flavors are optional and can be configured as
54 # either a fixed value (with `fixed`) or a range # (with `min` and `max`)
55 flavors:
56 fixed: XS
57 instances:
58 min: 2
59 max: 5
60 ```
61
62
63 Dependencies
64 ------------
65
66 None
67
68 Example Playbook
69 ----------------
70
71 Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
72
73 - hosts: servers
74 roles:
75 - { role: fretlink.clever, clever_app: 42, clever_token: "{{ vault_clever_token }}", clever_secret: "{{ vault_clever_secret}}" }
76
77
78 TODO
79 ----
80
81 Add some tests and Travis integration
82
83 License
84 -------
85
86 BSD
87
88 Author Information
89 ------------------
90
91 Developped at Fretlink (https://www.fretlink.com) for our