type: install id: odoo-ce version: 1.7 name: Odoo Community Edition homepage: http:///www.odoo.com/ baseUrl: https://raw.githubusercontent.com/jelastic-jps/odoo/master logo: /images/odoo-logo.png targetRegions: type: [ vz.*, pcs.* ] categories: - apps/cms - apps/popular - apps/content-management description: text: Odoo is an all-in-one business management software to run a company (ERP, CMS, CRM application, e-Commerce backend, etc). With 10.000+ apps in, Odoo covers all your business needs in a one-stop solution and provides top notch usability that scales across all apps. short: Odoo is an all-in-one business software (ERP, CMS, CRM application, e-Commerce backend, etc). ssl: true skipNodeEmails: true globals: db_user: odoo${fn.random(1000)} db_pswd: ${fn.password} master_pswd: ${fn.password} odoo_config: /etc/odoo/odoo.conf openerp_config: /etc/odoo/openerp-server.conf onAfterBindSSL: cmd[bl]: |- sed -i "s|location / {|location /websocket {\n proxy_redirect off;\n proxy_pass http://odoochat;\n proxy_set_header Upgrade \$http_upgrade;\n proxy_set_header Connection \$connection_upgrade;\n proxy_set_header X-Forwarded-Host \$host;\n proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto \$scheme;\n proxy_set_header X-Real-IP \$remote_addr; \n }\nlocation / {|g" /etc/nginx/conf.d/ssl.conf sed -i "1s|^|upstream odoo {\n server ${nodes.cp[0].address}:8069;\n}\nupstream odoochat {\n server ${nodes.cp[0].address}:8072;\n}\nmap \$http_upgrade \$connection_upgrade {\n default upgrade;\n '' close;\n}\n # http -> https\nserver {\n listen 80; \n server_name ${env.domain};\n rewrite ^(.*) https://\$host\$1 permanent;\n}\n|" /etc/nginx/conf.d/ssl.conf sed -i "s|proxy_pass http://\$upstream_name;|proxy_pass http://\$upstream_name;\n proxy_set_header X-Forwarded-Host \$host;|g" /etc/nginx/conf.d/ssl.conf service nginx restart user: root onBeforeRedeployContainer[cp]: - script: |- function getMajor(v) { var m = (String(v||"").trim()).match(/^(\d+)/); return m ? parseInt(m[1], 10) : null; } var isUbuntu24 = false, nodeTypeAliases, aliasesStr; var newTag = "${event.params.tag}" || ""; var curTag = "${nodes.cp.master.version}" || ""; var newMajor = getMajor(newTag); var curMajor = getMajor(curTag); if (newMajor === null || curMajor === null) { return { result: 0, isRedeploy: false, message: "Cannot parse versions. Current: " + curTag + ", target: " + newTag }; } if ((newMajor - curMajor) > 1) { return { result: 0, isRedeploy: false, message: "Upgrade disabled. Please use the next major version: " + (curMajor + 1) + " instead of " + newMajor + " (current: " + curTag + ", target: " + newTag + ")." }; } if (newMajor > 17) { var resp = api.environment.control.GetTemplates(); if (resp.result !== 0) return resp; for (var i = 0, n = resp.array.length; i < n; i++) { if (resp.array[i].nodeType == "ubuntu-vps") { nodeTypeAliases = resp.array[i].nodeTypeAliases || []; aliasesStr = nodeTypeAliases.join(","); isUbuntu24 = aliasesStr.indexOf("ubuntu24") !== -1; break; } } if (!isUbuntu24) { return { result: 0, isRedeploy: false, message: "Odoo " + newTag + " required ubuntu 24" }; } } return { result: 0, isRedeploy: true, message: "" }; - if (${response.isRedeploy} != true): stopEvent: type: warning message: ${response.message} onAfterRedeployContainer[cp]: - cmd[cp]: chown -R odoo:odoo /var/lib/odoo onBeforeInit: | var settings = jps.settings || {fields: []}; var fields = settings.fields; var resp = api.environment.control.GetTemplates(),isUbuntu24 = false, nodeTypeAliases, aliasesStr; if (resp.result !== 0) return resp; for (var i = 0, n = resp.array.length; i < n; i++) { if (resp.array[i].nodeType == "ubuntu-vps") { nodeTypeAliases = resp.array[i].nodeTypeAliases; aliasesStr = nodeTypeAliases.join(","); isUbuntu24 = aliasesStr.indexOf("ubuntu24") !== -1; break; } } if (isUbuntu24) { fields.push({ caption: "ODOO version", type: "list", name: "version", required: true, width: 225, default: "19.0", values: [ {value: "17.0", caption: "ODOO 17"}, {value: "18.0", caption: "ODOO 18"}, {value: "19.0", caption: "ODOO 19"} ] }); } else { fields.push({ caption: "ODOO version", type: "list", name: "version", required: true, width: 225, default: "17.0", hidden: true, values: [ {value: "17.0", caption: "ODOO 17"} ] }); } return { result: 0, settings: settings }; nodes: - nodeType: nginx displayName: Balancer cloudlets: 16 nodeGroup: bl - image: odoo:${settings.version} displayName: App Server cloudlets: 16 nodeGroup: cp startServiceOnCreation: false volumes: - /etc/odoo env: JELASTIC_EXPOSE: 8069 POSTGRES_USER: ${globals.db_user} POSTGRES_PASSWORD: ${globals.db_pswd} POSTGRES_DB: postgres - nodeType: postgres18 cloudlets: 16 nodeGroup: sqldb displayName: Postgres DB onInstall: - cmd[${nodes.sqldb.master.id}]: psql -Uwebadmin postgres -c "CREATE USER ${globals.db_user} WITH ENCRYPTED PASSWORD '${globals.db_pswd}' SUPERUSER;" - if ('${env.protocol}' == 'https'): cmd[bl]: |- CONF_FILE="/etc/nginx/nginx-jelastic.conf" sed -i ':a;$!{N;ba};s/\(location \/ {\)/\1\n\n\t\t\t\t\t\tif ($http_x_forwarded_proto = http) {\n\t\t\t\t\t\t\t\treturn 302 https:\/\/$host$request_uri;\n\t\t\t\t\t\t\t\terror_page 500 502 503 504 = @rescue;\n\t\t\t\t\t\t}\n/1' $CONF_FILE sed -i 's|location = /50x.html {| location /websocket {\n proxy_redirect off;\n proxy_pass http://${nodes.cp[0].address}:8072;\n }\n location = /50x.html {|g' $CONF_FILE sed -i 's|proxy_connect_timeout 5s;|proxy_connect_timeout 5s;\n proxy_set_header X-NginX-Proxy true;\n proxy_set_header X-Forwarded-Proto https;\n proxy_set_header X-Forwarded-Host $host;|g' $CONF_FILE service nginx restart user: root - cmd[cp]: |- iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -m comment --comment "Jelastic HTTP Autoredirect" -j REDIRECT --to-ports 8069 iptables-save > /etc/iptables/rules.v4 sudo sed -i s/"; admin_passwd.*"/"admin_passwd = ${globals.master_pswd}"/g ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "db_host = ${nodes.sqldb.master.intIP}" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "db_port = 5432" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "db_password = ${globals.db_pswd}" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "db_user = ${globals.db_user}" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "proxy_mode = True" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "workers = $(($(grep -c ^processor /proc/cpuinfo)*2))" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} echo "max_cron_threads = 1" | tee -a ${globals.odoo_config} | tee -a ${globals.openerp_config} /etc/init.d/odoo restart success: |- Please open [${env.url}](${env.url}) and complete the installation. **Master Password:** ${globals.master_pswd}