aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorpaulrbr-fl <43074087+paulrbr-fl@users.noreply.github.com>2020-06-22 16:03:33 +0200
committerGitHub <noreply@github.com>2020-06-22 16:03:33 +0200
commit44af02cef61e043b971f03aa5cec5a4caa6d6875 (patch)
treef61e2238d3327073a6bae436cc63fcc36065b9cc
parentfcb00fd5cc86db70d122e126f52e24d0eba4af96 (diff)
parent3d17c5eb5948d7297112599a9ea852b5853b3260 (diff)
downloadansible-clever-44af02cef61e043b971f03aa5cec5a4caa6d6875.tar.gz
ansible-clever-44af02cef61e043b971f03aa5cec5a4caa6d6875.tar.zst
ansible-clever-44af02cef61e043b971f03aa5cec5a4caa6d6875.zip
Merge pull request #69 from paulrbr-fl/documentation
core: README cleanup and test env cleanup
-rw-r--r--.travis.yml7
-rw-r--r--README.md53
-rw-r--r--default.nix11
-rw-r--r--dhall-1.26.1.nix22
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---
2sudo: false 2sudo: false
3language: nix 3language: nix
4nix: 2.2.1 4nix: 2.3.4
5env: 5env:
6 - NIX_PATH=nixpkgs=channel:nixos-19.09 6 - NIX_PATH=nixpkgs=channel:nixos-20.03
7 7
8install: 8install:
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
diff --git a/README.md b/README.md
index 348f36d..22c70b4 100644
--- a/README.md
+++ b/README.md
@@ -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
5Ansible role for clever cloud deployment 5Ansible role for Clever Cloud deployment
6======= 6=======
7Clever deploy
8=========
9 7
10This role deploys applications on clever cloud (https://www.clever-cloud.com). 8This role deploys applications on clever cloud (https://www.clever-cloud.com).
11It handles the publication over git, as well as domain names, environment variables and log drains configuration. 9It handles the publication over git, as well as configuring domain names, environment variables and log drains, dedicated build instances, and scalability parameters.
12 10
13Requirements 11Requirements
14------------ 12------------
15 13
16This role requires `clever-tools` version `2.6.1` or higher. 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 17
18Role Variables 18Role Variables
19-------------- 19--------------
20 20
21Variables for the application 21Variables 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
41Variables specific to deployment, default should be fine: 38Variables 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
46Variables specific to Haskell applications:
47
48- `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional.
49
48Scaling configuration 50Scaling configuration
49--------------------- 51---------------------
50 52
@@ -59,7 +61,6 @@ clever_scaling:
59 max: 5 61 max: 5
60``` 62```
61 63
62
63Dependencies 64Dependencies
64------------ 65------------
65 66
@@ -70,15 +71,19 @@ Example Playbook
70 71
71Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: 72Including 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
78TODO 83Tests
79---- 84----
80 85
81Add some tests and Travis integration 86The role is tested with automated continuous integration on Travis. Please check the `tests/` directory for other usage examples of this role.
82 87
83License 88License
84------- 89-------
@@ -88,4 +93,4 @@ BSD
88Author Information 93Author Information
89------------------ 94------------------
90 95
91Developped at Fretlink (https://www.fretlink.com) for our 96Developped 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
3with 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
3let
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 };
21in
22 mkVersion "1.26.1" "0sl4r3mfairgd6kn26hs1r1lkh8rn992grd73078rhqf5w90ag05"