This guide provides a full Ansible playbook to deploy Odoo with the Accounting module natively on Debian 10+, Ubuntu LTS, and RHEL 9+ compatible hosts without Docker.
- name: Deploy Odoo Accounting (Native)
hosts: odoo-accounting
become: true
vars:
app_root: /opt/odoo
app_user: odoo
app_group: odoo
app_port: 8069
db_name: odoo
db_user: odoo
db_password: "{{ vault_odoo_db_password | default('change-me') }}"
tasks:
- name: Install dependencies on Debian/Ubuntu
apt:
name:
- postgresql
- postgresql-contrib
- python3
- python3-pip
- python3-dev
- python3-venv
- python3-wheel
- git
- libxml2-dev
- libxslt1-dev
- libldap2-dev
- libsasl2-dev
- libffi-dev
- libssl-dev
- libjpeg-dev
- libpng-dev
- zlib1g-dev
- libfreetype6-dev
- node-less
- npm
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Enable and start PostgreSQL
service:
name: postgresql
state: started
enabled: true
when: ansible_os_family == "Debian"
- name: Create Odoo user
user:
name: "{{ app_user }}"
shell: /bin/bash
create_home: true
- name: Create application directory
file:
path: "{{ app_root }}"
state: directory
owner: "{{ app_user }}"
group: "{{ app_group }}"
mode: "0755"
- name: Clone Odoo repository
git:
repo: https://github.com/odoo/odoo.git
dest: "{{ app_root }}"
version: 16.0
become_user: "{{ app_user }}"
- name: Install Python dependencies
pip:
requirements: "{{ app_root }}/requirements.txt"
executable: pip3
become_user: "{{ app_user }}"
- name: Create PostgreSQL user
become_user: postgres
postgresql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
role_attr_flags: CREATEDB,LOGIN
- name: Create Odoo configuration file
copy:
dest: /etc/odoo.conf
mode: "0644"
content: |
[options]
admin_passwd = admin
db_host = localhost
db_port = 5432
db_user = {{ db_user }}
db_password = {{ db_password }}
http_port = {{ app_port }}
logfile = /var/log/odoo/odoo.log
log_level = info
- name: Create log directory
file:
path: /var/log/odoo
state: directory
owner: "{{ app_user }}"
group: "{{ app_group }}"
mode: "0755"
- name: Create systemd service file
copy:
dest: /etc/systemd/system/odoo.service
mode: "0644"
content: |
[Unit]
Description=Odoo
After=network.target postgresql.service
[Service]
Type=simple
User={{ app_user }}
Group={{ app_group }}
ExecStart=/usr/bin/python3 {{ app_root }}/odoo-bin --config /etc/odoo.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Reload systemd
systemd:
daemon_reload: true
- name: Enable Odoo service
systemd:
name: odoo
enabled: true
state: started
http://SERVER-IP:8069 and install the Accounting module from the Apps menu.Beyond this playbook, we offer:
Contact our automation team: office@linux-server-admin.com