Fügt Playbook für TZ Austria hinzu
parent
f2b0c32733
commit
34782f4a10
|
|
@ -0,0 +1,33 @@
|
||||||
|
Schritt 1:
|
||||||
|
Hostsfile um Host erweitern
|
||||||
|
|
||||||
|
Schritt 2 - Playbooks anpassen:
|
||||||
|
Host angeben (Variable hosts)
|
||||||
|
Repository URL angeben (Variable odoo_repo_url)
|
||||||
|
Passwörter setzen (Variablen odoo_config_admin_passwd, odoo_config_db_password, odoo_general_user_passwd)
|
||||||
|
|
||||||
|
Schritt 3:
|
||||||
|
Die Playbooks wie in den nachfolgenden Beispielen beschrieben ausführen
|
||||||
|
|
||||||
|
[Odoo Test Instanz aufsetzen]
|
||||||
|
1. Playbook ausführen: ansible-playbook odoo-playboook/playbook-test.yml -i odoo-playboook/hosts --ask-become-pass
|
||||||
|
2. Auf den Server verbinden: ssh odoo-test@[host]
|
||||||
|
3. Public SSH Key kopieren und in Gitlab beim Projekt unter Settings/Repository eintragen: cat .ssh/id_rsa.pub
|
||||||
|
4. Playbook nochaml ausführen: ansible-playbook odoo-playboook/playbook-test.yml -i odoo-playboook/hosts
|
||||||
|
|
||||||
|
[Odoo Prod Instanz aufsetzen]
|
||||||
|
1. Playbook ausführen: ansible-playbook odoo-playboook/playbook-prod.yml -i odoo-playboook/hosts
|
||||||
|
2. Auf den Server verbinden: ssh odoo-prod@[host]
|
||||||
|
3. Public SSH Key kopieren und in Gitlab beim Projekt unter Settings/Repository eintragen: cat .ssh/id_rsa.pub
|
||||||
|
4. Playbook nochaml ausführen: ansible-playbook odoo-playboook/playbook-prod.yml -i odoo-playboook/hosts
|
||||||
|
|
||||||
|
[Nginx Server aufsetzen]
|
||||||
|
1. Variabel server_name anpassen
|
||||||
|
2. Playbook ausführen: ansible-playbook odoo-playboook/playbook-nginx.yml -i odoo-playboook/hosts
|
||||||
|
|
||||||
|
Hinweis: HTTPS ist derzeit nur für PROD möglich
|
||||||
|
Probleme: Automatische Erstellung des Certificate und Private Key wird ausgeführt. Manchmal ist jedoch der Hash unterschiedlich.
|
||||||
|
Ob die Hashwerte gleich sind kann wie folgt überprüft werden:
|
||||||
|
sudo openssl x509 -in odoo_prod.crt -noout -modulus | openssl sha256
|
||||||
|
sudo openssl rsa -in odoo_prod.key -noout -modulus | openssl sha256
|
||||||
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[local]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[tzaustria]
|
||||||
|
5.9.67.35:3333 ansible_connection=ssh ansible_user=datenpol
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
# This playbook deploys the nginx as reverse prox.
|
||||||
|
|
||||||
|
- name: Nginx for Odoo
|
||||||
|
hosts: tzaustria
|
||||||
|
become: yes
|
||||||
|
# deactivate gather_facts when python is not installed on server
|
||||||
|
# gather_facts: false
|
||||||
|
# pre_tasks:
|
||||||
|
# - raw: which python || apt-get update
|
||||||
|
# - raw: (which python && which aptitude) || apt-get install -y python python-apt aptitude
|
||||||
|
# - setup: # aka gather_facts
|
||||||
|
vars_prompt:
|
||||||
|
- name: "activate_https"
|
||||||
|
prompt: "HTTPS aktivieren (y/n)?"
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
server_name: erp.tzaustria.info
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile on
|
||||||
|
- access_log /var/log/nginx/access.log
|
||||||
|
nginx_sites:
|
||||||
|
odoo_test:
|
||||||
|
server_name: "{{ server_name }}"
|
||||||
|
template: odoo_test.conf.j2
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
|
||||||
|
- role: ssl-cert
|
||||||
|
ssl_certs_privkey_path: '/etc/nginx/ssl/odoo_test.key'
|
||||||
|
ssl_certs_cert_path: '/etc/nginx/ssl/odoo_test.crt'
|
||||||
|
when: activate_https == 'y'
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
# This playbook deploys the whole application stack in this site.
|
||||||
|
|
||||||
|
- name: Odoo Prod
|
||||||
|
hosts: tzaustria
|
||||||
|
become: yes
|
||||||
|
# deactivate gather_facts when python is not installed on server
|
||||||
|
# gather_facts: false
|
||||||
|
# pre_tasks:
|
||||||
|
# - raw: which python || apt-get update
|
||||||
|
# - raw: (which python && which aptitude) || apt-get install -y python python-apt aptitude
|
||||||
|
# - setup: # aka gather_facts
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_repo_rev: master
|
||||||
|
odoo_user: odoo-prod
|
||||||
|
odoo_service: odoo-prod
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_config_http_port: 8069
|
||||||
|
odoo_config_admin_passwd: ainbeyos
|
||||||
|
odoo_config_db_passwd: aroneyna
|
||||||
|
odoo_general_user_passwd: elewcaph
|
||||||
|
odoo_instance: "prod"
|
||||||
|
odoo_config_dbfilter: "^{{ odoo_instance }}_.*"
|
||||||
|
# remove the following paramters to install odoo from github
|
||||||
|
odoo_repo_url: "ssh://git@gitlab.datenpol.at:122/odoo/tz-austria.git"
|
||||||
|
odoo_config_addons_path:
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/odoo/odoo/addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/odoo/addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/custom-addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/3rd-party-addons"
|
||||||
|
odoo_workdir: "/data/{{ odoo_user }}/odoo"
|
||||||
|
odoo_rootdir: "/data/{{ odoo_user }}/odoo"
|
||||||
|
odoo_coredir: "/data/{{ odoo_user }}/odoo/ext/odoo"
|
||||||
|
odoo_config_file: "/data/{{ odoo_user }}/{{ odoo_service }}.conf"
|
||||||
|
odoo_config_data_dir: "/data/{{ odoo_user }}/.local/share/Odoo"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
5.9.67.35
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
---
|
||||||
|
# This playbook deploys the whole application stack in this site.
|
||||||
|
|
||||||
|
- name: Odoo Test
|
||||||
|
hosts: tzaustria
|
||||||
|
become: yes
|
||||||
|
# gather_facts: false
|
||||||
|
# pre_tasks:
|
||||||
|
# - raw: which python || apt-get update
|
||||||
|
# - raw: (which python && which aptitude) || apt-get install -y python python-apt aptitude
|
||||||
|
# - setup: # aka gather_facts
|
||||||
|
|
||||||
|
roles:
|
||||||
|
# odoo installation
|
||||||
|
- role: odoo
|
||||||
|
odoo_repo_rev: develop
|
||||||
|
odoo_user: odoo-test
|
||||||
|
odoo_service: odoo-test
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_config_http_port: 8070
|
||||||
|
odoo_config_longpolling_port: 8073
|
||||||
|
odoo_config_admin_passwd: optangat
|
||||||
|
odoo_config_db_passwd: ightgate
|
||||||
|
odoo_general_user_passwd: elewcaph
|
||||||
|
odoo_config_log_level: debug
|
||||||
|
odoo_instance: "test"
|
||||||
|
odoo_config_dbfilter: "^{{ odoo_instance }}_.*"
|
||||||
|
# remove the following paramters to install odoo from github
|
||||||
|
odoo_repo_url: "ssh://git@gitlab.datenpol.at:122/odoo/tz-austria.git"
|
||||||
|
odoo_config_addons_path:
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/odoo/odoo/addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/odoo/addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/custom-addons"
|
||||||
|
- "/data/{{ odoo_user }}/odoo/ext/3rd-party-addons"
|
||||||
|
odoo_workdir: "/data/{{ odoo_user }}/odoo"
|
||||||
|
odoo_rootdir: "/data/{{ odoo_user }}/odoo"
|
||||||
|
odoo_coredir: "/data/{{ odoo_user }}/odoo/ext/odoo"
|
||||||
|
odoo_config_file: "/data/{{ odoo_user }}/{{ odoo_service }}.conf"
|
||||||
|
odoo_config_data_dir: "/data/{{ odoo_user }}/.local/share/Odoo"
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
language: python
|
||||||
|
python: "2.7"
|
||||||
|
before_install:
|
||||||
|
- sudo apt-get update -qq
|
||||||
|
- sudo apt-get install -qq python-apt python-pycurl
|
||||||
|
install:
|
||||||
|
- pip install ansible ansible-lint
|
||||||
|
- ansible --version
|
||||||
|
script:
|
||||||
|
- ansible-lint tasks/main.yml
|
||||||
|
- echo localhost > inventory
|
||||||
|
- ansible-playbook -i inventory --syntax-check --list-tasks test/test.yml -e "role_name=ansible-role-nginx" -e "hosts_group=hosts_group"
|
||||||
|
- ansible-playbook -i inventory --connection=local --sudo -vvvv test/test.yml -u root -e "role_name=ansible-role-nginx" -e "hosts_group=localhost"
|
||||||
|
- >
|
||||||
|
ansible-playbook -i inventory --connection=local --sudo -vvvv test/test.yml -u root -e "role_name=ansible-role-nginx" -e "hosts_group=localhost"
|
||||||
|
| grep -q 'changed=0.*failed=0'
|
||||||
|
&& (echo 'Idempotence test: pass' && exit 0)
|
||||||
|
|| (echo 'Idempotence test: fail' && exit 1)
|
||||||
|
- cat /etc/nginx/nginx.conf
|
||||||
|
- cat /etc/nginx/sites-enabled/default.conf
|
||||||
|
- cat /etc/nginx/sites-enabled/foo.conf
|
||||||
|
- cat /etc/nginx/sites-enabled/bar.conf
|
||||||
|
- cat /etc/nginx/sites-enabled/custom_bar.conf
|
||||||
|
- grep 'server_name bar.example.com;' /etc/nginx/sites-enabled/custom_bar.conf
|
||||||
|
- cat /etc/nginx/conf.d/proxy.conf
|
||||||
|
- cat /etc/nginx/conf.d/upstream.conf
|
||||||
|
- cat /etc/nginx/conf.d/geo.conf
|
||||||
|
- cat /etc/nginx/conf.d/gzip.conf
|
||||||
|
- cat /etc/nginx/snippets/error_pages.conf
|
||||||
|
- sudo cat /etc/nginx/auth_basic/demo
|
||||||
|
- sudo nginx -t
|
||||||
|
after_script:
|
||||||
|
- ls -l /etc/nginx
|
||||||
|
- ls -l /etc/nginx/*
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
braces:
|
||||||
|
min-spaces-inside: 0
|
||||||
|
max-spaces-inside: 0
|
||||||
|
min-spaces-inside-empty: -1
|
||||||
|
max-spaces-inside-empty: -1
|
||||||
|
brackets:
|
||||||
|
min-spaces-inside: 0
|
||||||
|
max-spaces-inside: 0
|
||||||
|
min-spaces-inside-empty: -1
|
||||||
|
max-spaces-inside-empty: -1
|
||||||
|
colons:
|
||||||
|
max-spaces-before: 0
|
||||||
|
max-spaces-after: 1
|
||||||
|
commas:
|
||||||
|
max-spaces-before: 0
|
||||||
|
min-spaces-after: 1
|
||||||
|
max-spaces-after: 1
|
||||||
|
comments:
|
||||||
|
level: warning
|
||||||
|
require-starting-space: false
|
||||||
|
min-spaces-from-content: 2
|
||||||
|
comments-indentation: disable
|
||||||
|
document-end: disable
|
||||||
|
document-start: disable
|
||||||
|
empty-lines:
|
||||||
|
max: 2
|
||||||
|
max-start: 0
|
||||||
|
max-end: 0
|
||||||
|
hyphens:
|
||||||
|
max-spaces-after: 1
|
||||||
|
indentation:
|
||||||
|
spaces: consistent
|
||||||
|
indent-sequences: true
|
||||||
|
check-multi-line-strings: false
|
||||||
|
key-duplicates: enable
|
||||||
|
line-length:
|
||||||
|
max: 250
|
||||||
|
allow-non-breakable-words: true
|
||||||
|
allow-non-breakable-inline-mappings: false
|
||||||
|
new-line-at-end-of-file: enable
|
||||||
|
new-lines:
|
||||||
|
type: unix
|
||||||
|
trailing-spaces: enable
|
||||||
|
truthy: disable
|
||||||
|
|
@ -0,0 +1,367 @@
|
||||||
|
nginx
|
||||||
|
=====
|
||||||
|
|
||||||
|
This role installs and configures the nginx web server. The user can specify
|
||||||
|
any http configuration parameters they wish to apply their site. Any number of
|
||||||
|
sites can be added with configurations of your choice.
|
||||||
|
|
||||||
|
[](https://travis-ci.org/jdauphant/ansible-role-nginx)
|
||||||
|
[](https://galaxy.ansible.com/jdauphant/nginx/)
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
This role requires Ansible 2.0 or higher and platform requirements are listed
|
||||||
|
in the metadata file. (Some older version of the role support Ansible 1.4)
|
||||||
|
For FreeBSD a working pkgng setup is required (see: https://www.freebsd.org/doc/handbook/pkgng-intro.html )
|
||||||
|
|
||||||
|
Install
|
||||||
|
-------
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-galaxy install jdauphant.nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The variables that can be passed to this role and a brief description about
|
||||||
|
them are as follows. (For all variables, take a look at [defaults/main.yml](defaults/main.yml))
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# The user to run nginx
|
||||||
|
nginx_user: "www-data"
|
||||||
|
|
||||||
|
# A list of directives for the events section.
|
||||||
|
nginx_events_params:
|
||||||
|
- worker_connections 512
|
||||||
|
- debug_connection 127.0.0.1
|
||||||
|
- use epoll
|
||||||
|
- multi_accept on
|
||||||
|
|
||||||
|
# A list of hashes that define the servers for nginx,
|
||||||
|
# as with http parameters. Any valid server parameters
|
||||||
|
# can be defined here.
|
||||||
|
nginx_sites:
|
||||||
|
default:
|
||||||
|
- listen 80
|
||||||
|
- server_name _
|
||||||
|
- root "/usr/share/nginx/html"
|
||||||
|
- index index.html
|
||||||
|
foo:
|
||||||
|
- listen 8080
|
||||||
|
- server_name localhost
|
||||||
|
- root "/tmp/site1"
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
bar:
|
||||||
|
- listen 9090
|
||||||
|
- server_name ansible
|
||||||
|
- root "/tmp/site2"
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
allow 127.0.0.1;
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
# A list of hashes that define additional configuration
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
upstream:
|
||||||
|
- upstream foo { server 127.0.0.1:8080 weight=10; }
|
||||||
|
geo:
|
||||||
|
- geo $local {
|
||||||
|
default 0;
|
||||||
|
127.0.0.1 1;
|
||||||
|
}
|
||||||
|
gzip:
|
||||||
|
- gzip on
|
||||||
|
- gzip_disable msie6
|
||||||
|
|
||||||
|
# A list of hashes that define configuration snippets
|
||||||
|
nginx_snippets:
|
||||||
|
error_pages:
|
||||||
|
- error_page 500 /http_errors/500.html
|
||||||
|
- error_page 502 /http_errors/502.html
|
||||||
|
- error_page 503 /http_errors/503.html
|
||||||
|
- error_page 504 /http_errors/504.html
|
||||||
|
|
||||||
|
# A list of hashes that define user/password files
|
||||||
|
nginx_auth_basic_files:
|
||||||
|
demo:
|
||||||
|
- foo:$apr1$mEJqnFmy$zioG2q1iDWvRxbHuNepIh0 # foo:demo , generated by : htpasswd -nb foo demo
|
||||||
|
- bar:$apr1$H2GihkSo$PwBeV8cVWFFQlnAJtvVCQ. # bar:demo , generated by : htpasswd -nb bar demo
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
## 1) Install nginx with HTTP directives of choice, but with no sites configured and no additional configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- {role: nginx,
|
||||||
|
nginx_http_params: ["sendfile on", "access_log /var/log/nginx/access.log"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2) Install nginx with different HTTP directives than in the previous example, but no
|
||||||
|
sites configured and no additional configuration.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- {role: nginx,
|
||||||
|
nginx_http_params: ["tcp_nodelay on", "error_log /var/log/nginx/error.log"]}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Please make sure the HTTP directives passed are valid, as this role
|
||||||
|
won't check for the validity of the directives. See the nginx documentation
|
||||||
|
for details.
|
||||||
|
|
||||||
|
## 3) Install nginx and add a site to the configuration.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: all
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile "on"
|
||||||
|
- access_log "/var/log/nginx/access.log"
|
||||||
|
nginx_sites:
|
||||||
|
bar:
|
||||||
|
- listen 8080
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4) Install nginx and add extra variables to default config
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
-hosts: all
|
||||||
|
vars:
|
||||||
|
- my_extra_params:
|
||||||
|
- client_max_body_size 200M
|
||||||
|
# retain defaults and add additional `client_max_body_size` param
|
||||||
|
roles:
|
||||||
|
- role: jdauphant.nginx
|
||||||
|
nginx_http_params: "{{ nginx_http_default_params + my_extra_params }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Each site added is represented by a list of hashes, and the configurations
|
||||||
|
generated are populated in /etc/nginx/site-available/ and linked from /etc/nginx/site-enable/ to /etc/nginx/site-available.
|
||||||
|
|
||||||
|
The file name for the specific site configuration is specified in the hash
|
||||||
|
with the key "file_name", any valid server directives can be added to the hash.
|
||||||
|
Additional configurations are created in /etc/nginx/conf.d/
|
||||||
|
|
||||||
|
## 5) Install Nginx, add 2 sites (different method) and add additional configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile on
|
||||||
|
- access_log /var/log/nginx/access.log
|
||||||
|
nginx_sites:
|
||||||
|
foo:
|
||||||
|
- listen 8080
|
||||||
|
- server_name localhost
|
||||||
|
- root /tmp/site1
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
bar:
|
||||||
|
- listen 9090
|
||||||
|
- server_name ansible
|
||||||
|
- root /tmp/site2
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6) Install Nginx, add 2 sites, add additional configuration and an upstream configuration block
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_error_log_level: info
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile on
|
||||||
|
- access_log /var/log/nginx/access.log
|
||||||
|
nginx_sites:
|
||||||
|
foo:
|
||||||
|
- listen 8080
|
||||||
|
- server_name localhost
|
||||||
|
- root /tmp/site1
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
bar:
|
||||||
|
- listen 9090
|
||||||
|
- server_name ansible
|
||||||
|
- root /tmp/site2
|
||||||
|
- if ( $host = example.com ) { rewrite ^(.*)$ http://www.example.com$1 permanent; }
|
||||||
|
- location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
auth_basic "Restricted";
|
||||||
|
auth_basic_user_file auth_basic/demo;
|
||||||
|
}
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
upstream:
|
||||||
|
# Results in:
|
||||||
|
# upstream foo_backend {
|
||||||
|
# server 127.0.0.1:8080 weight=10;
|
||||||
|
# }
|
||||||
|
- upstream foo_backend { server 127.0.0.1:8080 weight=10; }
|
||||||
|
nginx_auth_basic_files:
|
||||||
|
demo:
|
||||||
|
- foo:$apr1$mEJqnFmy$zioG2q1iDWvRxbHuNepIh0 # foo:demo , generated by : htpasswd -nb foo demo
|
||||||
|
- bar:$apr1$H2GihkSo$PwBeV8cVWFFQlnAJtvVCQ. # bar:demo , generated by : htpasswd -nb bar demo
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7) Install Nginx, add a site and use special yaml syntax to make the location blocks multiline for clarity
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile on
|
||||||
|
- access_log /var/log/nginx/access.log
|
||||||
|
nginx_sites:
|
||||||
|
foo:
|
||||||
|
- listen 443 ssl
|
||||||
|
- server_name foo.example.com
|
||||||
|
- set $myhost foo.example.com
|
||||||
|
- |
|
||||||
|
location / {
|
||||||
|
proxy_set_header Host foo.example.com;
|
||||||
|
}
|
||||||
|
- |
|
||||||
|
location ~ /v2/users/.+?/organizations {
|
||||||
|
if ($request_method = PUT) {
|
||||||
|
set $myhost bar.example.com;
|
||||||
|
}
|
||||||
|
if ($request_method = DELETE) {
|
||||||
|
set $myhost bar.example.com;
|
||||||
|
}
|
||||||
|
proxy_set_header Host $myhost;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
## 8) Example to use this role with my ssl-certs role to generate or copie ssl certificate ( https://galaxy.ansible.com/list#/roles/3115 )
|
||||||
|
```yaml
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- jdauphant.ssl-certs
|
||||||
|
- role: jdauphant.nginx
|
||||||
|
nginx_configs:
|
||||||
|
ssl:
|
||||||
|
- ssl_certificate_key {{ssl_certs_privkey_path}}
|
||||||
|
- ssl_certificate {{ssl_certs_cert_path}}
|
||||||
|
nginx_sites:
|
||||||
|
default:
|
||||||
|
- listen 443 ssl
|
||||||
|
- server_name _
|
||||||
|
- root "/usr/share/nginx/html"
|
||||||
|
- index index.html
|
||||||
|
```
|
||||||
|
## 9) Site configuration using a custom template.
|
||||||
|
Instead of defining a site config file using a list of attributes,
|
||||||
|
you may use a hash/dictionary that includes the filename of an alternate template.
|
||||||
|
Additional values are accessible within the template via the `item.value` variable.
|
||||||
|
```yaml
|
||||||
|
- hosts: all
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_sites:
|
||||||
|
custom_bar:
|
||||||
|
template: custom_bar.conf.j2
|
||||||
|
server_name: custom_bar.example.com
|
||||||
|
```
|
||||||
|
Custom template: custom_bar.conf.j2:
|
||||||
|
```handlebars
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
upstream backend {
|
||||||
|
server 10.0.0.101;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
server_name {{ item.value.server_name }};
|
||||||
|
location / {
|
||||||
|
proxy_pass http://backend;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Using a custom template allows for unlimited flexibility in configuring the site config file.
|
||||||
|
This example demonstrates the common practice of configuring a site server block
|
||||||
|
in the same file as its complementary upstream block.
|
||||||
|
If you use this option:
|
||||||
|
* _The hash **must** include a `template:` value, or the configuration task will fail._
|
||||||
|
* _This role cannot check tha validity of your custom template.
|
||||||
|
If you use this method, the conf file formatting provided by this role is unavailable,
|
||||||
|
and it is up to you to provide a template with valid content and formatting for NGINX._
|
||||||
|
|
||||||
|
## 10) Install Nginx, add 2 sites, use snippets to configure access controls
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
nginx_http_params:
|
||||||
|
- sendfile on
|
||||||
|
- access_log /var/log/nginx/access.log
|
||||||
|
nginx_snippets:
|
||||||
|
accesslist_devel:
|
||||||
|
- allow 192.168.0.0/24
|
||||||
|
- deny all
|
||||||
|
nginx_sites:
|
||||||
|
foo:
|
||||||
|
- listen 8080
|
||||||
|
- server_name localhost
|
||||||
|
- root /tmp/site1
|
||||||
|
- include snippets/accesslist_devel.conf
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
bar:
|
||||||
|
- listen 9090
|
||||||
|
- server_name ansible
|
||||||
|
- root /tmp/site2
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
```
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
BSD
|
||||||
|
|
||||||
|
Author Information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
- Original : Benno Joy
|
||||||
|
- Modified by : DAUPHANT Julien
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
||||||
|
VAGRANTFILE_API_VERSION = "2"
|
||||||
|
|
||||||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
# All Vagrant configuration is done here. The most common configuration
|
||||||
|
# options are documented and commented below. For a complete reference,
|
||||||
|
# please see the online documentation at vagrantup.com.
|
||||||
|
|
||||||
|
# Every Vagrant virtual environment requires a box to build off of.
|
||||||
|
config.vm.box = "ubuntu/trusty64"
|
||||||
|
|
||||||
|
config.vm.provision :ansible do |ansible|
|
||||||
|
ansible.playbook = "test.yml"
|
||||||
|
ansible.sudo = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[defaults]
|
||||||
|
roles_path = ../
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
---
|
||||||
|
nginx_pkgs:
|
||||||
|
- nginx
|
||||||
|
|
||||||
|
nginx_install_epel_repo: True
|
||||||
|
|
||||||
|
nginx_official_repo: False
|
||||||
|
nginx_official_repo_mainline: False
|
||||||
|
|
||||||
|
keep_only_specified: False
|
||||||
|
|
||||||
|
nginx_installation_type: "packages"
|
||||||
|
nginx_binary_name: "nginx"
|
||||||
|
nginx_service_name: "{{nginx_binary_name}}"
|
||||||
|
nginx_conf_dir: /etc/nginx # For this variable, a specific value for the OS can be apply in vars/{{ ansible_os_family }}.yml
|
||||||
|
nginx_ssl_dir: /etc/nginx/ssl
|
||||||
|
nginx_default_site_template: "site.conf.j2"
|
||||||
|
|
||||||
|
nginx_user: nginx # For this variable, a specific value for the OS can be apply in vars/{{ ansible_os_family }}.
|
||||||
|
nginx_group: "{{nginx_user}}"
|
||||||
|
|
||||||
|
nginx_pid_file: '/var/run/{{nginx_service_name}}.pid'
|
||||||
|
|
||||||
|
nginx_worker_processes: "{% if ansible_processor_vcpus is defined %}{{ ansible_processor_vcpus }}{% else %}auto{% endif %}"
|
||||||
|
nginx_worker_rlimit_nofile: 1024
|
||||||
|
nginx_log_dir: "/var/log/nginx"
|
||||||
|
nginx_log_user: "{% if ansible_os_family == 'Debian' %}root{% else %}{{nginx_user}}{% endif %}"
|
||||||
|
nginx_log_group: "{% if ansible_os_family == 'Debian' %}adm{% else %}{{nginx_group}}{% endif %}"
|
||||||
|
nginx_error_log_level: "error"
|
||||||
|
|
||||||
|
nginx_conf_user: root
|
||||||
|
nginx_conf_group: root
|
||||||
|
|
||||||
|
nginx_extra_root_params: []
|
||||||
|
nginx_events_params:
|
||||||
|
- worker_connections {% if nginx_max_clients is defined %}{{nginx_max_clients}}{% else %}512{% endif %}
|
||||||
|
|
||||||
|
nginx_http_params: "{{ nginx_http_default_params }}"
|
||||||
|
|
||||||
|
nginx_stream_params: []
|
||||||
|
|
||||||
|
nginx_sites_default_root: /usr/share/nginx/html # For this variable, a specific value for the OS can be apply in vars/{{ ansible_os_family }}.
|
||||||
|
|
||||||
|
nginx_sites:
|
||||||
|
default:
|
||||||
|
- listen 80 default_server
|
||||||
|
- server_name _
|
||||||
|
- root "{{ nginx_sites_default_root }}"
|
||||||
|
- index index.html
|
||||||
|
nginx_remove_sites: []
|
||||||
|
|
||||||
|
nginx_configs: {}
|
||||||
|
nginx_snippets: {}
|
||||||
|
nginx_stream_configs: {}
|
||||||
|
nginx_remove_configs: []
|
||||||
|
nginx_remove_snippets: []
|
||||||
|
|
||||||
|
nginx_auth_basic_files: {}
|
||||||
|
nginx_remove_auth_basic_files: []
|
||||||
|
|
||||||
|
nginx_daemon_mode: "on"
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: restart nginx
|
||||||
|
debug: msg="checking config first"
|
||||||
|
changed_when: True
|
||||||
|
notify:
|
||||||
|
- check nginx configuration
|
||||||
|
- restart nginx - after config check
|
||||||
|
|
||||||
|
- name: reload nginx
|
||||||
|
debug: msg="checking config first"
|
||||||
|
changed_when: True
|
||||||
|
notify:
|
||||||
|
- check nginx configuration
|
||||||
|
- reload nginx - after config check
|
||||||
|
|
||||||
|
- name: check nginx configuration
|
||||||
|
command: "{{ nginx_binary_name }} -t"
|
||||||
|
register: result
|
||||||
|
changed_when: "result.rc != 0"
|
||||||
|
check_mode: no
|
||||||
|
when: nginx_installation_type in nginx_installation_types_using_service
|
||||||
|
|
||||||
|
- name: restart nginx - after config check
|
||||||
|
service: name={{ nginx_service_name }} state=restarted
|
||||||
|
when: nginx_installation_type in nginx_installation_types_using_service and nginx_daemon_mode == "on"
|
||||||
|
|
||||||
|
- name: reload nginx - after config check
|
||||||
|
service: name={{ nginx_service_name }} state=reloaded
|
||||||
|
when: nginx_installation_type in nginx_installation_types_using_service and nginx_daemon_mode == "on"
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: "DAUPHANT Julien"
|
||||||
|
license: BSD
|
||||||
|
min_ansible_version: 2.2
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: Fedora
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: opensuse
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
- name: FreeBSD
|
||||||
|
versions:
|
||||||
|
- 10.0
|
||||||
|
- 10.1
|
||||||
|
- 10.2
|
||||||
|
- 10.3
|
||||||
|
- 11.0
|
||||||
|
- 11.1
|
||||||
|
- name: SmartOS
|
||||||
|
galaxy_tags:
|
||||||
|
- web
|
||||||
|
allow_duplicates: yes
|
||||||
|
dependencies: []
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
---
|
||||||
|
- name: Copy the nginx configuration file
|
||||||
|
template:
|
||||||
|
src: nginx.conf.j2
|
||||||
|
dest: "{{ nginx_conf_dir }}/nginx.conf"
|
||||||
|
notify:
|
||||||
|
- restart nginx
|
||||||
|
|
||||||
|
- name: Ensure auth_basic files created
|
||||||
|
template:
|
||||||
|
src: auth_basic.j2
|
||||||
|
dest: "{{ nginx_conf_dir }}/auth_basic/{{ item.key }}"
|
||||||
|
mode: 0750
|
||||||
|
with_dict: "{{ nginx_auth_basic_files }}"
|
||||||
|
|
||||||
|
- name: Create the configurations for sites
|
||||||
|
template:
|
||||||
|
src: "{{ item.value.template | default(nginx_default_site_template) }}"
|
||||||
|
dest: "{{ nginx_conf_dir }}/sites-available/{{ item.key }}.conf"
|
||||||
|
with_dict: "{{ nginx_sites }}"
|
||||||
|
when: item.key not in nginx_remove_sites
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Create links for sites-enabled
|
||||||
|
file:
|
||||||
|
state: link
|
||||||
|
src: "{{ nginx_conf_dir }}/sites-available/{{ item.key }}.conf"
|
||||||
|
dest: "{{ nginx_conf_dir }}/sites-enabled/{{ item.key }}.conf"
|
||||||
|
with_dict: "{{ nginx_sites }}"
|
||||||
|
when: item.key not in nginx_remove_sites
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Create the configurations for independent config file
|
||||||
|
template:
|
||||||
|
src: config.conf.j2
|
||||||
|
dest: "{{ nginx_conf_dir }}/conf.d/{{ item.key }}.conf"
|
||||||
|
with_dict: "{{ nginx_configs }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Create configuration snippets
|
||||||
|
template:
|
||||||
|
src: config.conf.j2
|
||||||
|
dest: "{{ nginx_conf_dir }}/snippets/{{ item.key }}.conf"
|
||||||
|
with_dict: "{{ nginx_snippets }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Create the configurations for independent config file for streams
|
||||||
|
template:
|
||||||
|
src: "{{ item.value.template | default('config_stream.conf.j2') }}"
|
||||||
|
dest: "{{ nginx_conf_dir }}/conf.d/stream/{{ item.key }}.conf"
|
||||||
|
with_dict: "{{ nginx_stream_configs }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
when: nginx_stream_params or nginx_stream_configs
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
- name: Create the directories for site specific configurations
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ nginx_conf_user }}"
|
||||||
|
group: "{{ nginx_conf_group }}"
|
||||||
|
mode: 0755
|
||||||
|
with_items:
|
||||||
|
- "sites-available"
|
||||||
|
- "sites-enabled"
|
||||||
|
- "auth_basic"
|
||||||
|
- "conf.d"
|
||||||
|
- "conf.d/stream"
|
||||||
|
- "snippets"
|
||||||
|
- "modules-available"
|
||||||
|
- "modules-enabled"
|
||||||
|
|
||||||
|
- name: Ensure log directory exist
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_log_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{nginx_log_user}}"
|
||||||
|
group: "{{nginx_log_group}}"
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Ensure ssh directory exist
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_ssl_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: "www-data"
|
||||||
|
group: "www-data"
|
||||||
|
mode: 0755
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
- name: Install the epel packages for EL distributions
|
||||||
|
package: name=epel-release state=present
|
||||||
|
when: nginx_is_el|bool and nginx_install_epel_repo|bool
|
||||||
|
|
||||||
|
- name: Install the nginx packages from official repo for EL distributions
|
||||||
|
yum: name={{ item }} state=present enablerepo="nginx"
|
||||||
|
with_items: "{{ nginx_pkgs }}"
|
||||||
|
when: nginx_is_el|bool and nginx_official_repo
|
||||||
|
|
||||||
|
- name: Install the nginx packages for all other distributions
|
||||||
|
package: name={{ item }} state=present
|
||||||
|
with_items: "{{ nginx_pkgs }}"
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: not nginx_is_el|bool or not nginx_official_repo
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- include_vars: "{{ item }}"
|
||||||
|
with_first_found:
|
||||||
|
- "../vars/{{ ansible_os_family }}.yml"
|
||||||
|
- "../vars/empty.yml"
|
||||||
|
tags: [always]
|
||||||
|
|
||||||
|
- include: selinux.yml
|
||||||
|
when: ansible_selinux and ansible_selinux.status == "enabled"
|
||||||
|
tags: [packages, selinux, nginx]
|
||||||
|
|
||||||
|
- include: nginx-official-repo.yml
|
||||||
|
when: nginx_official_repo == True
|
||||||
|
tags: [packages, nginx]
|
||||||
|
|
||||||
|
- include: installation.packages.yml
|
||||||
|
when: nginx_installation_type == "packages"
|
||||||
|
tags: [packages, nginx]
|
||||||
|
|
||||||
|
- include: ensure-dirs.yml
|
||||||
|
tags: [configuration, nginx]
|
||||||
|
|
||||||
|
- include: remove-defaults.yml
|
||||||
|
when: not keep_only_specified
|
||||||
|
tags: [configuration, nginx]
|
||||||
|
|
||||||
|
- include: remove-extras.yml
|
||||||
|
when: keep_only_specified
|
||||||
|
tags: [configuration, nginx]
|
||||||
|
|
||||||
|
- include: remove-unwanted.yml
|
||||||
|
tags: [configuration, nginx]
|
||||||
|
|
||||||
|
- include: configuration.yml
|
||||||
|
tags: [configuration, nginx, test]
|
||||||
|
|
||||||
|
- name: Start the nginx service
|
||||||
|
service: name={{ nginx_service_name }} state=started enabled=yes
|
||||||
|
when: nginx_installation_type in nginx_installation_types_using_service and nginx_daemon_mode == "on"
|
||||||
|
tags: [service, nginx]
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
- name: Ensure APT official nginx key
|
||||||
|
apt_key: url=http://nginx.org/keys/nginx_signing.key
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
|
|
||||||
|
- name: Ensure APT official nginx repository
|
||||||
|
apt_repository: repo="deb http://nginx.org/packages/{{ ansible_distribution|lower }}/ {{ ansible_distribution_release }} nginx"
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_os_family == 'Debian' and not nginx_official_repo_mainline
|
||||||
|
|
||||||
|
- name: Ensure APT official nginx repository (mainline)
|
||||||
|
apt_repository: repo="deb http://nginx.org/packages/mainline/{{ ansible_distribution|lower }}/ {{ ansible_distribution_release }} nginx"
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_os_family == 'Debian' and nginx_official_repo_mainline
|
||||||
|
|
||||||
|
- name: Ensure RPM official nginx key
|
||||||
|
rpm_key: key=http://nginx.org/keys/nginx_signing.key
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
|
- name: Ensure YUM official nginx repository
|
||||||
|
template: src=nginx.repo.j2 dest=/etc/yum.repos.d/nginx.repo
|
||||||
|
when: ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
|
- name: Ensure zypper official nginx repository
|
||||||
|
zypper_repository: repo="http://nginx.org/packages/sles/12" name="nginx" disable_gpg_check=yes
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_distribution == 'SLES' and ansible_distribution_version == '12' and not nginx_official_repo_mainline
|
||||||
|
|
||||||
|
- name: Ensure zypper official nginx repository (mainline)
|
||||||
|
zypper_repository: repo="http://nginx.org/packages/mainline/sles/12" name="nginx" disable_gpg_check=yes
|
||||||
|
environment: "{{ nginx_env }}"
|
||||||
|
when: ansible_distribution == 'SLES' and ansible_distribution_version == '12' and nginx_official_repo_mainline
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
- name: Disable the default site
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/sites-enabled/default"
|
||||||
|
state: absent
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Remove the default configuration
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/conf.d/default.conf"
|
||||||
|
state: absent
|
||||||
|
when: >
|
||||||
|
'default' not in nginx_configs.keys()
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
- name: Find enabled sites
|
||||||
|
shell: ls -1 {{nginx_conf_dir}}/sites-enabled || true
|
||||||
|
register: enabled_sites
|
||||||
|
changed_when: False
|
||||||
|
|
||||||
|
- name: Disable unmanaged sites
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/sites-enabled/{{ item }}"
|
||||||
|
state: absent
|
||||||
|
with_items: "{{ enabled_sites.stdout_lines | default([]) }}"
|
||||||
|
# 'item.conf' => 'item'
|
||||||
|
when: item[:-5] not in nginx_sites.keys()
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Find config files
|
||||||
|
shell: find {{nginx_conf_dir}}/conf.d -maxdepth 1 -type f -name '*.conf' -exec basename {} \;
|
||||||
|
register: config_files
|
||||||
|
changed_when: False
|
||||||
|
|
||||||
|
- name: Remove unmanaged config files
|
||||||
|
file:
|
||||||
|
name: "{{nginx_conf_dir}}/conf.d/{{ item }}"
|
||||||
|
state: absent
|
||||||
|
with_items: "{{ config_files.stdout_lines | default([]) }}"
|
||||||
|
# 'item.conf' => 'item'
|
||||||
|
when: item[:-5] not in nginx_configs.keys()
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
- name: Remove unwanted sites
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/{{ item[0] }}/{{ item[1] }}.conf"
|
||||||
|
state: absent
|
||||||
|
with_nested:
|
||||||
|
- ['sites-enabled', 'sites-available']
|
||||||
|
- "{{ nginx_remove_sites }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Remove unwanted conf
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/conf.d/{{ item[1] }}.conf"
|
||||||
|
state: absent
|
||||||
|
with_items: "{{ nginx_remove_configs }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Remove unwanted snippets
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_conf_dir }}/snippets/{{ item[1] }}.conf"
|
||||||
|
state: absent
|
||||||
|
with_items: "{{ nginx_remove_snippets }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
||||||
|
- name: Remove unwanted auth_basic_files
|
||||||
|
file:
|
||||||
|
path: "{{nginx_conf_dir}}/auth_basic/{{ item }}"
|
||||||
|
state: absent
|
||||||
|
with_items: "{{ nginx_remove_auth_basic_files }}"
|
||||||
|
notify:
|
||||||
|
- reload nginx
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
- name: Install the selinux python module
|
||||||
|
package: name={{ item }} state=present
|
||||||
|
with_items:
|
||||||
|
- libselinux-python
|
||||||
|
- libsemanage-python
|
||||||
|
when: ansible_os_family == "RedHat"
|
||||||
|
|
||||||
|
- name: Install the selinux python module
|
||||||
|
package: name={{ item }} state=present
|
||||||
|
with_items:
|
||||||
|
- python-selinux
|
||||||
|
- python-semanage
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
|
- name: Set SELinux boolean to allow nginx to set rlimit
|
||||||
|
seboolean: name=httpd_setrlimit state=yes persistent=yes
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
#{{ ansible_managed }}
|
||||||
|
|
||||||
|
{% for v in item.value %}
|
||||||
|
{{ v }}
|
||||||
|
{% endfor %}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#{{ ansible_managed }}
|
||||||
|
|
||||||
|
{% for v in item.value %}
|
||||||
|
{% if v.find('\n') != -1 %}
|
||||||
|
{{v}}
|
||||||
|
{% else %}
|
||||||
|
{% if v != "" %}{{ v.replace(";",";\n ").replace(" {"," {\n ").replace(" }"," \n}\n") }}{% if v.find('{') == -1%};
|
||||||
|
{% endif %}{% endif %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#{{ ansible_managed }}
|
||||||
|
|
||||||
|
{% for v in item.value %}
|
||||||
|
{% if v.find('\n') != -1 %}
|
||||||
|
{{v}}
|
||||||
|
{% else %}
|
||||||
|
{% if v != "" %}{{ v.replace(";",";\n ").replace(" {"," {\n ").replace(" }"," \n}\n") }}{% if v.find('{') == -1%};
|
||||||
|
{% endif %}{% endif %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
#{{ ansible_managed }}
|
||||||
|
user {{ nginx_user }} {{ nginx_group }};
|
||||||
|
|
||||||
|
worker_processes {{ nginx_worker_processes }};
|
||||||
|
|
||||||
|
{% if nginx_pid_file %}
|
||||||
|
pid {{ nginx_pid_file }};
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
worker_rlimit_nofile {{ nginx_worker_rlimit_nofile }};
|
||||||
|
|
||||||
|
include {{ nginx_conf_dir }}/modules-enabled/*.conf;
|
||||||
|
|
||||||
|
{% if nginx_extra_root_params is defined and nginx_extra_root_params is iterable %}
|
||||||
|
{% for line in nginx_extra_root_params %}
|
||||||
|
{{ line }};
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
events {
|
||||||
|
{% for v in nginx_events_params %}
|
||||||
|
{{ v }};
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
|
||||||
|
include {{ nginx_conf_dir }}/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
{% for v in nginx_http_params %}
|
||||||
|
{{ v }};
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
include {{ nginx_conf_dir }}/conf.d/*.conf;
|
||||||
|
include {{ nginx_conf_dir }}/sites-enabled/*;
|
||||||
|
}
|
||||||
|
|
||||||
|
{% if nginx_stream_params or nginx_stream_configs %}
|
||||||
|
stream {
|
||||||
|
|
||||||
|
{% for v in nginx_stream_params %}
|
||||||
|
{{ v }};
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
include {{ nginx_conf_dir }}/conf.d/stream/*.conf;
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if nginx_daemon_mode == "off" %}
|
||||||
|
daemon off;
|
||||||
|
{% endif %}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
[nginx]
|
||||||
|
name=nginx repo
|
||||||
|
{% if nginx_official_repo_mainline %}
|
||||||
|
baseurl=http://nginx.org/packages/mainline/{{"rhel" if ansible_distribution == "RedHat" else "centos"}}/{{ansible_distribution_version.split('.')[0]}}/{{ansible_architecture}}/
|
||||||
|
{% else %}
|
||||||
|
baseurl=http://nginx.org/packages/{{"rhel" if ansible_distribution == "RedHat" else "centos"}}/{{ansible_distribution_version.split('.')[0]}}/{{ansible_architecture}}/
|
||||||
|
{% endif %}
|
||||||
|
enabled=1
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
#Ansible managed
|
||||||
|
|
||||||
|
{% if activate_https == 'y' %}
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name {{ server_name }};
|
||||||
|
# force https
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen {{ '443 ssl' if activate_https == 'y' else '80' }};
|
||||||
|
server_name {{ server_name }};
|
||||||
|
|
||||||
|
# Specifies the maximum accepted body size of a client request,
|
||||||
|
# as indicated by the request header Content-Length.
|
||||||
|
client_max_body_size 200m;
|
||||||
|
|
||||||
|
# log files
|
||||||
|
access_log /var/log/nginx/odoo-access-prod.log;
|
||||||
|
error_log /var/log/nginx/odoo-error-prod.log;
|
||||||
|
|
||||||
|
# increase proxy buffer to handle some OpenERP web requests
|
||||||
|
proxy_buffers 16 64k;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
|
||||||
|
{% if activate_https == 'y' %}
|
||||||
|
# SSL config
|
||||||
|
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/odoo_prod.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/odoo_prod.key;
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:8069;
|
||||||
|
# force timeouts if the backend dies
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
|
||||||
|
# set headers
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# Let the Oddoo web service know that we're using HTTPS, otherwise
|
||||||
|
# it will generate URL using http:// and not https://
|
||||||
|
# proxy_set_header X-Forwarded-Proto https;
|
||||||
|
|
||||||
|
# by default, do not forward anything
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
|
||||||
|
# cache some static data in memory for 60mins.
|
||||||
|
# under heavy load this should relieve stress on the OpenERP web interface a bit.
|
||||||
|
location ~* /web/static/ {
|
||||||
|
proxy_cache_valid 200 60m;
|
||||||
|
proxy_buffering on;
|
||||||
|
expires 864000;
|
||||||
|
proxy_pass http://127.0.0.1:8069;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /longpolling/ {
|
||||||
|
proxy_pass http://127.0.0.1:8072;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
#Ansible managed
|
||||||
|
|
||||||
|
{% if activate_https == 'y' %}
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name {{ server_name }};
|
||||||
|
# force https
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen {{ '443 ssl' if activate_https == 'y' else '80' }};
|
||||||
|
server_name {{ server_name }};
|
||||||
|
|
||||||
|
# Specifies the maximum accepted body size of a client request,
|
||||||
|
# as indicated by the request header Content-Length.
|
||||||
|
client_max_body_size 200m;
|
||||||
|
|
||||||
|
# log files
|
||||||
|
access_log /var/log/nginx/odoo-access-test.log;
|
||||||
|
error_log /var/log/nginx/odoo-error-test.log;
|
||||||
|
|
||||||
|
# increase proxy buffer to handle some OpenERP web requests
|
||||||
|
proxy_buffers 16 64k;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
|
||||||
|
{% if activate_https == 'y' %}
|
||||||
|
# SSL config
|
||||||
|
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/odoo_test.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/odoo_test.key;
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:8070;
|
||||||
|
# force timeouts if the backend dies
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
|
||||||
|
# set headers
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# Let the Oddoo web service know that we're using HTTPS, otherwise
|
||||||
|
# it will generate URL using http:// and not https://
|
||||||
|
# proxy_set_header X-Forwarded-Proto https;
|
||||||
|
|
||||||
|
# by default, do not forward anything
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
|
||||||
|
# cache some static data in memory for 60mins.
|
||||||
|
# under heavy load this should relieve stress on the OpenERP web interface a bit.
|
||||||
|
location ~* /web/static/ {
|
||||||
|
proxy_cache_valid 200 60m;
|
||||||
|
proxy_buffering on;
|
||||||
|
expires 864000;
|
||||||
|
proxy_pass http://127.0.0.1:8070;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /longpolling/ {
|
||||||
|
proxy_pass http://127.0.0.1:8073;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
#{{ ansible_managed }}
|
||||||
|
|
||||||
|
server {
|
||||||
|
{% for v in item.value %}
|
||||||
|
{% if v.find('\n') != -1 %}
|
||||||
|
{{v.replace("\n","\n ")}}
|
||||||
|
{% else %}
|
||||||
|
{% if v != "" %}{{ v.replace(";",";\n ").replace(" {"," {\n ").replace(" }"," \n }\n") }}{% if v.find('{') == -1%};
|
||||||
|
{% endif %}{% endif %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
upstream backend {
|
||||||
|
server 10.0.0.101;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
server_name {{ item.value.server_name }};
|
||||||
|
location / {
|
||||||
|
proxy_pass http://backend;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
---
|
||||||
|
# The user to run nginx
|
||||||
|
nginx_user: "www-data"
|
||||||
|
|
||||||
|
nginx_hhvm: |
|
||||||
|
add_header X-backend hhvm;
|
||||||
|
try_files $uri $uri/ /index.php?$args;
|
||||||
|
location ~ \.(hh|php)$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
fastcgi_pass unix:/var/run/hhvm/sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
# A list of directives for the events section.
|
||||||
|
nginx_events_params:
|
||||||
|
- worker_connections 512
|
||||||
|
|
||||||
|
# A list of hashs that define the servers for nginx,
|
||||||
|
# as with http parameters. Any valid server parameters
|
||||||
|
# can be defined here.
|
||||||
|
|
||||||
|
nginx_sites:
|
||||||
|
default:
|
||||||
|
- listen 80
|
||||||
|
- server_name _
|
||||||
|
- root "/usr/share/nginx/html"
|
||||||
|
- index index.html
|
||||||
|
foo:
|
||||||
|
- listen 8080
|
||||||
|
- server_name localhost
|
||||||
|
- root "/tmp/site1"
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ { try_files $uri $uri/ /index.html; }
|
||||||
|
bar:
|
||||||
|
- listen 9090
|
||||||
|
- server_name ansible
|
||||||
|
- root "/tmp/site2"
|
||||||
|
- location / { try_files $uri $uri/ /index.html; }
|
||||||
|
- location /images/ {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
allow 127.0.0.1;
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
- auth_basic "Restricted"
|
||||||
|
- auth_basic_user_file auth_basic/demo
|
||||||
|
hhvm_test:
|
||||||
|
- |
|
||||||
|
listen 80;
|
||||||
|
server_name test_hhvm;
|
||||||
|
root "/tmp/hhvm";
|
||||||
|
{{nginx_hhvm}}
|
||||||
|
custom_bar:
|
||||||
|
template: custom_bar.conf.j2
|
||||||
|
server_name: bar.example.com
|
||||||
|
|
||||||
|
# A list of hashs that define additional configuration
|
||||||
|
nginx_configs:
|
||||||
|
proxy:
|
||||||
|
- proxy_set_header X-Real-IP $remote_addr
|
||||||
|
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
|
||||||
|
upstream:
|
||||||
|
- upstream foo { server 127.0.0.1:8080 weight=10; }
|
||||||
|
geo:
|
||||||
|
- geo $local {
|
||||||
|
default 0;
|
||||||
|
127.0.0.1 1;
|
||||||
|
}
|
||||||
|
gzip:
|
||||||
|
- gzip on
|
||||||
|
- gzip_disable msie6
|
||||||
|
|
||||||
|
# A list of hashes that define configuration snippets
|
||||||
|
nginx_snippets:
|
||||||
|
error_pages:
|
||||||
|
- error_page 500 /http_errors/500.html
|
||||||
|
- error_page 502 /http_errors/502.html
|
||||||
|
- error_page 503 /http_errors/503.html
|
||||||
|
- error_page 504 /http_errors/504.html
|
||||||
|
|
||||||
|
# A list of hashs that define uer/password files
|
||||||
|
nginx_auth_basic_files:
|
||||||
|
demo:
|
||||||
|
- foo:$apr1$mEJqnFmy$zioG2q1iDWvRxbHuNepIh0 # foo:demo , generated by : htpasswd -nb foo demo
|
||||||
|
- bar:$apr1$H2GihkSo$PwBeV8cVWFFQlnAJtvVCQ. # bar:demo , generated by : htpasswd -nb bar demo
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
- hosts: "{{hosts_group|default('all')}}"
|
||||||
|
vars_files:
|
||||||
|
- 'example-vars.yml'
|
||||||
|
roles:
|
||||||
|
- "{{role_name|default('nginx')}}"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
nginx_user: www-data
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
nginx_conf_dir: /usr/local/etc/nginx
|
||||||
|
nginx_user: www
|
||||||
|
nginx_sites_default_root: /usr/local/www/nginx-dist
|
||||||
|
nginx_conf_group: wheel
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
nginx_conf_dir: /opt/local/etc/nginx
|
||||||
|
nginx_user: www
|
||||||
|
nginx_sites_default_root: /opt/local/www
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# This file intentionally does not define any variables.
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
nginx_env:
|
||||||
|
RUNLEVEL: 1
|
||||||
|
|
||||||
|
nginx_installation_types_using_service: ["packages", "configuration-only"]
|
||||||
|
|
||||||
|
nginx_is_el: "{{ ansible_distribution in ['RedHat', 'CentOS'] }}"
|
||||||
|
|
||||||
|
nginx_http_default_params:
|
||||||
|
- sendfile on
|
||||||
|
- tcp_nopush on
|
||||||
|
- tcp_nodelay on
|
||||||
|
- server_tokens off
|
||||||
|
- access_log "{{nginx_log_dir}}/access.log"
|
||||||
|
- error_log "{{nginx_log_dir}}/error.log" {{nginx_error_log_level}}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
---
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Debian 8 (jessie)
|
||||||
|
# Odoo 8.0
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 9.0
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 10.0
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/jessie" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Debian 9 (stretch)
|
||||||
|
# Odoo 8.0
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 9.0
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 10.0
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 11.0
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=11.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="images:debian/stretch" ODOO_VERSION=11.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Ubuntu 14.04 (trusty)
|
||||||
|
# Odoo 8.0
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 9.0
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 10.0
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:trusty" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Ubuntu 16.04 (xenial)
|
||||||
|
# Odoo 8.0
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=8.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 9.0
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=9.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 10.0
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=10.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
# Odoo 11.0
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=11.0 ODOO_INSTALL_TYPE=standard ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
- IMAGE="ubuntu:xenial" ODOO_VERSION=11.0 ODOO_INSTALL_TYPE=buildout ANSIBLE_VERSION="2.4,<2.5"
|
||||||
|
|
||||||
|
install:
|
||||||
|
# Spawn a LXD container
|
||||||
|
- sudo ./tests/travis_lxd/install.sh
|
||||||
|
- sudo ./tests/travis_lxd/create_container.sh odoo-test
|
||||||
|
|
||||||
|
script:
|
||||||
|
# Test the project into the container
|
||||||
|
- sudo lxc exec odoo-test -- sh -c "/opt/ansible-odoo/tests/run.sh"
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
# Odoo [](https://travis-ci.org/osiell/ansible-odoo)
|
||||||
|
|
||||||
|
Ansible role to install Odoo from a Git or Mercurial repository,
|
||||||
|
and configure it.
|
||||||
|
|
||||||
|
This role supports two types of installation:
|
||||||
|
|
||||||
|
* **standard**: install the Odoo dependencies from APT repositories and the
|
||||||
|
Odoo project from a Git/Hg repository. Odoo is configured with Ansible options
|
||||||
|
(`odoo_config_*` ones).
|
||||||
|
|
||||||
|
* **buildout**: build the Odoo project from a Git/Hg repository containing a
|
||||||
|
Buildout configuration file based on the
|
||||||
|
[anybox.recipe.odoo](https://pypi.python.org/pypi/anybox.recipe.odoo/) recipe.
|
||||||
|
Odoo and its dependencies are then installed and executed inside a Python
|
||||||
|
virtual environment. The configuration part is also managed by Buildout
|
||||||
|
(`odoo_config_*` options are not used excepting the `odoo_config_db_*` ones
|
||||||
|
for PostgreSQL related tasks).
|
||||||
|
|
||||||
|
Minimum Ansible Version: 2.4
|
||||||
|
|
||||||
|
## Supported versions and systems
|
||||||
|
|
||||||
|
| System / Odoo | 8.0 | 9.0 | 10.0 | 11.0 |
|
||||||
|
|---------------|-----|-----|------|------|
|
||||||
|
| Debian 8 | yes | yes | yes | - |
|
||||||
|
| Debian 9 | yes | yes | yes | yes |
|
||||||
|
| Ubuntu 14.04 | yes | yes | yes | - |
|
||||||
|
| Ubuntu 16.04 | yes | yes | yes | yes |
|
||||||
|
|
||||||
|
## Example (Playbook)
|
||||||
|
|
||||||
|
### odoo_install_type: standard (default)
|
||||||
|
|
||||||
|
Standard installation (assuming that PostgreSQL is installed and running on
|
||||||
|
the same host):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Odoo
|
||||||
|
hosts: odoo_server
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_config_admin_passwd: SuPerPassWorD
|
||||||
|
```
|
||||||
|
|
||||||
|
With the standard installation type you configure Odoo with the available
|
||||||
|
`odoo_config_*` options.
|
||||||
|
|
||||||
|
Standard installation but with PostgreSQL installed on a remote host (and
|
||||||
|
available from your Ansible inventory):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Odoo
|
||||||
|
hosts: odoo_server
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_config_admin_passwd: SuPerPassWorD
|
||||||
|
odoo_config_db_host: pg_server
|
||||||
|
odoo_config_db_user: odoo
|
||||||
|
odoo_config_db_passwd: PaSsWoRd
|
||||||
|
```
|
||||||
|
|
||||||
|
Standard installation from a personnal Git repository such as your repository
|
||||||
|
looks like this:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
REPO/
|
||||||
|
├── server # could be a sub-repository of https://github.com/odoo/odoo
|
||||||
|
├── addons_oca_web # another sub-repository (https://github.com/OCA/web here)
|
||||||
|
├── addons_oca_connector # yet another sub-repository (https://github.com/OCA/connector)
|
||||||
|
└── addons # custom modules
|
||||||
|
```
|
||||||
|
|
||||||
|
Here we set some options required by the ``connector`` framework:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Odoo
|
||||||
|
hosts: odoo_server
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_repo_type: git
|
||||||
|
odoo_repo_url: https://SERVER/REPO
|
||||||
|
odoo_repo_rev: master
|
||||||
|
odoo_repo_dest: "/home/{{ odoo_user }}/odoo"
|
||||||
|
odoo_init_env:
|
||||||
|
ODOO_CONNECTOR_CHANNELS: root:2
|
||||||
|
odoo_config_admin_passwd: SuPerPassWorD
|
||||||
|
odoo_config_addons_path:
|
||||||
|
- "/home/{{ odoo_user }}/odoo/server/openerp/addons"
|
||||||
|
- "/home/{{ odoo_user }}/odoo/server/addons"
|
||||||
|
- "/home/{{ odoo_user }}/odoo/addons_oca_web"
|
||||||
|
- "/home/{{ odoo_user }}/odoo/addons_oca_connector"
|
||||||
|
- "/home/{{ odoo_user }}/odoo/addons"
|
||||||
|
odoo_config_server_wide_modules: web,web_kanban,connector
|
||||||
|
odoo_config_workers: 8
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
The same but with PostgreSQL installed on a remote host (and available from
|
||||||
|
your Ansible inventory):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Odoo
|
||||||
|
hosts: odoo_server
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_install_type: buildout
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_repo_type: git
|
||||||
|
odoo_repo_url: https://github.com/osiell/odoo-buildout-example.git
|
||||||
|
odoo_repo_rev: "{{ odoo_version }}"
|
||||||
|
odoo_repo_dest: "/home/{{ odoo_user }}/odoo"
|
||||||
|
odoo_config_db_host: pg_server
|
||||||
|
odoo_config_db_user: odoo
|
||||||
|
odoo_config_db_passwd: PaSsWoRd
|
||||||
|
```
|
||||||
|
|
||||||
|
By default Ansible is looking for a `bootstrap.py` script and a `buildout.cfg`
|
||||||
|
file at the root of the cloned repository to call Buildout, but you can change
|
||||||
|
that to point to your own files. Assuming your repository looks like this:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
REPO/
|
||||||
|
├── addons # custom modules
|
||||||
|
├── bin
|
||||||
|
│ └── bootstrap.py
|
||||||
|
├── builtout.cfg
|
||||||
|
├── builtout.dev.cfg
|
||||||
|
├── builtout.prod.cfg
|
||||||
|
└── builtout.test.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
We just set the relevant options to tell Ansible the files to use with the
|
||||||
|
`odoo_buildout_*` options:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Odoo
|
||||||
|
hosts: odoo_server
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- role: odoo
|
||||||
|
odoo_install_type: buildout
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_repo_type: git
|
||||||
|
odoo_repo_url: https://SERVER/REPO
|
||||||
|
odoo_repo_rev: master
|
||||||
|
odoo_repo_dest: "/home/{{ odoo_user }}/odoo"
|
||||||
|
odoo_buildout_bootstrap_path: "/home/{{ odoo_user }}/odoo/bin/bootstrap.py"
|
||||||
|
odoo_buildout_config_path: "/home/{{ odoo_user }}/odoo/buildout.prod.cfg"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
See the [defaults/main.yml](defaults/main.yml) file.
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
ansible_ssh_pipelining: true
|
||||||
|
|
||||||
|
odoo_install_type: standard
|
||||||
|
odoo_version: 11.0
|
||||||
|
odoo_service: odoo
|
||||||
|
odoo_user: odoo
|
||||||
|
odoo_user_passwd: x
|
||||||
|
odoo_user_system: False
|
||||||
|
odoo_init: True
|
||||||
|
odoo_init_env: {}
|
||||||
|
#VAR1: value1
|
||||||
|
#VAR2: value2
|
||||||
|
odoo_logdir: "/var/log/{{ odoo_user }}"
|
||||||
|
odoo_workdir: "/home/{{ odoo_user }}/odoo"
|
||||||
|
odoo_rootdir: "/home/{{ odoo_user }}/odoo/server"
|
||||||
|
odoo_coredir: "/home/{{ odoo_user }}/odoo/server"
|
||||||
|
|
||||||
|
# Project repository to deploy
|
||||||
|
odoo_repo_type: git # git or hg
|
||||||
|
odoo_repo_url: "https://github.com/odoo/odoo.git"
|
||||||
|
odoo_repo_dest: "{{ odoo_rootdir }}"
|
||||||
|
odoo_repo_rev: "{{ odoo_version }}"
|
||||||
|
odoo_repo_update: True # Update the working copy or not. This option is
|
||||||
|
# ignored on the first run (a checkout of the working
|
||||||
|
# copy is always processed on the given revision)
|
||||||
|
# WARNING: uncommited changes will be discarded!
|
||||||
|
odoo_repo_depth: 1 # Set to 0 to clone the full history (slower)
|
||||||
|
# (this option is not supported with hg)
|
||||||
|
|
||||||
|
# Third party programs options
|
||||||
|
odoo_wkhtmltox_version: 0.12.1 # Download URLs available in the
|
||||||
|
# 'odoo_wkhtmltox_urls' variable
|
||||||
|
# (see 'vars/main.yml')
|
||||||
|
odoo_reportlab_font_url: http://www.reportlab.com/ftp/pfbfer.zip
|
||||||
|
|
||||||
|
# Tasks related to PostgreSQL
|
||||||
|
odoo_postgresql_set_user: True
|
||||||
|
odoo_postgresql_user_role_attr: CREATEDB,NOSUPERUSER
|
||||||
|
odoo_postgresql_extensions:
|
||||||
|
- unaccent
|
||||||
|
|
||||||
|
# Standard installation/configuration options (odoo_install_type == 'standard')
|
||||||
|
odoo_config_file: "/home/{{ odoo_user }}/{{ odoo_service }}.conf"
|
||||||
|
odoo_force_config: True
|
||||||
|
odoo_config_addons_path:
|
||||||
|
- "/home/{{ odoo_user }}/odoo/server/{{ (odoo_version | int) < 9 and 'openerp' or 'odoo' }}/addons"
|
||||||
|
- "/home/{{ odoo_user }}/odoo/server/addons"
|
||||||
|
odoo_config_admin_passwd: SuPerPassWorD
|
||||||
|
odoo_config_auto_reload: False
|
||||||
|
odoo_config_csv_internal_sep: ','
|
||||||
|
odoo_config_data_dir: "/home/{{ odoo_user }}/.local/share/Odoo"
|
||||||
|
odoo_config_db_host: localhost
|
||||||
|
odoo_config_db_host_user: "{{ ansible_user }}"
|
||||||
|
odoo_config_db_maxconn: 64
|
||||||
|
odoo_config_db_name: odoo
|
||||||
|
odoo_config_db_passwd: odoo
|
||||||
|
odoo_config_db_port: 5432
|
||||||
|
odoo_config_db_sslmode: prefer # >= 11.0
|
||||||
|
odoo_config_db_template: template1
|
||||||
|
odoo_config_db_user: "{{ odoo_user }}"
|
||||||
|
odoo_config_dbfilter: '.*'
|
||||||
|
odoo_config_debug_mode: False # <= 9.0
|
||||||
|
odoo_config_pidfile: None
|
||||||
|
odoo_config_proxy_mode: False
|
||||||
|
odoo_config_email_from: False
|
||||||
|
odoo_config_geoip_database: /usr/share/GeoIP/GeoLiteCity.dat
|
||||||
|
odoo_config_http_enable: True # >= 11.0
|
||||||
|
odoo_config_http_interface: '' # >= 11.0
|
||||||
|
odoo_config_http_port: 8069 # >= 11.0
|
||||||
|
odoo_config_limit_memory_hard: 805306368
|
||||||
|
odoo_config_limit_memory_soft: 671088640
|
||||||
|
odoo_config_limit_time_cpu: 60
|
||||||
|
odoo_config_limit_time_real: 120
|
||||||
|
odoo_config_limit_time_real_cron: -1 # >= 10.0
|
||||||
|
odoo_config_list_db: True
|
||||||
|
odoo_config_log_db: False
|
||||||
|
odoo_config_log_level: info
|
||||||
|
odoo_config_logfile: None
|
||||||
|
odoo_config_logrotate: True
|
||||||
|
odoo_config_longpolling_port: 8072
|
||||||
|
odoo_config_osv_memory_age_limit: 1.0
|
||||||
|
odoo_config_osv_memory_count_limit: False
|
||||||
|
odoo_config_max_cron_threads: 2
|
||||||
|
odoo_config_secure_cert_file: server.cert
|
||||||
|
odoo_config_secure_pkey_file: server.pkey
|
||||||
|
odoo_config_server_wide_modules: None
|
||||||
|
odoo_config_smtp_password: False
|
||||||
|
odoo_config_smtp_port: 25
|
||||||
|
odoo_config_smtp_server: localhost
|
||||||
|
odoo_config_smtp_ssl: False
|
||||||
|
odoo_config_smtp_user: False
|
||||||
|
odoo_config_syslog: False
|
||||||
|
odoo_config_timezone: False
|
||||||
|
odoo_config_translate_modules: "['all']"
|
||||||
|
odoo_config_unaccent: False
|
||||||
|
odoo_config_without_demo: False
|
||||||
|
odoo_config_workers: 0
|
||||||
|
odoo_config_xmlrpc: True # <= 10.0
|
||||||
|
odoo_config_xmlrpc_interface: '' # <= 10.0
|
||||||
|
odoo_config_xmlrpc_port: 8069 # <= 10.0
|
||||||
|
odoo_config_xmlrpcs: True # <= 8.0
|
||||||
|
odoo_config_xmlrpcs_interface: '' # <= 8.0
|
||||||
|
odoo_config_xmlrpcs_port: 8071 # <= 8.0
|
||||||
|
# Custom configuration options
|
||||||
|
odoo_config_custom: {}
|
||||||
|
#your_option1: value1
|
||||||
|
#your_option2: value2
|
||||||
|
|
||||||
|
# Extra options
|
||||||
|
odoo_user_sshkeys: "../../ssh_keys/*" # ../../path/to/public_keys/*
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Restart Odoo
|
||||||
|
service:
|
||||||
|
name: "{{ odoo_service }}"
|
||||||
|
state: restarted
|
||||||
|
when: odoo_init == True
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: Sébastien Alix
|
||||||
|
description: Ansible role to install Odoo from a Git or Mercurial repository, and configure it.
|
||||||
|
company: OSIELL
|
||||||
|
license: GPLv3
|
||||||
|
min_ansible_version: 2.4
|
||||||
|
platforms:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- jessie
|
||||||
|
- stretch
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- trusty
|
||||||
|
- xenial
|
||||||
|
categories:
|
||||||
|
- web
|
||||||
|
dependencies: []
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Generate Odoo configuration file
|
||||||
|
template: src=odoo-{{ odoo_version }}.conf dest={{ odoo_config_file }}
|
||||||
|
owner={{ odoo_user }} group={{ odoo_user }} mode=0600
|
||||||
|
force={{ odoo_force_config and 'yes' or 'no' }}
|
||||||
|
backup=yes
|
||||||
|
notify: Restart Odoo
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Install required tools
|
||||||
|
apt: pkg={{ item }}
|
||||||
|
state=installed
|
||||||
|
update_cache={{ odoo_apt_update_cache }}
|
||||||
|
cache_valid_time={{ odoo_apt_cache_valid_time }}
|
||||||
|
with_items: "{{ odoo_required_tools }}"
|
||||||
|
tags:
|
||||||
|
- odoo_required_tools
|
||||||
|
|
||||||
|
- name: Add Odoo instance user
|
||||||
|
user: name={{ odoo_user }} shell=/bin/bash
|
||||||
|
password={{ odoo_user_passwd }} update_password=on_create
|
||||||
|
system={{ odoo_user_system }}
|
||||||
|
generate_ssh_key=yes ssh_key_bits=2048
|
||||||
|
move_home=yes
|
||||||
|
home=/data/{{ odoo_user }}
|
||||||
|
tags:
|
||||||
|
- odoo_user
|
||||||
|
|
||||||
|
- name: Add general odoo user
|
||||||
|
user: name=odoo shell=/bin/bash
|
||||||
|
password={{ odoo_general_user_passwd }} update_password=on_create
|
||||||
|
move_home=yes
|
||||||
|
home=/data/odoo
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
become_method: "sudo"
|
||||||
|
tags:
|
||||||
|
- odoo_user
|
||||||
|
|
||||||
|
- name: Allow general odoo user to have passwordless sudo
|
||||||
|
lineinfile:
|
||||||
|
dest: /etc/sudoers
|
||||||
|
state: present
|
||||||
|
regexp: '^odoo$'
|
||||||
|
line: 'odoo ALL=(ALL:ALL) NOPASSWD: ALL'
|
||||||
|
validate: visudo -cf %s
|
||||||
|
|
||||||
|
- name: Create log directory
|
||||||
|
file: path={{ odoo_logdir }} state=directory
|
||||||
|
owner={{ odoo_user }} group={{ odoo_user }} force=no
|
||||||
|
tags:
|
||||||
|
- odoo_log
|
||||||
|
|
||||||
|
- name: Create log file
|
||||||
|
file:
|
||||||
|
path: "{{ odoo_logdir }}/{{ odoo_service }}.log"
|
||||||
|
state: touch
|
||||||
|
mode: "u=rw,g=rw,o=r"
|
||||||
|
owner: "{{ odoo_user }}"
|
||||||
|
group: "{{ odoo_user }}"
|
||||||
|
|
||||||
|
- name: Create sym link to logfile
|
||||||
|
file:
|
||||||
|
src: "{{ odoo_logdir }}/{{ odoo_service }}.log"
|
||||||
|
dest: "/data/{{ odoo_user }}/log"
|
||||||
|
owner: "{{ odoo_user }}"
|
||||||
|
group: "{{ odoo_user }}"
|
||||||
|
state: link
|
||||||
|
tags:
|
||||||
|
- odoo_log
|
||||||
|
|
||||||
|
- import_tasks: install_extra.yml
|
||||||
|
when: odoo_user_sshkeys is defined and odoo_user_sshkeys
|
||||||
|
tags:
|
||||||
|
- odoo_install_extra
|
||||||
|
|
||||||
|
- name: Project repository already cloned?
|
||||||
|
stat: path={{ odoo_repo_dest }}
|
||||||
|
register: project_path
|
||||||
|
tags:
|
||||||
|
- odoo_project
|
||||||
|
|
||||||
|
- name: Clone project repository (Git)
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ odoo_user }}"
|
||||||
|
git: repo={{ odoo_repo_url }}
|
||||||
|
dest={{ odoo_repo_dest }}
|
||||||
|
version={{ odoo_repo_rev | string }}
|
||||||
|
update={{ project_path.stat.exists == False and 'yes'
|
||||||
|
or (odoo_repo_update and 'yes' or 'no') }}
|
||||||
|
depth={{ odoo_repo_depth }}
|
||||||
|
accept_hostkey=yes
|
||||||
|
key_file="/data/{{ odoo_user }}/.ssh/id_rsa"
|
||||||
|
when: odoo_repo_type == 'git' and odoo_repo_url
|
||||||
|
notify: Restart Odoo
|
||||||
|
tags:
|
||||||
|
- odoo_project
|
||||||
|
|
||||||
|
- name: Standard installation
|
||||||
|
import_tasks: install_standard.yml
|
||||||
|
when: odoo_install_type == 'standard'
|
||||||
|
tags:
|
||||||
|
- odoo_install_type_standard
|
||||||
|
|
||||||
|
- name: Install datenpol scripts
|
||||||
|
import_tasks: install_datenpol_scripts.yml
|
||||||
|
when: odoo_install_type == 'standard'
|
||||||
|
tags:
|
||||||
|
- odoo_install_dp_scripts
|
||||||
|
|
||||||
|
- name: Install NPM packages
|
||||||
|
import_tasks: install_npm.yml
|
||||||
|
when: (odoo_version | int) >= 9
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_packages
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Generate restart.sh
|
||||||
|
template: src=restart.sh dest="/data/{{ odoo_user }}"
|
||||||
|
owner={{ odoo_user }} group={{ odoo_user }} mode=0755
|
||||||
|
|
||||||
|
- name: Generate update-source.sh
|
||||||
|
template: src=update-source.sh dest="/data/{{ odoo_user }}/odoo"
|
||||||
|
owner={{ odoo_user }} group={{ odoo_user }} mode=0755
|
||||||
|
|
||||||
|
- name: Ensure main pgdump directory exist
|
||||||
|
file:
|
||||||
|
path: "/var/pgdump"
|
||||||
|
state: directory
|
||||||
|
owner: "root"
|
||||||
|
group: "root"
|
||||||
|
mode: "u=rwx,g=rwx,o=rwx"
|
||||||
|
|
||||||
|
- name: Ensure pgdump directory for instance exist
|
||||||
|
file:
|
||||||
|
path: "/var/pgdump/{{ odoo_instance }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{odoo_user}}"
|
||||||
|
group: "{{odoo_user}}"
|
||||||
|
mode: "u=rwx,g=,o="
|
||||||
|
|
||||||
|
- name: Generate odoo-backup.sh
|
||||||
|
template: src=odoo-backup.sh dest="/data/{{ odoo_user }}"
|
||||||
|
owner={{ odoo_user }} group={{ odoo_user }} mode=0755
|
||||||
|
|
||||||
|
- cron:
|
||||||
|
name: "Cron Job for backupscript"
|
||||||
|
hour: "1"
|
||||||
|
minute: "30"
|
||||||
|
job: "/data/{{ odoo_user }}/odoo-backup.sh"
|
||||||
|
user: "{{odoo_user}}"
|
||||||
|
|
||||||
|
- name: Create deployment-history.txt
|
||||||
|
file:
|
||||||
|
path: "/data/{{ odoo_user }}/deployment-history.txt"
|
||||||
|
state: touch
|
||||||
|
mode: "u=rw,g=rw,o=r"
|
||||||
|
owner: "{{ odoo_user }}"
|
||||||
|
group: "{{ odoo_user }}"
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Set SSH public keys for the Odoo instance user
|
||||||
|
authorized_key: user={{ odoo_user }}
|
||||||
|
key="{{ lookup('file', item) }}"
|
||||||
|
with_fileglob:
|
||||||
|
- "{{ odoo_user_sshkeys }}"
|
||||||
|
tags:
|
||||||
|
- odoo_ssh
|
||||||
|
|
||||||
|
- name: Set SSH public keys for the Odoo general user
|
||||||
|
authorized_key: user=odoo
|
||||||
|
key="{{ lookup('file', item) }}"
|
||||||
|
with_fileglob:
|
||||||
|
- "{{ odoo_user_sshkeys }}"
|
||||||
|
tags:
|
||||||
|
- odoo_ssh
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Configure NodeJS APT repository signing key
|
||||||
|
apt_key:
|
||||||
|
url: "{{ item.url }}"
|
||||||
|
state: "{{ item.state }}"
|
||||||
|
with_items: "{{ odoo_nodejs_apt_keys | default([]) }}"
|
||||||
|
|
||||||
|
- name: Configure NodeJS APT repository
|
||||||
|
apt_repository:
|
||||||
|
repo: "{{ item.repo }}"
|
||||||
|
state: "{{ item.state }}"
|
||||||
|
with_items: "{{ odoo_nodejs_apt_repositories | default([]) }}"
|
||||||
|
|
||||||
|
- name: Install NodeJS
|
||||||
|
apt: pkg="{{ odoo_nodejs_apt_package }}"
|
||||||
|
state=installed
|
||||||
|
update_cache=yes
|
||||||
|
|
||||||
|
- name: Install Odoo dependencies (npm)
|
||||||
|
npm: name={{ item.name }}
|
||||||
|
version={{ item.version }}
|
||||||
|
global=yes
|
||||||
|
with_items: "{{ odoo_npm_packages | default([]) }}"
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Install PostgreSQL
|
||||||
|
apt: name={{ item }} update_cache=true state=installed
|
||||||
|
with_items:
|
||||||
|
- postgresql
|
||||||
|
- postgresql-contrib
|
||||||
|
- libpq-dev
|
||||||
|
- python-psycopg2
|
||||||
|
tags: packages
|
||||||
|
|
||||||
|
- name: Ensure the PostgreSQL service is running
|
||||||
|
service: name=postgresql state=started enabled=yes
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Install Odoo dependencies
|
||||||
|
apt: pkg={{ item }}
|
||||||
|
state=installed
|
||||||
|
update_cache={{ odoo_apt_update_cache }}
|
||||||
|
cache_valid_time={{ odoo_apt_cache_valid_time }}
|
||||||
|
with_items: "{{ odoo_debian_packages }}"
|
||||||
|
tags:
|
||||||
|
- odoo_packages
|
||||||
|
|
||||||
|
- name: Install Odoo dependencies (PyPi)
|
||||||
|
pip: name={{ item }}
|
||||||
|
with_items: "{{ odoo_pypi_packages }}"
|
||||||
|
tags:
|
||||||
|
- odoo_packages
|
||||||
|
|
||||||
|
- import_tasks: config.yml
|
||||||
|
tags:
|
||||||
|
- odoo_config
|
||||||
|
|
||||||
|
- name: Generate Odoo init script
|
||||||
|
template: src=odoo-{{ odoo_version }}.init dest=/etc/init.d/{{ odoo_service }}
|
||||||
|
owner=root group=root mode=0755
|
||||||
|
force={{ odoo_force_config and 'yes' or 'no' }}
|
||||||
|
backup=yes
|
||||||
|
notify: Restart Odoo
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Set variables depending on the platform and the version of Odoo
|
||||||
|
include_vars: "{{ item }}"
|
||||||
|
with_first_found:
|
||||||
|
- "../vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int}}_Odoo-{{ odoo_version | int }}.yml"
|
||||||
|
tags:
|
||||||
|
- always
|
||||||
|
|
||||||
|
- import_tasks: install.yml
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_install
|
||||||
|
|
||||||
|
- import_tasks: reportlab.yml
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_reportlab
|
||||||
|
|
||||||
|
- import_tasks: install_postgresql.yml
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_postgresql
|
||||||
|
|
||||||
|
- import_tasks: postgresql.yml
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_postgresql
|
||||||
|
|
||||||
|
- import_tasks: service.yml
|
||||||
|
tags:
|
||||||
|
- odoo
|
||||||
|
- odoo_service
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Delegate PostgreSQL tasks to the relevant host
|
||||||
|
set_fact:
|
||||||
|
odoo_postgresql_delegate_to: "{{ odoo_config_db_host if ((odoo_config_db_host|bool) != False) else inventory_hostname }}"
|
||||||
|
odoo_postgresql_remote_user: "{{ odoo_config_db_host_user if ((odoo_config_db_host|bool) != False) else ansible_user }}"
|
||||||
|
|
||||||
|
- block:
|
||||||
|
|
||||||
|
- name: PostgreSQL - Add the Odoo user
|
||||||
|
postgresql_user: name={{ odoo_config_db_user }}
|
||||||
|
role_attr_flags={{ odoo_postgresql_user_role_attr }}
|
||||||
|
when: odoo_postgresql_set_user
|
||||||
|
|
||||||
|
- name: PostgreSQL - Set the Odoo user password
|
||||||
|
postgresql_user: name={{ odoo_config_db_user }}
|
||||||
|
password={{ odoo_config_db_passwd }}
|
||||||
|
when: odoo_config_db_passwd is defined and odoo_config_db_passwd
|
||||||
|
and odoo_postgresql_set_user
|
||||||
|
|
||||||
|
- name: PostgreSQL - Activate some extensions on the 'template1' database
|
||||||
|
postgresql_ext:
|
||||||
|
name: "{{ item }}"
|
||||||
|
db: template1
|
||||||
|
with_items: "{{ odoo_postgresql_extensions }}"
|
||||||
|
|
||||||
|
delegate_to: "{{ odoo_postgresql_delegate_to }}"
|
||||||
|
remote_user: "{{ odoo_postgresql_remote_user }}"
|
||||||
|
become: yes
|
||||||
|
become_user: postgres
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
# Download and install the barcode fonts from ReportLab
|
||||||
|
- name: Download the ReportLab barcode fonts
|
||||||
|
get_url: url="{{ odoo_reportlab_font_url }}"
|
||||||
|
dest="/root/pfbfer.zip"
|
||||||
|
|
||||||
|
- name: Create the font directory
|
||||||
|
file: path="/home/{{ odoo_user }}/fonts" state=directory
|
||||||
|
|
||||||
|
- name: Install unzip
|
||||||
|
apt: name=unzip state=installed
|
||||||
|
|
||||||
|
- name: Unzip the ReportLab fonts
|
||||||
|
unarchive: src="/root/pfbfer.zip"
|
||||||
|
dest="/home/{{ odoo_user }}/fonts"
|
||||||
|
owner={{ odoo_user }}
|
||||||
|
group={{ odoo_user }}
|
||||||
|
mode="u=rwX,go=rX"
|
||||||
|
copy=No
|
||||||
|
creates="/home/{{ odoo_user }}/fonts/_abi____.pfb"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Enable Odoo service
|
||||||
|
service: name={{ odoo_service }} enabled=yes state=started
|
||||||
|
when: odoo_init == True
|
||||||
|
|
||||||
|
- name: Disable Odoo service
|
||||||
|
service: name={{ odoo_service }} enabled=no state=stopped
|
||||||
|
when: odoo_init == False
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Detect Debian architecture (i386 or amd64)
|
||||||
|
set_fact: odoo_debian_arch={{ '64' in ansible_architecture and 'amd64' or 'i386' }}
|
||||||
|
|
||||||
|
- name: Download wkhtmltox
|
||||||
|
get_url: url={{ item }}
|
||||||
|
dest={{ odoo_wkhtmltox_dest }}
|
||||||
|
with_items: "{{ odoo_wkhtmltox_urls }}"
|
||||||
|
ignore_errors: True
|
||||||
|
when: odoo_wkhtmltox_version is defined and odoo_wkhtmltox_version != False
|
||||||
|
|
||||||
|
# Use to detect that the package was downloaded.
|
||||||
|
# We can not register the result of the previous task to check this as Ansible
|
||||||
|
# will flag it as failed as soon as one URL fails (even if the download has
|
||||||
|
# worked on a further URL)
|
||||||
|
- name: Check wkhtmltox package
|
||||||
|
stat: path={{ odoo_wkhtmltox_dest }}
|
||||||
|
register: odoo_wkhtmltox_pkg
|
||||||
|
|
||||||
|
- name: Install wkhtmltox dependencies
|
||||||
|
apt: pkg={{ item }}
|
||||||
|
with_items: "{{ odoo_wkhtmltox_depends }}"
|
||||||
|
when: odoo_wkhtmltox_version is defined and odoo_wkhtmltox_version != False and odoo_wkhtmltox_pkg.stat.exists
|
||||||
|
|
||||||
|
- name: Install wkhtmltox
|
||||||
|
apt: deb="/root/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb"
|
||||||
|
force=yes
|
||||||
|
when: odoo_wkhtmltox_version is defined and odoo_wkhtmltox_version != False and odoo_wkhtmltox_pkg.stat.exists
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
[options]
|
||||||
|
addons_path = {{ odoo_config_addons_path.__class__.__name__ == 'list' and odoo_config_addons_path | join(',') or odoo_config_addons_path }}
|
||||||
|
admin_passwd = {{ odoo_config_admin_passwd }}
|
||||||
|
csv_internal_sep = {{ odoo_config_csv_internal_sep }}
|
||||||
|
data_dir = {{ odoo_config_data_dir }}
|
||||||
|
db_host = {{ odoo_config_db_host not in [False, 'localhost', '127.0.0.1'] and odoo_config_db_host in hostvars and hostvars[odoo_config_db_host].get('ansible_host') or odoo_config_db_host }}
|
||||||
|
db_maxconn = {{ odoo_config_db_maxconn }}
|
||||||
|
db_name = {{ odoo_config_db_name }}
|
||||||
|
db_password = {{ odoo_config_db_passwd }}
|
||||||
|
db_port = {{ odoo_config_db_port }}
|
||||||
|
db_template = {{ odoo_config_db_template }}
|
||||||
|
db_user = {{ odoo_config_db_user }}
|
||||||
|
dbfilter = {{ odoo_config_dbfilter }}
|
||||||
|
demo = {}
|
||||||
|
email_from = {{ odoo_config_email_from }}
|
||||||
|
geoip_database = {{ odoo_config_geoip_database }}
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = {{ odoo_config_limit_memory_hard }}
|
||||||
|
limit_memory_soft = {{ odoo_config_limit_memory_soft }}
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = {{ odoo_config_limit_time_cpu }}
|
||||||
|
limit_time_real = {{ odoo_config_limit_time_real }}
|
||||||
|
limit_time_real_cron = {{ odoo_config_limit_time_real_cron }}
|
||||||
|
list_db = {{ odoo_config_list_db }}
|
||||||
|
log_db = {{ odoo_config_log_db }}
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = {{ odoo_config_log_level }}
|
||||||
|
logfile = {{ odoo_config_logfile }}
|
||||||
|
logrotate = {{ odoo_config_logrotate }}
|
||||||
|
longpolling_port = {{ odoo_config_longpolling_port }}
|
||||||
|
max_cron_threads = {{ odoo_config_max_cron_threads }}
|
||||||
|
osv_memory_age_limit = {{ odoo_config_osv_memory_age_limit }}
|
||||||
|
osv_memory_count_limit = {{ odoo_config_osv_memory_count_limit }}
|
||||||
|
pg_path = None
|
||||||
|
pidfile = {{ odoo_config_pidfile }}
|
||||||
|
proxy_mode = {{ odoo_config_proxy_mode }}
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = {{ odoo_config_server_wide_modules }}
|
||||||
|
smtp_password = {{ odoo_config_smtp_password }}
|
||||||
|
smtp_port = {{ odoo_config_smtp_port }}
|
||||||
|
smtp_server = {{ odoo_config_smtp_server }}
|
||||||
|
smtp_ssl = {{ odoo_config_smtp_ssl }}
|
||||||
|
smtp_user = {{ odoo_config_smtp_user }}
|
||||||
|
syslog = {{ odoo_config_syslog }}
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = {{ odoo_config_translate_modules }}
|
||||||
|
unaccent = {{ odoo_config_unaccent }}
|
||||||
|
without_demo = {{ odoo_config_without_demo }}
|
||||||
|
workers = {{ odoo_config_workers }}
|
||||||
|
xmlrpc = {{ odoo_config_xmlrpc }}
|
||||||
|
xmlrpc_interface = {{ odoo_config_xmlrpc_interface }}
|
||||||
|
xmlrpc_port = {{ odoo_config_xmlrpc_port }}
|
||||||
|
{% for name in odoo_config_custom | sort %}
|
||||||
|
{{ name }} = {{ odoo_config_custom[name] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
[options]
|
||||||
|
addons_path = /home/odoo/odoo/parts/odoo/odoo/addons,/home/odoo/odoo/parts/odoo/addons
|
||||||
|
admin_passwd = admin
|
||||||
|
csv_internal_sep = ,
|
||||||
|
data_dir = /home/odoo/.local/share/Odoo
|
||||||
|
db_host = False
|
||||||
|
db_maxconn = 64
|
||||||
|
db_name = False
|
||||||
|
db_password = False
|
||||||
|
db_port = False
|
||||||
|
db_template = template1
|
||||||
|
db_user = False
|
||||||
|
dbfilter = .*
|
||||||
|
demo = {}
|
||||||
|
email_from = False
|
||||||
|
geoip_database = /usr/share/GeoIP/GeoLiteCity.dat
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = 2684354560
|
||||||
|
limit_memory_soft = 2147483648
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = 60
|
||||||
|
limit_time_real = 120
|
||||||
|
limit_time_real_cron = -1
|
||||||
|
list_db = True
|
||||||
|
log_db = False
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = info
|
||||||
|
logfile = None
|
||||||
|
logrotate = False
|
||||||
|
longpolling_port = 8072
|
||||||
|
max_cron_threads = 2
|
||||||
|
osv_memory_age_limit = 1.0
|
||||||
|
osv_memory_count_limit = False
|
||||||
|
pg_path = None
|
||||||
|
pidfile = None
|
||||||
|
proxy_mode = False
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = web,web_kanban
|
||||||
|
smtp_password = False
|
||||||
|
smtp_port = 25
|
||||||
|
smtp_server = localhost
|
||||||
|
smtp_ssl = False
|
||||||
|
smtp_user = False
|
||||||
|
syslog = False
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = ['all']
|
||||||
|
unaccent = False
|
||||||
|
without_demo = False
|
||||||
|
workers = 0
|
||||||
|
xmlrpc = True
|
||||||
|
xmlrpc_interface =
|
||||||
|
xmlrpc_port = 8069
|
||||||
|
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/bash
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: {{ odoo_service }}
|
||||||
|
# Required-Start: $remote_fs $syslog
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Should-Start: $network
|
||||||
|
# Should-Stop: $network
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start odoo daemon at boot time
|
||||||
|
# Description: Enable service provided by daemon.
|
||||||
|
### END INIT INFO
|
||||||
|
## more info: http://wiki.debian.org/LSBInitScripts
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
WORKDIR={{ odoo_workdir }}
|
||||||
|
DAEMON={{ odoo_coredir }}/odoo-bin
|
||||||
|
NAME={{ odoo_service }}
|
||||||
|
DESC={{ odoo_service }}
|
||||||
|
CONFIG={{ odoo_config_file }}
|
||||||
|
LOGFILE={{ odoo_logdir }}/{{ odoo_service }}.log
|
||||||
|
PIDFILE=/var/run/${NAME}.pid
|
||||||
|
USER={{ odoo_user }}
|
||||||
|
export LOGNAME=$USER
|
||||||
|
{% if odoo_init_env %}
|
||||||
|
# Custom environment variables
|
||||||
|
{% for name, value in odoo_init_env.iteritems() %}
|
||||||
|
export {{ name }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
test -x $DAEMON || exit 0
|
||||||
|
set -e
|
||||||
|
|
||||||
|
function _start() {
|
||||||
|
start-stop-daemon --chdir=${WORKDIR} --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stop() {
|
||||||
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
|
||||||
|
rm -f $PIDFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
function _status() {
|
||||||
|
start-stop-daemon --status --quiet --pidfile $PIDFILE
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting $DESC: "
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping $DESC: "
|
||||||
|
_stop
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
restart|force-reload)
|
||||||
|
echo -n "Restarting $DESC: "
|
||||||
|
_stop
|
||||||
|
sleep 1
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
echo -n "Status of $DESC: "
|
||||||
|
_status && echo "running" || echo "stopped"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
N=/etc/init.d/$NAME
|
||||||
|
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
[options]
|
||||||
|
addons_path = {{ odoo_config_addons_path.__class__.__name__ == 'list' and odoo_config_addons_path | join(',') or odoo_config_addons_path }}
|
||||||
|
admin_passwd = {{ odoo_config_admin_passwd }}
|
||||||
|
csv_internal_sep = {{ odoo_config_csv_internal_sep }}
|
||||||
|
data_dir = {{ odoo_config_data_dir }}
|
||||||
|
db_host = {{ odoo_config_db_host not in [False, 'localhost', '127.0.0.1'] and odoo_config_db_host in hostvars and hostvars[odoo_config_db_host].get('ansible_host') or odoo_config_db_host }}
|
||||||
|
db_maxconn = {{ odoo_config_db_maxconn }}
|
||||||
|
db_password = {{ odoo_config_db_passwd }}
|
||||||
|
db_port = {{ odoo_config_db_port }}
|
||||||
|
db_sslmode = {{ odoo_config_db_sslmode }}
|
||||||
|
db_template = {{ odoo_config_db_template }}
|
||||||
|
db_user = {{ odoo_config_db_user }}
|
||||||
|
dbfilter = {{ odoo_config_dbfilter }}
|
||||||
|
demo = {}
|
||||||
|
email_from = {{ odoo_config_email_from }}
|
||||||
|
geoip_database = {{ odoo_config_geoip_database }}
|
||||||
|
http_enable = {{ odoo_config_http_enable or odoo_config_xmlrpc }}
|
||||||
|
http_interface = {{ odoo_config_http_interface or odoo_config_xmlrpc_interface }}
|
||||||
|
http_port = {{ odoo_config_http_port or odoo_config_xmlrpc_port }}
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = {{ odoo_config_limit_memory_hard }}
|
||||||
|
limit_memory_soft = {{ odoo_config_limit_memory_soft }}
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = {{ odoo_config_limit_time_cpu }}
|
||||||
|
limit_time_real = {{ odoo_config_limit_time_real }}
|
||||||
|
limit_time_real_cron = {{ odoo_config_limit_time_real_cron }}
|
||||||
|
list_db = {{ odoo_config_list_db }}
|
||||||
|
log_db = {{ odoo_config_log_db }}
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = {{ odoo_config_log_level }}
|
||||||
|
logfile = {{ odoo_config_logfile }}
|
||||||
|
logrotate = {{ odoo_config_logrotate }}
|
||||||
|
longpolling_port = {{ odoo_config_longpolling_port }}
|
||||||
|
max_cron_threads = {{ odoo_config_max_cron_threads }}
|
||||||
|
osv_memory_age_limit = {{ odoo_config_osv_memory_age_limit }}
|
||||||
|
osv_memory_count_limit = {{ odoo_config_osv_memory_count_limit }}
|
||||||
|
pg_path = None
|
||||||
|
pidfile = {{ odoo_config_pidfile }}
|
||||||
|
proxy_mode = {{ odoo_config_proxy_mode }}
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = {{ odoo_config_server_wide_modules }}
|
||||||
|
smtp_password = {{ odoo_config_smtp_password }}
|
||||||
|
smtp_port = {{ odoo_config_smtp_port }}
|
||||||
|
smtp_server = {{ odoo_config_smtp_server }}
|
||||||
|
smtp_ssl = {{ odoo_config_smtp_ssl }}
|
||||||
|
smtp_user = {{ odoo_config_smtp_user }}
|
||||||
|
syslog = {{ odoo_config_syslog }}
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = {{ odoo_config_translate_modules }}
|
||||||
|
unaccent = {{ odoo_config_unaccent }}
|
||||||
|
without_demo = {{ odoo_config_without_demo }}
|
||||||
|
workers = {{ odoo_config_workers }}
|
||||||
|
{% for name in odoo_config_custom | sort %}
|
||||||
|
{{ name }} = {{ odoo_config_custom[name] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
[options]
|
||||||
|
addons_path = /home/odoo/odoo/parts/odoo/odoo/addons,/home/odoo/odoo/parts/odoo/addons
|
||||||
|
admin_passwd = admin
|
||||||
|
csv_internal_sep = ,
|
||||||
|
data_dir = /home/odoo/.local/share/Odoo
|
||||||
|
db_host = False
|
||||||
|
db_maxconn = 64
|
||||||
|
db_name = False
|
||||||
|
db_password = False
|
||||||
|
db_port = False
|
||||||
|
db_sslmode = prefer
|
||||||
|
db_template = template1
|
||||||
|
db_user = False
|
||||||
|
dbfilter = .*
|
||||||
|
demo = {}
|
||||||
|
email_from = False
|
||||||
|
geoip_database = /usr/share/GeoIP/GeoLiteCity.dat
|
||||||
|
http_enable = True
|
||||||
|
http_interface =
|
||||||
|
http_port = 8069
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = 2684354560
|
||||||
|
limit_memory_soft = 2147483648
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = 60
|
||||||
|
limit_time_real = 120
|
||||||
|
limit_time_real_cron = -1
|
||||||
|
list_db = True
|
||||||
|
log_db = False
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = info
|
||||||
|
logfile = None
|
||||||
|
logrotate = True
|
||||||
|
longpolling_port = 8072
|
||||||
|
max_cron_threads = 2
|
||||||
|
osv_memory_age_limit = 1.0
|
||||||
|
osv_memory_count_limit = False
|
||||||
|
pg_path = None
|
||||||
|
pidfile = None
|
||||||
|
proxy_mode = False
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = web
|
||||||
|
smtp_password = False
|
||||||
|
smtp_port = 25
|
||||||
|
smtp_server = localhost
|
||||||
|
smtp_ssl = False
|
||||||
|
smtp_user = False
|
||||||
|
syslog = False
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = ['all']
|
||||||
|
unaccent = False
|
||||||
|
without_demo = False
|
||||||
|
workers = 0
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
odoo-10.0.init
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
[options]
|
||||||
|
addons_path = {{ odoo_config_addons_path.__class__.__name__ == 'list' and odoo_config_addons_path | join(',') or odoo_config_addons_path }}
|
||||||
|
admin_passwd = {{ odoo_config_admin_passwd }}
|
||||||
|
auto_reload = {{ odoo_config_auto_reload }}
|
||||||
|
csv_internal_sep = {{ odoo_config_csv_internal_sep }}
|
||||||
|
data_dir = {{ odoo_config_data_dir }}
|
||||||
|
db_host = {{ odoo_config_db_host not in [False, 'localhost', '127.0.0.1'] and odoo_config_db_host in hostvars and hostvars[odoo_config_db_host].get('ansible_host') or odoo_config_db_host }}
|
||||||
|
db_maxconn = {{ odoo_config_db_maxconn }}
|
||||||
|
db_name = {{ odoo_config_db_name }}
|
||||||
|
db_password = {{ odoo_config_db_passwd }}
|
||||||
|
db_port = {{ odoo_config_db_port }}
|
||||||
|
db_template = {{ odoo_config_db_template }}
|
||||||
|
db_user = {{ odoo_config_db_user }}
|
||||||
|
dbfilter = {{ odoo_config_dbfilter }}
|
||||||
|
debug_mode = {{ odoo_config_debug_mode }}
|
||||||
|
demo = {}
|
||||||
|
email_from = {{ odoo_config_email_from }}
|
||||||
|
geoip_database = {{ odoo_config_geoip_database }}
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = {{ odoo_config_limit_memory_hard }}
|
||||||
|
limit_memory_soft = {{ odoo_config_limit_memory_soft }}
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = {{ odoo_config_limit_time_cpu }}
|
||||||
|
limit_time_real = {{ odoo_config_limit_time_real }}
|
||||||
|
list_db = {{ odoo_config_list_db }}
|
||||||
|
log_db = {{ odoo_config_log_db }}
|
||||||
|
log_handler = [':INFO']
|
||||||
|
log_level = {{ odoo_config_log_level }}
|
||||||
|
logfile = {{ odoo_config_logfile }}
|
||||||
|
logrotate = {{ odoo_config_logrotate }}
|
||||||
|
longpolling_port = {{ odoo_config_longpolling_port }}
|
||||||
|
max_cron_threads = {{ odoo_config_max_cron_threads }}
|
||||||
|
osv_memory_age_limit = {{ odoo_config_osv_memory_age_limit }}
|
||||||
|
osv_memory_count_limit = {{ odoo_config_osv_memory_count_limit }}
|
||||||
|
pg_path = None
|
||||||
|
pidfile = {{ odoo_config_pidfile }}
|
||||||
|
proxy_mode = {{ odoo_config_proxy_mode }}
|
||||||
|
reportgz = False
|
||||||
|
secure_cert_file = {{ odoo_config_secure_cert_file }}
|
||||||
|
secure_pkey_file = {{ odoo_config_secure_pkey_file }}
|
||||||
|
server_wide_modules = {{ odoo_config_server_wide_modules }}
|
||||||
|
smtp_password = {{ odoo_config_smtp_password }}
|
||||||
|
smtp_port = {{ odoo_config_smtp_port }}
|
||||||
|
smtp_server = {{ odoo_config_smtp_server }}
|
||||||
|
smtp_ssl = {{ odoo_config_smtp_ssl }}
|
||||||
|
smtp_user = {{ odoo_config_smtp_user }}
|
||||||
|
syslog = {{ odoo_config_syslog }}
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
timezone = {{ odoo_config_timezone }}
|
||||||
|
translate_modules = {{ odoo_config_translate_modules }}
|
||||||
|
unaccent = {{ odoo_config_unaccent }}
|
||||||
|
without_demo = {{ odoo_config_without_demo }}
|
||||||
|
workers = {{ odoo_config_workers }}
|
||||||
|
xmlrpc = {{ odoo_config_xmlrpc }}
|
||||||
|
xmlrpc_interface = {{ odoo_config_xmlrpc_interface }}
|
||||||
|
xmlrpc_port = {{ odoo_config_xmlrpc_port }}
|
||||||
|
xmlrpcs = {{ odoo_config_xmlrpcs }}
|
||||||
|
xmlrpcs_interface = {{ odoo_config_xmlrpcs_interface }}
|
||||||
|
xmlrpcs_port = {{ odoo_config_xmlrpcs_port }}
|
||||||
|
{% for name in odoo_config_custom | sort %}
|
||||||
|
{{ name }} = {{ odoo_config_custom[name] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/bash
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: {{ odoo_service }}
|
||||||
|
# Required-Start: $remote_fs $syslog
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Should-Start: $network
|
||||||
|
# Should-Stop: $network
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start odoo daemon at boot time
|
||||||
|
# Description: Enable service provided by daemon.
|
||||||
|
### END INIT INFO
|
||||||
|
## more info: http://wiki.debian.org/LSBInitScripts
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
WORKDIR={{ odoo_workdir }}
|
||||||
|
DAEMON={{ odoo_rootdir }}/odoo.py
|
||||||
|
NAME={{ odoo_service }}
|
||||||
|
DESC={{ odoo_service }}
|
||||||
|
CONFIG={{ odoo_config_file }}
|
||||||
|
LOGFILE={{ odoo_logdir }}/{{ odoo_service }}.log
|
||||||
|
PIDFILE=/var/run/${NAME}.pid
|
||||||
|
USER={{ odoo_user }}
|
||||||
|
export LOGNAME=$USER
|
||||||
|
{% if odoo_init_env %}
|
||||||
|
# Custom environment variables
|
||||||
|
{% for name, value in odoo_init_env.iteritems() %}
|
||||||
|
export {{ name }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
test -x $DAEMON || exit 0
|
||||||
|
set -e
|
||||||
|
|
||||||
|
function _start() {
|
||||||
|
start-stop-daemon --chdir=${WORKDIR} --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE{{ odoo_config_server_wide_modules not in [False, 'None', ''] and ' --load=%s' % odoo_config_server_wide_modules or '' }}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stop() {
|
||||||
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
|
||||||
|
rm -f $PIDFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
function _status() {
|
||||||
|
start-stop-daemon --status --quiet --pidfile $PIDFILE
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting $DESC: "
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping $DESC: "
|
||||||
|
_stop
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
restart|force-reload)
|
||||||
|
echo -n "Restarting $DESC: "
|
||||||
|
_stop
|
||||||
|
sleep 1
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
echo -n "Status of $DESC: "
|
||||||
|
_status && echo "running" || echo "stopped"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
N=/etc/init.d/$NAME
|
||||||
|
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
[options]
|
||||||
|
addons_path = {{ odoo_config_addons_path.__class__.__name__ == 'list' and odoo_config_addons_path | join(',') or odoo_config_addons_path }}
|
||||||
|
admin_passwd = {{ odoo_config_admin_passwd }}
|
||||||
|
csv_internal_sep = {{ odoo_config_csv_internal_sep }}
|
||||||
|
data_dir = {{ odoo_config_data_dir }}
|
||||||
|
db_host = {{ odoo_config_db_host not in [False, 'localhost', '127.0.0.1'] and odoo_config_db_host in hostvars and hostvars[odoo_config_db_host].get('ansible_host') or odoo_config_db_host }}
|
||||||
|
db_maxconn = {{ odoo_config_db_maxconn }}
|
||||||
|
db_name = {{ odoo_config_db_name }}
|
||||||
|
db_password = {{ odoo_config_db_passwd }}
|
||||||
|
db_port = {{ odoo_config_db_port }}
|
||||||
|
db_template = {{ odoo_config_db_template }}
|
||||||
|
db_user = {{ odoo_config_db_user }}
|
||||||
|
dbfilter = {{ odoo_config_dbfilter }}
|
||||||
|
debug_mode = {{ odoo_config_debug_mode }}
|
||||||
|
demo = {}
|
||||||
|
dev_mode = False
|
||||||
|
email_from = {{ odoo_config_email_from }}
|
||||||
|
geoip_database = {{ odoo_config_geoip_database }}
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = {{ odoo_config_limit_memory_hard }}
|
||||||
|
limit_memory_soft = {{ odoo_config_limit_memory_soft }}
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = {{ odoo_config_limit_time_cpu }}
|
||||||
|
limit_time_real = {{ odoo_config_limit_time_real }}
|
||||||
|
list_db = {{ odoo_config_list_db }}
|
||||||
|
log_db = {{ odoo_config_log_db }}
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = {{ odoo_config_log_level }}
|
||||||
|
logfile = {{ odoo_config_logfile }}
|
||||||
|
logrotate = {{ odoo_config_logrotate }}
|
||||||
|
longpolling_port = {{ odoo_config_longpolling_port }}
|
||||||
|
max_cron_threads = {{ odoo_config_max_cron_threads }}
|
||||||
|
osv_memory_age_limit = {{ odoo_config_osv_memory_age_limit }}
|
||||||
|
osv_memory_count_limit = {{ odoo_config_osv_memory_count_limit }}
|
||||||
|
pg_path = None
|
||||||
|
pidfile = {{ odoo_config_pidfile }}
|
||||||
|
proxy_mode = {{ odoo_config_proxy_mode }}
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = {{ odoo_config_server_wide_modules }}
|
||||||
|
smtp_password = {{ odoo_config_smtp_password }}
|
||||||
|
smtp_port = {{ odoo_config_smtp_port }}
|
||||||
|
smtp_server = {{ odoo_config_smtp_server }}
|
||||||
|
smtp_ssl = {{ odoo_config_smtp_ssl }}
|
||||||
|
smtp_user = {{ odoo_config_smtp_user }}
|
||||||
|
syslog = {{ odoo_config_syslog }}
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = {{ odoo_config_translate_modules }}
|
||||||
|
unaccent = {{ odoo_config_unaccent }}
|
||||||
|
without_demo = {{ odoo_config_without_demo }}
|
||||||
|
workers = {{ odoo_config_workers }}
|
||||||
|
xmlrpc = {{ odoo_config_xmlrpc }}
|
||||||
|
xmlrpc_interface = {{ odoo_config_xmlrpc_interface }}
|
||||||
|
xmlrpc_port = {{ odoo_config_xmlrpc_port }}
|
||||||
|
{% for name in odoo_config_custom | sort %}
|
||||||
|
{{ name }} = {{ odoo_config_custom[name] }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
[options]
|
||||||
|
addons_path = /home/odoo/odoo-9.0/openerp/addons,/home/odoo/odoo-9.0/addons
|
||||||
|
admin_passwd = admin
|
||||||
|
csv_internal_sep = ,
|
||||||
|
data_dir = /home/odoo/.local/share/Odoo
|
||||||
|
db_host = False
|
||||||
|
db_maxconn = 64
|
||||||
|
db_name = False
|
||||||
|
db_password = False
|
||||||
|
db_port = False
|
||||||
|
db_template = template1
|
||||||
|
db_user = False
|
||||||
|
dbfilter = .*
|
||||||
|
debug_mode = False
|
||||||
|
demo = {}
|
||||||
|
dev_mode = False
|
||||||
|
email_from = False
|
||||||
|
geoip_database = /usr/share/GeoIP/GeoLiteCity.dat
|
||||||
|
import_partial =
|
||||||
|
limit_memory_hard = 2684354560
|
||||||
|
limit_memory_soft = 2147483648
|
||||||
|
limit_request = 8192
|
||||||
|
limit_time_cpu = 60
|
||||||
|
limit_time_real = 120
|
||||||
|
list_db = True
|
||||||
|
log_db = False
|
||||||
|
log_db_level = warning
|
||||||
|
log_handler = :INFO
|
||||||
|
log_level = info
|
||||||
|
logfile = None
|
||||||
|
logrotate = False
|
||||||
|
longpolling_port = 8072
|
||||||
|
max_cron_threads = 2
|
||||||
|
osv_memory_age_limit = 1.0
|
||||||
|
osv_memory_count_limit = False
|
||||||
|
pg_path = None
|
||||||
|
pidfile = None
|
||||||
|
proxy_mode = False
|
||||||
|
reportgz = False
|
||||||
|
server_wide_modules = None
|
||||||
|
smtp_password = False
|
||||||
|
smtp_port = 25
|
||||||
|
smtp_server = localhost
|
||||||
|
smtp_ssl = False
|
||||||
|
smtp_user = False
|
||||||
|
syslog = False
|
||||||
|
test_commit = False
|
||||||
|
test_enable = False
|
||||||
|
test_file = False
|
||||||
|
test_report_directory = False
|
||||||
|
translate_modules = ['all']
|
||||||
|
unaccent = False
|
||||||
|
without_demo = False
|
||||||
|
workers = 0
|
||||||
|
xmlrpc = True
|
||||||
|
xmlrpc_interface =
|
||||||
|
xmlrpc_port = 8069
|
||||||
|
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/bash
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: {{ odoo_service }}
|
||||||
|
# Required-Start: $remote_fs $syslog
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Should-Start: $network
|
||||||
|
# Should-Stop: $network
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start odoo daemon at boot time
|
||||||
|
# Description: Enable service provided by daemon.
|
||||||
|
### END INIT INFO
|
||||||
|
## more info: http://wiki.debian.org/LSBInitScripts
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
WORKDIR={{ odoo_workdir }}
|
||||||
|
DAEMON={{ odoo_rootdir }}/odoo.py
|
||||||
|
NAME={{ odoo_service }}
|
||||||
|
DESC={{ odoo_service }}
|
||||||
|
CONFIG={{ odoo_config_file }}
|
||||||
|
LOGFILE={{ odoo_logdir }}/{{ odoo_service }}.log
|
||||||
|
PIDFILE=/var/run/${NAME}.pid
|
||||||
|
USER={{ odoo_user }}
|
||||||
|
export LOGNAME=$USER
|
||||||
|
{% if odoo_init_env %}
|
||||||
|
# Custom environment variables
|
||||||
|
{% for name, value in odoo_init_env.iteritems() %}
|
||||||
|
export {{ name }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
test -x $DAEMON || exit 0
|
||||||
|
set -e
|
||||||
|
|
||||||
|
function _start() {
|
||||||
|
start-stop-daemon --chdir=${WORKDIR} --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE{{ odoo_config_server_wide_modules not in [False, 'None', ''] and ' --load=%s' % odoo_config_server_wide_modules or '' }}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stop() {
|
||||||
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
|
||||||
|
rm -f $PIDFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
function _status() {
|
||||||
|
start-stop-daemon --status --quiet --pidfile $PIDFILE
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting $DESC: "
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping $DESC: "
|
||||||
|
_stop
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
restart|force-reload)
|
||||||
|
echo -n "Restarting $DESC: "
|
||||||
|
_stop
|
||||||
|
sleep 1
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
echo -n "Status of $DESC: "
|
||||||
|
_status && echo "running" || echo "stopped"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
N=/etc/init.d/$NAME
|
||||||
|
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#dump the Odoo DB (postgreSQL)
|
||||||
|
#author: datenpol GmbH
|
||||||
|
|
||||||
|
hostname=`/bin/hostname`
|
||||||
|
|
||||||
|
|
||||||
|
dbnames=`psql -d postgres -c "SELECT datname FROM pg_database WHERE NOT datistemplate AND datname <> 'postgres' AND datname like '{{odoo_instance}}%'" --tuples-only`
|
||||||
|
|
||||||
|
# Dump DBs
|
||||||
|
for db in $dbnames
|
||||||
|
do
|
||||||
|
echo "creating backup for db: " $db
|
||||||
|
date=`date +"%Y%m%d_%H%M%N"`
|
||||||
|
filename="/var/pgdump/{{odoo_instance}}/${hostname}_${db}_${date}.sql"
|
||||||
|
pg_dump -E UTF-8 -F p -b -f $filename $db
|
||||||
|
chmod 600 $filename
|
||||||
|
gzip $filename
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
## Housekeeping
|
||||||
|
##########################################
|
||||||
|
for file in `find /var/pgdump/{{odoo_instance}} -mtime +30 -type f -name '*.sql.gz'`
|
||||||
|
do
|
||||||
|
echo "deleting: " $file
|
||||||
|
rm $file
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
#!/bin/bash
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: {{ odoo_service }}
|
||||||
|
# Required-Start: $remote_fs $syslog
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Should-Start: $network
|
||||||
|
# Should-Stop: $network
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start odoo daemon at boot time
|
||||||
|
# Description: Enable service provided by daemon.
|
||||||
|
### END INIT INFO
|
||||||
|
## more info: http://wiki.debian.org/LSBInitScripts
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
WORKDIR={{ odoo_workdir }}
|
||||||
|
DAEMON={{ odoo_buildout_odoo_bin_path }}
|
||||||
|
NAME={{ odoo_service }}
|
||||||
|
DESC={{ odoo_service }}
|
||||||
|
LOGFILE={{ odoo_logdir }}/{{ odoo_service }}.log
|
||||||
|
PIDFILE=/var/run/${NAME}.pid
|
||||||
|
USER={{ odoo_user }}
|
||||||
|
export LOGNAME=$USER
|
||||||
|
{% if odoo_init_env %}
|
||||||
|
# Custom environment variables
|
||||||
|
{% for name, value in odoo_init_env.iteritems() %}
|
||||||
|
export {{ name }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
test -x $DAEMON || exit 0
|
||||||
|
set -e
|
||||||
|
|
||||||
|
function _start() {
|
||||||
|
# '--load' is used here as Odoo ignores the 'server_wide_modules' option
|
||||||
|
# from the configuration file
|
||||||
|
# Odoo: https://github.com/odoo/odoo/pull/13685
|
||||||
|
# OCB: https://github.com/OCA/OCB/pull/553
|
||||||
|
start-stop-daemon --chdir=${WORKDIR} --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --logfile $LOGFILE{{ odoo_config_server_wide_modules not in [False, 'None', ''] and ' --load=%s' % odoo_config_server_wide_modules or '' }}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stop() {
|
||||||
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
|
||||||
|
rm -f $PIDFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
function _status() {
|
||||||
|
start-stop-daemon --status --quiet --pidfile $PIDFILE
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting $DESC: "
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping $DESC: "
|
||||||
|
_stop
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
restart|force-reload)
|
||||||
|
echo -n "Restarting $DESC: "
|
||||||
|
_stop
|
||||||
|
sleep 1
|
||||||
|
_start
|
||||||
|
echo "ok"
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
echo -n "Status of $DESC: "
|
||||||
|
_status && echo "running" || echo "stopped"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
N=/etc/init.d/$NAME
|
||||||
|
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# info: restart Odoo server
|
||||||
|
# author: datenpol gmbh
|
||||||
|
|
||||||
|
|
||||||
|
LOGFILE=deployment-history.txt
|
||||||
|
sudo /etc/init.d/{{ odoo_service }} restart
|
||||||
|
echo "Restart `date`" >> $LOGFILE
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# author: datenpol gmbh
|
||||||
|
|
||||||
|
LOGFILE=../deployment-history.txt
|
||||||
|
|
||||||
|
cd ext
|
||||||
|
git pull
|
||||||
|
git log --pretty=format:"%h - %an, %ad : %s" -1 >> $LOGFILE
|
||||||
|
echo "" >> $LOGFILE
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
HERE=$(dirname $(readlink -m $0))
|
||||||
|
VENV=/opt/ansible-venv
|
||||||
|
GET_PIP_URL="https://bootstrap.pypa.io/get-pip.py"
|
||||||
|
# Install system dependencies
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -qq python-virtualenv python-apt python-pip python-dev lsb-release wget ca-certificates
|
||||||
|
# Install Ansible in a virtual Python environment
|
||||||
|
virtualenv $VENV
|
||||||
|
wget $GET_PIP_URL -O $VENV/get-pip.py
|
||||||
|
$VENV/bin/python $VENV/get-pip.py
|
||||||
|
$VENV/bin/pip install "ansible>=$ANSIBLE_VERSION"
|
||||||
|
# Install PostgreSQL
|
||||||
|
apt-get install -qq postgresql postgresql-contrib
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
localhost
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/sh
|
||||||
|
HERE=$(dirname $(readlink -m $0))
|
||||||
|
VENV=/opt/ansible-venv
|
||||||
|
CMD="$VENV/bin/ansible-playbook -i tests/inventory"
|
||||||
|
cd $HERE/..
|
||||||
|
# Configure environment
|
||||||
|
export PAGER=cat
|
||||||
|
# Configure Ansible
|
||||||
|
cat <<EOF > ansible.cfg
|
||||||
|
[defaults]
|
||||||
|
roles_path = ../
|
||||||
|
[ssh_connection]
|
||||||
|
pipelining=True
|
||||||
|
EOF
|
||||||
|
echo "== CHECK THE ROLE/PLAYBOOK'S SYNTAX =="
|
||||||
|
$CMD tests/test_$ODOO_INSTALL_TYPE.yml --syntax-check || exit 1
|
||||||
|
|
||||||
|
echo "== RUN THE ROLE/PLAYBOOK WITH ANSIBLE-PLAYBOOK =="
|
||||||
|
$CMD tests/test_$ODOO_INSTALL_TYPE.yml --connection=local --become -e "odoo_version=$ODOO_VERSION" || exit 1
|
||||||
|
echo "== CHECK THE SERVICE STATUS =="
|
||||||
|
sudo -E service odoo-$ODOO_INSTALL_TYPE status || exit 1
|
||||||
|
|
||||||
|
echo "== RUN THE ROLE/PLAYBOOK AGAIN, CHECKING TO MAKE SURE IT'S IDEMPOTENT =="
|
||||||
|
output_log=$ODOO_VERSION_$ODOO_INSTALL_TYPE.log
|
||||||
|
$CMD tests/test_${ODOO_INSTALL_TYPE}.yml --connection=local --become -e "odoo_version=$ODOO_VERSION" -v > $output_log || exit 1
|
||||||
|
grep -q 'changed=0.*failed=0' $output_log \
|
||||||
|
&& (echo 'IDEMPOTENCE TEST: OK' && exit 0) \
|
||||||
|
|| (echo 'IDEMPOTENCE TEST: FAILED' && cat $output_log && exit 1) || exit 1
|
||||||
|
echo "== CHECK THE SERVICE STATUS =="
|
||||||
|
sudo -E service odoo-$ODOO_INSTALL_TYPE status || exit 1
|
||||||
|
|
||||||
|
echo "== RUN THE ROLE/PLAYBOOK AGAIN BUT CHANGE THE CONFIGURATION AND CHECK IF THE SERVICE RESTART =="
|
||||||
|
$CMD tests/test_${ODOO_INSTALL_TYPE}_changed.yml --connection=local --become -e "odoo_version=$ODOO_VERSION" -v > $output_log || exit 1
|
||||||
|
grep -q 'changed=2.*failed=0' $output_log \
|
||||||
|
&& (echo 'RESTART TEST: OK' && exit 0) \
|
||||||
|
|| (echo 'RESTART TEST: FAILED' && cat $output_log && exit 1) || exit 1
|
||||||
|
|
||||||
|
echo "== CHECK THE SERVICE STATUS =="
|
||||||
|
sudo -E service odoo-$ODOO_INSTALL_TYPE status || exit 1
|
||||||
|
sleep 3 && wget http://localhost:8069 | exit 1
|
||||||
|
sudo -E service odoo-$ODOO_INSTALL_TYPE stop || exit 1
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: localhost
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- ansible-odoo
|
||||||
|
vars:
|
||||||
|
odoo_install_type: standard
|
||||||
|
odoo_service: odoo-standard
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: localhost
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- ansible-odoo
|
||||||
|
vars:
|
||||||
|
odoo_install_type: standard
|
||||||
|
odoo_service: odoo-standard
|
||||||
|
odoo_init_env:
|
||||||
|
CHANGED_TEST: 1
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
HERE=$(dirname $(readlink -m $0))
|
||||||
|
# Spawn a LXD container
|
||||||
|
lxc init ${IMAGE} $1
|
||||||
|
lxc config set $1 raw.lxc "lxc.aa_allow_incomplete=1"
|
||||||
|
if [[ "$IMAGE" == 'images:debian/jessie' ]]; then
|
||||||
|
$HERE/fix_debian_jessie.sh $1;
|
||||||
|
fi
|
||||||
|
lxc start $1 && sleep 4 && lxc list
|
||||||
|
# Configure the container
|
||||||
|
lxc config set $1 environment.ODOO_VERSION $ODOO_VERSION
|
||||||
|
lxc config set $1 environment.ODOO_INSTALL_TYPE $ODOO_INSTALL_TYPE
|
||||||
|
lxc config set $1 environment.ANSIBLE_VERSION $ANSIBLE_VERSION
|
||||||
|
# Copy the project files into the container
|
||||||
|
lxc file push -r -p $HERE/../.. $1/opt/
|
||||||
|
# Install the test environment
|
||||||
|
lxc exec $1 -- sh -c "/opt/ansible-odoo/tests/install_test_env.sh"
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This script fix the Debian Jessie container by replacing systemd by SysV
|
||||||
|
#
|
||||||
|
CT_DIR="/var/lib/lxd/storage-pools/default/containers/$1"
|
||||||
|
ROOTFS="$CT_DIR/rootfs"
|
||||||
|
UID_GID=$(ls -n $CT_DIR | grep rootfs | cut -d ' ' -f "3-4")
|
||||||
|
CT_UID=$(echo $UID_GID | cut -d ' ' -f1)
|
||||||
|
CT_GID=$(echo $UID_GID | cut -d ' ' -f2)
|
||||||
|
CT_UID_GID="$CT_UID:$CT_GID"
|
||||||
|
BRIDGE_IP=$(lxc network show testbr0 | grep ipv4.address | cut -d' ' -f4 | cut -d'/' -f1)
|
||||||
|
# Configure the network of the container
|
||||||
|
echo -e "nameserver $BRIDGE_IP\nsearch lxd" > $ROOTFS/etc/resolv.conf
|
||||||
|
cat $ROOTFS/etc/resolv.conf
|
||||||
|
chroot --userspec=$CT_UID_GID $ROOTFS apt-get update
|
||||||
|
chroot --userspec=$CT_UID_GID $ROOTFS apt-get install -y sysvinit-core -d
|
||||||
|
chroot $ROOTFS apt-get install -y sysvinit-core
|
||||||
|
chroot --userspec=$CT_UID_GID $ROOTFS apt-get update
|
||||||
|
chown $CT_UID_GID $ROOTFS/var/log/apt/term.log
|
||||||
|
chown $CT_UID_GID $ROOTFS/var/lib/dpkg/status
|
||||||
|
# Purge the network configuration from the container
|
||||||
|
rm $ROOTFS/etc/resolv.conf
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Install and configure LXD on Travis-CI
|
||||||
|
add-apt-repository -y ppa:ubuntu-lxc/lxd-stable;
|
||||||
|
apt-get -qq update;
|
||||||
|
apt-get -y install lxd;
|
||||||
|
lxd init --auto
|
||||||
|
usermod -a -G lxd travis
|
||||||
|
lxc network create testbr0
|
||||||
|
lxc network attach-profile testbr0 default eth0
|
||||||
|
lxc network show testbr0
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-openssl
|
||||||
|
- python-markupsafe
|
||||||
|
- python-serial
|
||||||
|
- python-usb
|
||||||
|
- python-qrcode
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python-babel
|
||||||
|
- python-dateutil
|
||||||
|
- python-decorator
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gevent
|
||||||
|
- python-greenlet
|
||||||
|
- python-imaging
|
||||||
|
- python-jinja2
|
||||||
|
- python-ldap
|
||||||
|
- python-libxslt1
|
||||||
|
- python-lxml
|
||||||
|
- python-mako
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-passlib
|
||||||
|
- python-psutil
|
||||||
|
- python-psycopg2
|
||||||
|
- python-pychart
|
||||||
|
- python-pydot
|
||||||
|
- python-pyparsing
|
||||||
|
- python-pypdf
|
||||||
|
- python-reportlab
|
||||||
|
- python-requests
|
||||||
|
- python-six
|
||||||
|
- python-suds
|
||||||
|
- python-tz
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-werkzeug
|
||||||
|
- python-xlsxwriter
|
||||||
|
- python-xlwt
|
||||||
|
- python-yaml
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_npm_packages: []
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=0.10*"
|
||||||
|
odoo_nodejs_apt_repo: "node_0.10"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.5.3
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-openssl
|
||||||
|
- python-markupsafe
|
||||||
|
- python-serial
|
||||||
|
- python-usb
|
||||||
|
- python-qrcode
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python-babel
|
||||||
|
- python-dateutil
|
||||||
|
- python-decorator
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gevent
|
||||||
|
- python-greenlet
|
||||||
|
- python-imaging
|
||||||
|
- python-jinja2
|
||||||
|
- python-ldap
|
||||||
|
- python-libxslt1
|
||||||
|
- python-lxml
|
||||||
|
- python-mako
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-passlib
|
||||||
|
- python-psutil
|
||||||
|
- python-psycopg2
|
||||||
|
- python-pychart
|
||||||
|
- python-pydot
|
||||||
|
- python-pyparsing
|
||||||
|
- python-pypdf2
|
||||||
|
- python-reportlab
|
||||||
|
- python-requests
|
||||||
|
- python-six
|
||||||
|
- python-suds
|
||||||
|
- python-tz
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-werkzeug
|
||||||
|
- python-xlsxwriter
|
||||||
|
- python-xlwt
|
||||||
|
- python-yaml
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python3-dev
|
||||||
|
- python3-openssl
|
||||||
|
- python3-markupsafe
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python3-babel
|
||||||
|
- python3-dateutil
|
||||||
|
- python3-decorator
|
||||||
|
- python3-docutils
|
||||||
|
- python3-feedparser
|
||||||
|
- python3-gevent
|
||||||
|
- python3-html2text
|
||||||
|
- python3-jinja2
|
||||||
|
- python3-lxml
|
||||||
|
- python3-mako
|
||||||
|
- python3-mock
|
||||||
|
- python3-ofxparse
|
||||||
|
- python3-openid
|
||||||
|
- python3-passlib
|
||||||
|
- python3-pil
|
||||||
|
- python3-psutil
|
||||||
|
- python3-psycopg2
|
||||||
|
- python3-pydot
|
||||||
|
- python3-pyldap
|
||||||
|
- python3-pyparsing
|
||||||
|
- python3-pypdf2
|
||||||
|
- python3-qrcode
|
||||||
|
- python3-reportlab
|
||||||
|
- python3-requests
|
||||||
|
- python3-serial
|
||||||
|
- python3-suds
|
||||||
|
- python3-tz
|
||||||
|
- python3-usb
|
||||||
|
- python3-vatnumber
|
||||||
|
- python3-vobject
|
||||||
|
- python3-werkzeug
|
||||||
|
- python3-xlsxwriter
|
||||||
|
- python3-yaml
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python3-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python3-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_buildout_venv_cmd: "virtualenv --no-setuptools --python=python3 {{ odoo_buildout_venv_path }}"
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf2
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_npm_packages: []
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf2
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=0.10*"
|
||||||
|
odoo_nodejs_apt_repo: "node_0.10"
|
||||||
|
odoo_nodejs_apt_dist: "jessie"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.5.3
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg62-turbo-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg62-turbo
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-openssl
|
||||||
|
- python-markupsafe
|
||||||
|
- python-serial
|
||||||
|
- python-usb
|
||||||
|
- python-qrcode
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python-babel
|
||||||
|
- python-dateutil
|
||||||
|
- python-decorator
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gevent
|
||||||
|
- python-greenlet
|
||||||
|
- python-imaging
|
||||||
|
- python-jinja2
|
||||||
|
- python-ldap
|
||||||
|
- python-libxslt1
|
||||||
|
- python-lxml
|
||||||
|
- python-mako
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-passlib
|
||||||
|
- python-psutil
|
||||||
|
- python-psycopg2
|
||||||
|
- python-pychart
|
||||||
|
- python-pydot
|
||||||
|
- python-pyparsing
|
||||||
|
- python-pypdf
|
||||||
|
- python-reportlab
|
||||||
|
- python-requests
|
||||||
|
- python-six
|
||||||
|
- python-suds
|
||||||
|
- python-tz
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-werkzeug
|
||||||
|
- python-xlsxwriter
|
||||||
|
- python-xlwt
|
||||||
|
- python-yaml
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjpeg-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjpeg-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=0.10*"
|
||||||
|
odoo_nodejs_apt_repo: "node_0.10"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.5.3
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjpeg-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-openssl
|
||||||
|
- python-markupsafe
|
||||||
|
- python-serial
|
||||||
|
- python-usb
|
||||||
|
- python-qrcode
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python-babel
|
||||||
|
- python-dateutil
|
||||||
|
- python-decorator
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gevent
|
||||||
|
- python-greenlet
|
||||||
|
- python-imaging
|
||||||
|
- python-jinja2
|
||||||
|
- python-ldap
|
||||||
|
- python-libxslt1
|
||||||
|
- python-lxml
|
||||||
|
- python-mako
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-passlib
|
||||||
|
- python-psutil
|
||||||
|
- python-psycopg2
|
||||||
|
- python-pychart
|
||||||
|
- python-pydot
|
||||||
|
- python-pyparsing
|
||||||
|
- python-pypdf
|
||||||
|
- python-reportlab
|
||||||
|
- python-requests
|
||||||
|
- python-six
|
||||||
|
- python-suds
|
||||||
|
- python-tz
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-werkzeug
|
||||||
|
- python-xlsxwriter
|
||||||
|
- python-xlwt
|
||||||
|
- python-yaml
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
||||||
|
# Try Trusty's package if Xenial one is not found
|
||||||
|
odoo_wkhtmltox_urls:
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-trusty-{{ odoo_debian_arch }}.deb
|
||||||
|
- http://nightly.odoo.com/extra/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python3-dev
|
||||||
|
- python3-openssl
|
||||||
|
- python3-markupsafe
|
||||||
|
# Required by pyldap
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
# Dependencies taken from the deb package
|
||||||
|
- python3-babel
|
||||||
|
- python3-dateutil
|
||||||
|
- python3-decorator
|
||||||
|
- python3-docutils
|
||||||
|
- python3-feedparser
|
||||||
|
- python3-gevent
|
||||||
|
- python3-html2text
|
||||||
|
- python3-jinja2
|
||||||
|
- python3-lxml
|
||||||
|
- python3-mako
|
||||||
|
- python3-mock
|
||||||
|
- python3-ofxparse
|
||||||
|
- python3-openid
|
||||||
|
- python3-passlib
|
||||||
|
- python3-pil
|
||||||
|
- python3-psutil
|
||||||
|
- python3-psycopg2
|
||||||
|
- python3-pydot
|
||||||
|
- python3-pyparsing
|
||||||
|
- python3-pypdf2
|
||||||
|
# python3-qrcode # Not available in Ubuntu 16.04
|
||||||
|
- python3-reportlab
|
||||||
|
- python3-requests
|
||||||
|
- python3-serial
|
||||||
|
- python3-suds
|
||||||
|
- python3-tz
|
||||||
|
- python3-usb
|
||||||
|
- python3-vatnumber
|
||||||
|
- python3-werkzeug
|
||||||
|
- python3-xlsxwriter
|
||||||
|
- python3-yaml
|
||||||
|
|
||||||
|
odoo_pypi_packages:
|
||||||
|
- psycogreen
|
||||||
|
- qrcode
|
||||||
|
- pyldap
|
||||||
|
- vobject
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=6.*"
|
||||||
|
odoo_nodejs_apt_repo: "node_6.x"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.7.2
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python3-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python3-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
||||||
|
odoo_buildout_venv_cmd: "virtualenv --no-setuptools --python=python3 {{ odoo_buildout_venv_path }}"
|
||||||
|
|
||||||
|
# Try Trusty's package if Xenial one is not found
|
||||||
|
odoo_wkhtmltox_urls:
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-trusty-{{ odoo_debian_arch }}.deb
|
||||||
|
- http://nightly.odoo.com/extra/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
||||||
|
# Try Trusty's package if Xenial one is not found
|
||||||
|
odoo_wkhtmltox_urls:
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-trusty-{{ odoo_debian_arch }}.deb
|
||||||
|
- http://nightly.odoo.com/extra/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_debian_packages:
|
||||||
|
- python-dev
|
||||||
|
- python-psycopg2
|
||||||
|
- python-simplejson
|
||||||
|
- python-lxml
|
||||||
|
- python-tz
|
||||||
|
- python-imaging
|
||||||
|
- python-yaml
|
||||||
|
- python-reportlab
|
||||||
|
- python-mako
|
||||||
|
- python-pychart
|
||||||
|
- python-werkzeug
|
||||||
|
- python-dateutil
|
||||||
|
- python-unittest2
|
||||||
|
- python-mock
|
||||||
|
- python-openid
|
||||||
|
- python-docutils
|
||||||
|
- python-feedparser
|
||||||
|
- python-gdata
|
||||||
|
- python-jinja2
|
||||||
|
- python-psutil
|
||||||
|
- python-pydot
|
||||||
|
- python-webdav
|
||||||
|
- python-vatnumber
|
||||||
|
- python-vobject
|
||||||
|
- python-xlwt
|
||||||
|
- python-ldap
|
||||||
|
- python-openssl
|
||||||
|
- python-egenix-mxdatetime
|
||||||
|
- python-zsi
|
||||||
|
- python-requests
|
||||||
|
- python-pypdf
|
||||||
|
- python-decorator
|
||||||
|
- python-passlib
|
||||||
|
- python-babel
|
||||||
|
- python-gevent
|
||||||
|
|
||||||
|
odoo_nodejs_apt_package: "nodejs=0.10*"
|
||||||
|
odoo_nodejs_apt_repo: "node_0.10"
|
||||||
|
odoo_npm_packages:
|
||||||
|
- name: less
|
||||||
|
version: 2.5.3
|
||||||
|
- name: less-plugin-clean-css
|
||||||
|
version: 1.5.1
|
||||||
|
- name: phantomjs-prebuilt
|
||||||
|
version: 2.1.15
|
||||||
|
|
||||||
|
odoo_buildout_build_dependencies:
|
||||||
|
- python-virtualenv
|
||||||
|
- build-essential
|
||||||
|
- python-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
- libpq-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- libsasl2-dev
|
||||||
|
- libopenjp2-7-dev
|
||||||
|
- libjpeg-turbo8-dev
|
||||||
|
- libtiff5-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- liblcms2-dev
|
||||||
|
- libwebp-dev
|
||||||
|
|
||||||
|
odoo_wkhtmltox_depends:
|
||||||
|
- fontconfig
|
||||||
|
- libfontconfig1
|
||||||
|
- libfreetype6
|
||||||
|
- libpng12-0
|
||||||
|
- zlib1g
|
||||||
|
- libssl1.0.0
|
||||||
|
- libx11-6
|
||||||
|
- libxext6
|
||||||
|
- libxrender1
|
||||||
|
- libstdc++6
|
||||||
|
- libc6
|
||||||
|
- libjpeg-turbo8
|
||||||
|
|
||||||
|
# Try Trusty's package if Xenial one is not found
|
||||||
|
odoo_wkhtmltox_urls:
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-trusty-{{ odoo_debian_arch }}.deb
|
||||||
|
- http://nightly.odoo.com/extra/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
odoo_apt_update_cache: yes
|
||||||
|
odoo_apt_cache_valid_time: 86400
|
||||||
|
|
||||||
|
odoo_required_tools:
|
||||||
|
- sudo
|
||||||
|
- git
|
||||||
|
- python-pip
|
||||||
|
- python-psycopg2
|
||||||
|
|
||||||
|
odoo_pypi_packages:
|
||||||
|
- psycogreen
|
||||||
|
|
||||||
|
odoo_buildout_venv_cmd: "virtualenv --no-setuptools {{ odoo_buildout_venv_path }}"
|
||||||
|
|
||||||
|
odoo_wkhtmltox_urls:
|
||||||
|
- https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/{{ odoo_wkhtmltox_version }}/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
- http://nightly.odoo.com/extra/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb
|
||||||
|
|
||||||
|
odoo_wkhtmltox_dest: "/root/wkhtmltox-{{ odoo_wkhtmltox_version }}_linux-{{ ansible_distribution_release }}-{{ odoo_debian_arch }}.deb"
|
||||||
|
|
||||||
|
# == NodeJS + npm ==
|
||||||
|
odoo_nodejs_apt_package: "nodejs=0.10*"
|
||||||
|
odoo_nodejs_apt_repo: "node_0.10"
|
||||||
|
odoo_nodejs_apt_dist: "{{ ansible_distribution_release }}"
|
||||||
|
odoo_nodejs_apt_repositories:
|
||||||
|
- repo: "deb http://deb.nodesource.com/{{ odoo_nodejs_apt_repo }} {{ odoo_nodejs_apt_dist }} main"
|
||||||
|
state: present
|
||||||
|
odoo_nodejs_apt_keys:
|
||||||
|
- url: http://deb.nodesource.com/gpgkey/nodesource.gpg.key
|
||||||
|
state: present
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
language: python
|
||||||
|
python: "2.7"
|
||||||
|
before_install:
|
||||||
|
- sudo apt-get update -qq
|
||||||
|
- sudo apt-get install -qq python-apt python-pycurl
|
||||||
|
install:
|
||||||
|
- pip install ansible
|
||||||
|
script:
|
||||||
|
- echo travis.dev > inventory
|
||||||
|
- ansible-playbook -i inventory --syntax-check --list-tasks test.yml
|
||||||
|
- ansible-playbook -i inventory --extra-vars "ssl_certs_common_name=travis.dev" --connection=local --sudo -vvvv test.yml
|
||||||
|
addons:
|
||||||
|
hosts:
|
||||||
|
- travis.dev
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
Copyright (c) 2014, DAUPHANT Julien
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
ansible-role-ssl-certs
|
||||||
|
======================
|
||||||
|
|
||||||
|
Generate and/or deploy SSL certificate
|
||||||
|
|
||||||
|
Available on Ansible Galaxy: [jdauphant.ssl-certs](https://galaxy.ansible.com/list#/roles/3115)
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
|
||||||
|
## Example to generate a self-signed SSL certificate
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- jdauphant.ssl-certs
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create certificate and private key in:
|
||||||
|
|
||||||
|
- `/etc/ssl/myserver.mydomain.com.key`
|
||||||
|
- `/etc/ssl/myserver.mydomain.com.pem`
|
||||||
|
|
||||||
|
## Example to deploy a SSL certificate
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: jdauphant.ssl-certs
|
||||||
|
ssl_certs_common_name: "example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
The certificate has to be placed in `files/ssl/example.com.key` and `files/ssl/example.com.pem`. If
|
||||||
|
they don't exist, the key and a **self-signed** certificate will be generated at
|
||||||
|
`/etc/ssl/example.com/example.com.key` and `/etc/ssl/example.com/example.com.pem` using the provided common name.
|
||||||
|
|
||||||
|
|
||||||
|
## Example to deploy a SSL certificate using local key/pem files
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- role: jdauphant.ssl-certs
|
||||||
|
ssl_certs_local_privkey_path: '/path/to/example.com.key'
|
||||||
|
ssl_certs_local_cert_path: '/path/to/example.com.pem'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example to deploy a SSL certificate stored in variables
|
||||||
|
|
||||||
|
An SSL certificate and key are just text that can be stored as a variable, which is useful when
|
||||||
|
using ansible vault.
|
||||||
|
|
||||||
|
Example variable data, note how the text blob is indented. This is needed to correctly insert the
|
||||||
|
text via the template module.
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
ssl_certs_local_privkey_data: |
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpQIBAAKCAQEAu2uhv2cjoN4F3arUZ5cDrwuxf3koCwrKSK75as0WZoxYrpyw
|
||||||
|
Lyx9ldyD4nGabVep0R/uAgQ/HqEf2jC7WIvGcEq8bHB9PyEEWzT8IjKQX0YTc//4
|
||||||
|
gkHBkpyU0fVrj5nkc30EIbcbH4RHRDwye4VhP/iCPchDG7OqvCyOdm8=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
|
ssl_certs_local_cert_data: |
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDmzCCAoOgAwIBAgIJAKWMlgLwrBzXMA0GCSqGSIb3DQEBCwUAMGQxCzAJBgNV
|
||||||
|
QAL3naEfBSZBl0tBohuxn8Xd3yLPuKGUOk3pSL1IJy0Ca6p+QwjkaZUd9X3gf1V2
|
||||||
|
SEfYSaGPvfIlSuHIshno
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
```
|
||||||
|
|
||||||
|
Then simply include the role as in the first example.
|
||||||
|
|
||||||
|
## Example to use this role with my Nginx role: [jdauphant.nginx](https://github.com/jdauphant/ansible-role-nginx)
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- jdauphant.ssl-certs
|
||||||
|
ssl_certs_generate_dh_param: true
|
||||||
|
- role: jdauphant.nginx
|
||||||
|
nginx_configs:
|
||||||
|
ssl:
|
||||||
|
- ssl_certificate_key {{ssl_certs_privkey_path}}
|
||||||
|
- ssl_certificate {{ssl_certs_cert_path}}
|
||||||
|
- ssl_dhparam {{ssl_certs_dhparam_path}}
|
||||||
|
nginx_sites:
|
||||||
|
default:
|
||||||
|
- listen 443 ssl
|
||||||
|
- server_name _
|
||||||
|
- root "/usr/share/nginx/html"
|
||||||
|
- index index.html
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[defaults]
|
||||||
|
roles_path = ../
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
ssl_certs_country: "AT"
|
||||||
|
ssl_certs_locality: "Linz"
|
||||||
|
ssl_certs_organization: "datenpol Gmbh"
|
||||||
|
ssl_certs_state: "Linz"
|
||||||
|
ssl_certs_common_name: "{{ansible_fqdn}}"
|
||||||
|
ssl_certs_days: "365"
|
||||||
|
ssl_certs_fields: "/C={{ssl_certs_country}}/ST={{ssl_certs_state}}/L={{ssl_certs_locality}}/O={{ssl_certs_organization}}/CN={{ssl_certs_common_name}}"
|
||||||
|
|
||||||
|
ssl_certs_path: "/etc/ssl/{{ssl_certs_common_name}}"
|
||||||
|
ssl_certs_path_owner: "www-data"
|
||||||
|
ssl_certs_path_group: "www-data"
|
||||||
|
ssl_certs_privkey_path: "{{ssl_certs_path}}/{{ssl_certs_common_name}}.key"
|
||||||
|
ssl_certs_cert_path: "{{ssl_certs_path}}/{{ssl_certs_common_name}}.pem"
|
||||||
|
ssl_certs_csr_path: "{{ssl_certs_path}}/{{ssl_certs_common_name}}.csr"
|
||||||
|
ssl_certs_dhparam_path: "{{ssl_certs_path}}/dhparam.pem"
|
||||||
|
ssl_certs_mode: "0700"
|
||||||
|
ssl_certs_force_replace: yes
|
||||||
|
|
||||||
|
ssl_certs_local_privkey_path: "{{ssl_certs_path}}/{{ssl_certs_common_name}}.key"
|
||||||
|
ssl_certs_local_cert_path: "{{ssl_certs_path}}/{{ssl_certs_common_name}}.pem"
|
||||||
|
ssl_certs_local_privkey_data: ""
|
||||||
|
ssl_certs_local_cert_data: ""
|
||||||
|
|
||||||
|
ssl_certs_generate_self_signed: true
|
||||||
|
ssl_certs_key_size: "2048"
|
||||||
|
ssl_certs_generate_dh_param: false
|
||||||
|
ssl_certs_dhparam_size: "2048"
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: "Julien DAUPHANT"
|
||||||
|
license: BSD
|
||||||
|
min_ansible_version: 1.9
|
||||||
|
#
|
||||||
|
# Below are all platforms currently available. Just uncomment
|
||||||
|
# the ones that apply to your role. If you don't see your
|
||||||
|
# platform on this list, let us know and we'll get it added!
|
||||||
|
#
|
||||||
|
platforms:
|
||||||
|
#- name: EL
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 5
|
||||||
|
# - 6
|
||||||
|
#- name: GenericUNIX
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - any
|
||||||
|
#- name: Fedora
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 16
|
||||||
|
# - 17
|
||||||
|
# - 18
|
||||||
|
# - 19
|
||||||
|
# - 20
|
||||||
|
#- name: opensuse
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 12.1
|
||||||
|
# - 12.2
|
||||||
|
# - 12.3
|
||||||
|
# - 13.1
|
||||||
|
# - 13.2
|
||||||
|
- name: GenericBSD
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
# - any
|
||||||
|
#- name: FreeBSD
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 8.0
|
||||||
|
# - 8.1
|
||||||
|
# - 8.2
|
||||||
|
# - 8.3
|
||||||
|
# - 8.4
|
||||||
|
# - 9.0
|
||||||
|
# - 9.1
|
||||||
|
# - 9.1
|
||||||
|
# - 9.2
|
||||||
|
#- name: Ubuntu
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - lucid
|
||||||
|
# - maverick
|
||||||
|
# - natty
|
||||||
|
# - oneiric
|
||||||
|
# - precise
|
||||||
|
# - quantal
|
||||||
|
# - raring
|
||||||
|
# - saucy
|
||||||
|
# - trusty
|
||||||
|
#- name: SLES
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 10SP3
|
||||||
|
# - 10SP4
|
||||||
|
# - 11
|
||||||
|
# - 11SP1
|
||||||
|
# - 11SP2
|
||||||
|
# - 11SP3
|
||||||
|
- name: GenericLinux
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
|
# - any
|
||||||
|
#- name: Debian
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - etch
|
||||||
|
# - lenny
|
||||||
|
# - squeeze
|
||||||
|
# - wheezy
|
||||||
|
#
|
||||||
|
# Below are all categories currently available. Just as with
|
||||||
|
# the platforms above, uncomment those that apply to your role.
|
||||||
|
#
|
||||||
|
categories:
|
||||||
|
#- cloud
|
||||||
|
#- cloud:ec2
|
||||||
|
#- cloud:gce
|
||||||
|
#- cloud:rax
|
||||||
|
#- database
|
||||||
|
#- database:nosql
|
||||||
|
#- database:sql
|
||||||
|
#- development
|
||||||
|
#- monitoring
|
||||||
|
#- networking
|
||||||
|
#- packaging
|
||||||
|
#- system
|
||||||
|
- web
|
||||||
|
dependencies: []
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue