diff options
-rw-r--r-- | .travis.yml | 7 | ||||
-rw-r--r-- | README.md | 53 | ||||
-rw-r--r-- | default.nix | 11 | ||||
-rw-r--r-- | dhall-1.26.1.nix | 22 |
4 files changed, 43 insertions, 50 deletions
diff --git a/.travis.yml b/.travis.yml index d287c26..92f6295 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -1,13 +1,12 @@ | |||
1 | --- | 1 | --- |
2 | sudo: false | 2 | sudo: false |
3 | language: nix | 3 | language: nix |
4 | nix: 2.2.1 | 4 | nix: 2.3.4 |
5 | env: | 5 | env: |
6 | - NIX_PATH=nixpkgs=channel:nixos-19.09 | 6 | - NIX_PATH=nixpkgs=channel:nixos-20.03 |
7 | 7 | ||
8 | install: | 8 | install: |
9 | - nix-env -iA pkgs.python37Packages.ansible-lint pkgs.python37Packages.ansible pkgs.shellcheck -f '<nixpkgs>' | 9 | - nix-env -i -f ./default.nix |
10 | - nix-env -if ./dhall-1.26.1.nix | ||
11 | 10 | ||
12 | # Check ansible version | 11 | # Check ansible version |
13 | - ansible --version | 12 | - ansible --version |
@@ -2,49 +2,51 @@ | |||
2 | 2 | ||
3 | [![Build Status](https://travis-ci.com/fretlink/ansible-clever.svg?token=D3nFpUxMu7vStDHwUNy4&branch=master)](https://travis-ci.com/fretlink/ansible-clever) | 3 | [![Build Status](https://travis-ci.com/fretlink/ansible-clever.svg?token=D3nFpUxMu7vStDHwUNy4&branch=master)](https://travis-ci.com/fretlink/ansible-clever) |
4 | 4 | ||
5 | Ansible role for clever cloud deployment | 5 | Ansible role for Clever Cloud deployment |
6 | ======= | 6 | ======= |
7 | Clever deploy | ||
8 | ========= | ||
9 | 7 | ||
10 | This role deploys applications on clever cloud (https://www.clever-cloud.com). | 8 | 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. | 9 | It handles the publication over git, as well as configuring domain names, environment variables and log drains, dedicated build instances, and scalability parameters. |
12 | 10 | ||
13 | Requirements | 11 | Requirements |
14 | ------------ | 12 | ------------ |
15 | 13 | ||
16 | This role requires `clever-tools` version `2.6.1` or higher. | 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. | ||
17 | 17 | ||
18 | Role Variables | 18 | Role Variables |
19 | -------------- | 19 | -------------- |
20 | 20 | ||
21 | Variables for the application | 21 | Variables for the application: |
22 | - `clever_token`: clever_cloud token, mandatory. | 22 | |
23 | - `clever_secret`: clever_cloud secret, mandatory. | 23 | - `clever_token`: clever_cloud token, **mandatory**. |
24 | - `clever_app`: the id of the app to link, mandatory. | 24 | - `clever_secret`: clever_cloud secret, **mandatory**. |
25 | - `clever_env`: a dict of environment variables for the application (without add_ons one already available), optional. | 25 | - `clever_app`: the id of the app to link, **mandatory**. |
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 | 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/> | 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 }` | 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. | 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_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. | 30 | - `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`. | 31 | - `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. | 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. |
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`. | 33 | - `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. | 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. |
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. | 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. |
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. | 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. |
40 | 37 | ||
41 | Variables specific to deployment, default should be fine: | 38 | Variables specific to deployment, default should be fine: |
39 | |||
42 | - `clever_cli_version`: Version of clever cli tools, default to `2.6.1`. | 40 | - `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`. | 41 | - `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. | 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. |
45 | - `clever_app_confdir`: Path where to store clever cloud data specific to this application, default to `"{{ clever_app_root }}/.clever_cloud"` | 43 | - `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"`. | 44 | - `clever_login_file`: Path to store login information. Default to `"{{ clever_app_confdir }}/login"`. |
47 | 45 | ||
46 | Variables specific to Haskell applications: | ||
47 | |||
48 | - `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional. | ||
49 | |||
48 | Scaling configuration | 50 | Scaling configuration |
49 | --------------------- | 51 | --------------------- |
50 | 52 | ||
@@ -59,7 +61,6 @@ clever_scaling: | |||
59 | max: 5 | 61 | max: 5 |
60 | ``` | 62 | ``` |
61 | 63 | ||
62 | |||
63 | Dependencies | 64 | Dependencies |
64 | ------------ | 65 | ------------ |
65 | 66 | ||
@@ -70,15 +71,19 @@ Example Playbook | |||
70 | 71 | ||
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 | 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 | ||
73 | - hosts: servers | 74 | - hosts: localhost |
74 | roles: | 75 | roles: |
75 | - { role: fretlink.clever, clever_app: 42, clever_token: "{{ vault_clever_token }}", clever_secret: "{{ vault_clever_secret}}" } | 76 | - role: fretlink.clever, |
77 | vars: | ||
78 | clever_app: app_00000000-0000-0000-0000-000000000000, | ||
79 | clever_token: "{{ vault_clever_token }}", | ||
80 | clever_secret: "{{ vault_clever_secret}}" | ||
76 | 81 | ||
77 | 82 | ||
78 | TODO | 83 | Tests |
79 | ---- | 84 | ---- |
80 | 85 | ||
81 | Add some tests and Travis integration | 86 | The role is tested with automated continuous integration on Travis. Please check the `tests/` directory for other usage examples of this role. |
82 | 87 | ||
83 | License | 88 | License |
84 | ------- | 89 | ------- |
@@ -88,4 +93,4 @@ BSD | |||
88 | Author Information | 93 | Author Information |
89 | ------------------ | 94 | ------------------ |
90 | 95 | ||
91 | Developped at Fretlink (https://www.fretlink.com) for our | 96 | Developped at Fretlink (https://www.fretlink.com) |
diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..15ee01e --- /dev/null +++ b/default.nix | |||
@@ -0,0 +1,11 @@ | |||
1 | { pkgs ? import <nixpkgs> {} }: | ||
2 | |||
3 | with pkgs; | ||
4 | { | ||
5 | inherit shellcheck | ||
6 | ansible_2_8; | ||
7 | inherit (python37Packages) | ||
8 | ansible-lint; | ||
9 | inherit (haskellPackages) | ||
10 | dhall_1_27_0; | ||
11 | } | ||
diff --git a/dhall-1.26.1.nix b/dhall-1.26.1.nix deleted file mode 100644 index 918a528..0000000 --- a/dhall-1.26.1.nix +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | { pkgs ? import <nixpkgs> {} }: with pkgs; | ||
2 | |||
3 | let | ||
4 | mkVersion = | ||
5 | version: sha256: | ||
6 | stdenv.mkDerivation { | ||
7 | name = "dhall-${version}"; | ||
8 | inherit version; | ||
9 | src = fetchurl { | ||
10 | url = "https://github.com/dhall-lang/dhall-haskell/releases/download/${version}/dhall-${version}-x86_64-linux.tar.bz2"; | ||
11 | inherit sha256; | ||
12 | }; | ||
13 | unpackPhase = '' | ||
14 | tar -xjf $src | ||
15 | ''; | ||
16 | installPhase = '' | ||
17 | mkdir -p $out/bin | ||
18 | mv bin/dhall $out/bin/ | ||
19 | ''; | ||
20 | }; | ||
21 | in | ||
22 | mkVersion "1.26.1" "0sl4r3mfairgd6kn26hs1r1lkh8rn992grd73078rhqf5w90ag05" | ||