Edit readme

This commit is contained in:
Guewen Baconnier
2018-12-03 10:04:33 +01:00
parent 6f21400653
commit 5d9a51ef8c
+54 -18
View File
@@ -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. 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 * Metrics read from the logs or sent to Prometheus to monitor the instances
* Logs sent to ElasticSearch-Kibana structured as JSON for better searching * 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 For the storage, we store all the attachments on an object storage such as S3 or
a S3 compatible one, and we store the werkzeug sessions on Redis. Swift, and we store the werkzeug sessions on Redis.
## Setup ## Setup
@@ -25,23 +27,34 @@ boto==2.42.0
redis==2.10.5 redis==2.10.5
python-json-logger==0.1.5 python-json-logger==0.1.5
statsd==3.2.1 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 ### Odoo Startup
The `--load` option of Odoo must contains the following addons: The `--load` option of Odoo must contains the following addons:
* `attachment_s3`
* `session_redis` * `session_redis`
* `logging_json` * `logging_json`
Example: Example:
`--load=web,web_kanban,attachment_s3,session_redis,logging_json` `--load=web,web_kanban,session_redis,logging_json`
### Server Environment ### 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` * `prod`
* `integration` * `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_HOST`: depends of the platform
* `AWS_ACCESS_KEY_ID`: depends of the platform * `AWS_ACCESS_KEY_ID`: depends of the platform
* `AWS_SECRET_ACCESS_KEY`: depends of the platform * `AWS_SECRET_ACCESS_KEY`: depends of the platform
* `AWS_BUCKETNAME`: `<client>-odoo-prod` * `AWS_BUCKETNAME`: `<project>-odoo-prod`
* integration: * integration:
* `AWS_HOST`: depends of the platform * `AWS_HOST`: depends of the platform
* `AWS_ACCESS_KEY_ID`: depends of the platform * `AWS_ACCESS_KEY_ID`: depends of the platform
* `AWS_SECRET_ACCESS_KEY`: depends of the platform * `AWS_SECRET_ACCESS_KEY`: depends of the platform
* `AWS_BUCKETNAME`: `<client>-odoo-integration` * `AWS_BUCKETNAME`: `<project>-odoo-integration`
* test: attachments are stored in database * test: attachments are stored in database
Besides, the attachment location should be set to `s3` (but this is Besides, the attachment location should be set to `s3` (this is
automatically done by the `install` methods of the `cloud_platform` module. automatically done by the `install` methods of the `cloud_platform` module).
* `ir.config_parameter` `ir_attachment.location`: `s3` * `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`: `<project>-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`: `<project>-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 ### Sessions in Redis
* prod: * prod:
* `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS`: 1
* `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_HOST`: depends of the platform
* `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform
* `ODOO_SESSION_REDIS_PREFIX`: `<client>-odoo-prod` * `ODOO_SESSION_REDIS_PREFIX`: `<project>-odoo-prod`
* integration: * integration:
* `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS`: 1
* `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_HOST`: depends of the platform
* `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform
* `ODOO_SESSION_REDIS_PREFIX`: `<client>-odoo-integration` * `ODOO_SESSION_REDIS_PREFIX`: `<project>-odoo-integration`
* test: * test:
* `ODOO_SESSION_REDIS`: 1 * `ODOO_SESSION_REDIS`: 1
* `ODOO_SESSION_REDIS_HOST`: depends of the platform * `ODOO_SESSION_REDIS_HOST`: depends of the platform
* `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform * `ODOO_SESSION_REDIS_PASSWORD`: depends of the platform
* `ODOO_SESSION_REDIS_PREFIX`: `<client>-odoo-test` * `ODOO_SESSION_REDIS_PREFIX`: `<project>-odoo-test`
* `ODOO_SESSION_REDIS_EXPIRATION`: `86400` (1 day) * `ODOO_SESSION_REDIS_EXPIRATION`: `86400` (1 day)
### JSON Logging ### JSON Logging
@@ -100,7 +132,7 @@ At least on production and integration, activate:
Should be active at least on the production server Should be active at least on the production server
* `ODOO_STATSD`: 1 * `ODOO_STATSD`: 1
* `STATSD_CUSTOMER`: `<client>` * `STATSD_CUSTOMER`: `<project>`
* `STATSD_ENVIRONMENT`: set if you want to send metrics for a special * `STATSD_ENVIRONMENT`: set if you want to send metrics for a special
environment which does not match with the `server_environment` environment which does not match with the `server_environment`
* `STATSD_HOST`: depends of the platform * `STATSD_HOST`: depends of the platform
@@ -108,11 +140,15 @@ Should be active at least on the production server
### Automatic Configuration ### Automatic Configuration
Calling `ctx.env['cloud.platform'].install_exoscale()` in an An automatic configuration can be executed from an `anthem` song to configure
`anthem` song will configure some parameters such as the some parameters such as the `ir_attachment.location` and migrate the existing
`ir_attachment.location` and migrate the existing attachments to the attachments to the object storage.
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 ### Startup checks