From 5d9a51ef8c7a9ba5a8a072078bb35f4bef9b32e8 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Mon, 3 Dec 2018 09:24:35 +0100 Subject: [PATCH] Edit readme --- README.md | 72 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index bf11379..0cbf3d9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# Cloud Platform +[![Build Status](https://travis-ci.com/camptocamp/odoo-cloud-platform.svg?token=Lpp9PcS5on9AGbp76WKB&branch=9.0)](https://travis-ci.com/camptocamp/odoo-cloud-platform) + +# Odoo Cloud Addons Camptocamp odoo addons used on our Cloud Platform. @@ -11,8 +13,8 @@ On the platform we want to achieve having: * Metrics read from the logs or sent to Prometheus to monitor the instances * Logs sent to ElasticSearch-Kibana structured as JSON for better searching -For the storage, we store all the attachments on a object storage such as S3 or -a S3 compatible one, and we store the werkzeug sessions on Redis. +For the storage, we store all the attachments on an object storage such as S3 or +Swift, and we store the werkzeug sessions on Redis. ## Setup @@ -25,23 +27,34 @@ boto==2.42.0 redis==2.10.5 python-json-logger==0.1.5 statsd==3.2.1 + +# For S3 object storage (Exoscale, AWS) +boto==2.42.0 + +# For Swift object storage (Openstack, OVH) +python-swiftclient==3.4.0 +python-keystoneclient==3.13.0 ``` ### Odoo Startup The `--load` option of Odoo must contains the following addons: -* `attachment_s3` * `session_redis` * `logging_json` Example: -`--load=web,web_kanban,attachment_s3,session_redis,logging_json` +`--load=web,web_kanban,session_redis,logging_json` ### Server Environment -The server environments in `server_environment_files` must be at least: +The addon `cloud_platform` is an addon that we use for 2 things: + +* validate that we setup the required environment variables depending on the running environment +* install and configure the cloud addons + +For this purpose, we use the `server_environment` with the following envs: * `prod` * `integration` @@ -57,35 +70,54 @@ The exact naming is important, because the `cloud_platform` addon rely on these * `AWS_HOST`: depends of the platform * `AWS_ACCESS_KEY_ID`: depends of the platform * `AWS_SECRET_ACCESS_KEY`: depends of the platform - * `AWS_BUCKETNAME`: `-odoo-prod` + * `AWS_BUCKETNAME`: `-odoo-prod` * integration: * `AWS_HOST`: depends of the platform * `AWS_ACCESS_KEY_ID`: depends of the platform * `AWS_SECRET_ACCESS_KEY`: depends of the platform - * `AWS_BUCKETNAME`: `-odoo-integration` + * `AWS_BUCKETNAME`: `-odoo-integration` * test: attachments are stored in database -Besides, the attachment location should be set to `s3` (but this is -automatically done by the `install` methods of the `cloud_platform` module. +Besides, the attachment location should be set to `s3` (this is +automatically done by the `install` methods of the `cloud_platform` module). * `ir.config_parameter` `ir_attachment.location`: `s3` + +### Attachments in the Object Storage Swift + +* prod: stored RW in the object storage + * `SWIFT_AUTH_URL`: depends of the platform + * `SWIFT_ACCOUNT`: depends of the platform + * `SWIFT_PASSWORD`: depends of the platform + * `SWIFT_WRITE_CONTAINER`: `-odoo-prod` +* integration: + * `SWIFT_AUTH_URL`: depends of the platform + * `SWIFT_ACCOUNT`: depends of the platform + * `SWIFT_PASSWORD`: depends of the platform + * `SWIFT_WRITE_CONTAINER`: `-odoo-integration` +* test: attachments are stored in database + +Besides, the attachment location should be set to `swift` (this is +automatically done by the `install` methods of the `cloud_platform` module). + * `ir.config_parameter` `ir_attachment.location`: `swift` + ### Sessions in Redis * prod: * `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform - * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-prod` + * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-prod` * integration: * `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform - * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-integration` + * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-integration` * test: * `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform - * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-test` + * `ODOO_SESSION_REDIS_PREFIX`: `-odoo-test` * `ODOO_SESSION_REDIS_EXPIRATION`: `86400` (1 day) ### JSON Logging @@ -100,7 +132,7 @@ At least on production and integration, activate: Should be active at least on the production server * `ODOO_STATSD`: 1 -* `STATSD_CUSTOMER`: `` +* `STATSD_CUSTOMER`: `` * `STATSD_ENVIRONMENT`: set if you want to send metrics for a special environment which does not match with the `server_environment` * `STATSD_HOST`: depends of the platform @@ -108,11 +140,15 @@ Should be active at least on the production server ### Automatic Configuration -Calling `ctx.env['cloud.platform'].install_exoscale()` in an -`anthem` song will configure some parameters such as the -`ir_attachment.location` and migrate the existing attachments to the -object storage. +An automatic configuration can be executed from an `anthem` song to configure +some parameters such as the `ir_attachment.location` and migrate the existing +attachments to the object storage. +From `anthem`, it can be called like this: + `ctx.env['cloud.platform'].install(cloud_platform_kind)` +Replacing `cloud_platform_kind` with 'exoscale' or 'ovh' + +Or using one of the direct shortcuts: ### Startup checks