From e6428dceebd07b90c01b8d187a16db9772cbfdff Mon Sep 17 00:00:00 2001 From: Paul Bonaud Date: Fri, 19 Jun 2020 17:36:40 +0200 Subject: core: cleanup the README to better document the role Part of #66 --- README.md | 53 +++++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 348f36d..22c70b4 100644 --- a/README.md +++ b/README.md @@ -2,49 +2,51 @@ [![Build Status](https://travis-ci.com/fretlink/ansible-clever.svg?token=D3nFpUxMu7vStDHwUNy4&branch=master)](https://travis-ci.com/fretlink/ansible-clever) -Ansible role for clever cloud deployment +Ansible role for Clever Cloud deployment ======= -Clever deploy -========= This role deploys applications on clever cloud (https://www.clever-cloud.com). -It handles the publication over git, as well as domain names, environment variables and log drains configuration. +It handles the publication over git, as well as configuring domain names, environment variables and log drains, dedicated build instances, and scalability parameters. Requirements ------------ -This role requires `clever-tools` version `2.6.1` or higher. +This role requires [`clever-tools`](https://github.com/CleverCloud/clever-tools) CLI version `2.6.1` or higher. + +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. Role Variables -------------- -Variables for the application -- `clever_token`: clever_cloud token, mandatory. -- `clever_secret`: clever_cloud secret, mandatory. -- `clever_app`: the id of the app to link, mandatory. -- `clever_env`: a dict of environment variables for the application (without add_ons one already available), optional. -- `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 +Variables for the application: + +- `clever_token`: clever_cloud token, **mandatory**. +- `clever_secret`: clever_cloud secret, **mandatory**. +- `clever_app`: the id of the app to link, **mandatory**. +- `clever_env`: a dict of environment variables to add to the application, optional. - `clever_addons`: a list of dict describing addons enabled for the application from which we would use information during deploy, optional.
Example: `{ name: pg, env_prefix: POSTGRESQL_ADDON }` -- `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. -- `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional. +- `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. - `clever_domain`: the domain from which the application should be reachable, optional. -- _Obsolete_: `domain`: Same as above but was replaced by `clever_domain` since v1.4 of this role. - `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`. -- _Obsolete_: `syslog_server`: Same as above but was replaced by `clever_syslog_server` since v1.5 of this role. -- _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`. +- _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. - `clever_disable_metrics`: a boolean to disable metrics support. Optional, default to `false`. -- `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. +- `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. - `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. - `clever_scaling`: an optional object used to configure the runtime instances flavours and numbers. If not defined, it delegates to clever cloud default behaviour. Variables specific to deployment, default should be fine: + - `clever_cli_version`: Version of clever cli tools, default to `2.6.1`. - `clever_user_path`: Path relative to ansible_user home dir where cli tools and helpers are installed default to `.local/bin`. -- `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. +- `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. - `clever_app_confdir`: Path where to store clever cloud data specific to this application, default to `"{{ clever_app_root }}/.clever_cloud"` - `clever_login_file`: Path to store login information. Default to `"{{ clever_app_confdir }}/login"`. +Variables specific to Haskell applications: + +- `clever_haskell_entry_point`: the haskell executable name to be executed by clever cloud, optional. + Scaling configuration --------------------- @@ -59,7 +61,6 @@ clever_scaling: max: 5 ``` - Dependencies ------------ @@ -70,15 +71,19 @@ Example Playbook Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: - - hosts: servers + - hosts: localhost roles: - - { role: fretlink.clever, clever_app: 42, clever_token: "{{ vault_clever_token }}", clever_secret: "{{ vault_clever_secret}}" } + - role: fretlink.clever, + vars: + clever_app: app_00000000-0000-0000-0000-000000000000, + clever_token: "{{ vault_clever_token }}", + clever_secret: "{{ vault_clever_secret}}" -TODO +Tests ---- -Add some tests and Travis integration +The role is tested with automated continuous integration on Travis. Please check the `tests/` directory for other usage examples of this role. License ------- @@ -88,4 +93,4 @@ BSD Author Information ------------------ -Developped at Fretlink (https://www.fretlink.com) for our +Developped at Fretlink (https://www.fretlink.com) -- cgit v1.2.3 From 3d17c5eb5948d7297112599a9ea852b5853b3260 Mon Sep 17 00:00:00 2001 From: Paul Bonaud Date: Fri, 19 Jun 2020 17:37:16 +0200 Subject: core: define nix env for travis with a unique default.nix file --- .travis.yml | 7 +++---- default.nix | 11 +++++++++++ dhall-1.26.1.nix | 22 ---------------------- 3 files changed, 14 insertions(+), 26 deletions(-) create mode 100644 default.nix delete mode 100644 dhall-1.26.1.nix diff --git a/.travis.yml b/.travis.yml index d287c26..92f6295 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,12 @@ --- sudo: false language: nix -nix: 2.2.1 +nix: 2.3.4 env: - - NIX_PATH=nixpkgs=channel:nixos-19.09 + - NIX_PATH=nixpkgs=channel:nixos-20.03 install: - - nix-env -iA pkgs.python37Packages.ansible-lint pkgs.python37Packages.ansible pkgs.shellcheck -f '' - - nix-env -if ./dhall-1.26.1.nix + - nix-env -i -f ./default.nix # Check ansible version - ansible --version diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..15ee01e --- /dev/null +++ b/default.nix @@ -0,0 +1,11 @@ +{ pkgs ? import {} }: + +with pkgs; +{ + inherit shellcheck + ansible_2_8; + inherit (python37Packages) + ansible-lint; + inherit (haskellPackages) + dhall_1_27_0; +} 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 @@ -{ pkgs ? import {} }: with pkgs; - -let - mkVersion = - version: sha256: - stdenv.mkDerivation { - name = "dhall-${version}"; - inherit version; - src = fetchurl { - url = "https://github.com/dhall-lang/dhall-haskell/releases/download/${version}/dhall-${version}-x86_64-linux.tar.bz2"; - inherit sha256; - }; - unpackPhase = '' - tar -xjf $src - ''; - installPhase = '' - mkdir -p $out/bin - mv bin/dhall $out/bin/ - ''; - }; -in - mkVersion "1.26.1" "0sl4r3mfairgd6kn26hs1r1lkh8rn992grd73078rhqf5w90ag05" -- cgit v1.2.3