GithubHelp home page GithubHelp logo

sebastienbeau / odoo-cloud-platform Goto Github PK

View Code? Open in Web Editor NEW

This project forked from camptocamp/odoo-cloud-platform

0.0 0.0 0.0 444 KB

C2C Odoo cloud platform addons

License: GNU Affero General Public License v3.0

Python 100.00%

odoo-cloud-platform's Introduction

Build Status

Odoo Cloud Addons

Camptocamp odoo addons used on our Cloud Platform.

Introduction

On the platform we want to achieve having:

  • No data stored on the local filesystem so we can move an instance between hosts and even have several running front-ends
  • 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 an object storage such as S3 or Swift, and we store the werkzeug sessions on Redis.

Setup

Python dependencies

Libraries that must be added in requirements.txt:

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:

  • session_redis
  • logging_json

Example:

--load=web,web_kanban,session_redis,logging_json

Server Environment

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
  • test
  • dev

The exact naming is important, because the cloud_platform addon rely on these keys to know and check the running environment.

Attachments in the Object Storage S3

  • prod: stored RW in the object storage
  • AWS_HOST: depends of the platform
  • AWS_REGION: region's endpoint
  • AWS_ACCESS_KEY_ID: depends of the platform
  • AWS_SECRET_ACCESS_KEY: depends of the platform
  • AWS_BUCKETNAME: <project>-odoo-prod
  • integration:
  • AWS_ACCESS_KEY_ID: depends of the platform
  • AWS_SECRET_ACCESS_KEY: depends of the platform
  • AWS_BUCKETNAME: <project>-odoo-integration
  • test: attachments are stored in database

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: <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

  • 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: <project>-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: <project>-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: <project>-odoo-test
  • ODOO_SESSION_REDIS_EXPIRATION: 86400 (1 day)

JSON Logging

At least on production and integration, activate:

  • ODOO_LOGGING_JSON: 1
  • Add logging_json in the server_wide_modules option in the configuration file

Metrics (Statsd/Prometheus for Grafana)

Should be active at least on the production server

  • ODOO_STATSD: 1
  • STATSD_CUSTOMER: <project>
  • 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
  • STATSD_PORT: depends of the platform

Automatic Configuration

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:

  • ctx.env['cloud.platform'].install_exoscale()
  • ctx.env['cloud.platform'].install_ovh()

Startup checks

At loading of the database, the addon will check if the environment variables for Redis and the object storage are set as expected for the loaded environment. It will refuse to start if anything is badly configured.

The checks can be bypassed with the environment variable ODOO_CLOUD_PLATFORM_UNSAFE set to 1.

odoo-cloud-platform's People

Contributors

charlinedumontet avatar grindtildeath avatar guewen avatar gurneyalex avatar jcoux avatar leemannd avatar p-tombez avatar sbidoul avatar simahawk avatar tdu avatar tonow-c2c avatar vrenaville avatar yvaucher avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.