diff --git a/local.yml b/local.yml index 864fe39..cdd308e 100644 --- a/local.yml +++ b/local.yml @@ -3,3 +3,5 @@ user: root roles: - odoo + vars: + dominio: agofer.net diff --git a/roles/odoo/tasks/edit-odoo-settings.yml b/roles/odoo/tasks/edit-odoo-settings.yml new file mode 100644 index 0000000..5febb75 --- /dev/null +++ b/roles/odoo/tasks/edit-odoo-settings.yml @@ -0,0 +1,17 @@ +--- +# Change (via direct database access) some settings from their 'Production' +# values + +- name: Copy SQL script with new settings + template: + src: change-odoo-settings.sql.j2 + dest: /home/odoo/change-odoo-settings.sql + mode: '0644' + +- name: Run the update query on the database + become: true + become_user: postgres + postgresql_query: + db: agofer + path_to_script: /home/odoo/change-odoo-settings.sql + diff --git a/roles/odoo/tasks/main.yml b/roles/odoo/tasks/main.yml index 48e2ff2..3fee66b 100644 --- a/roles/odoo/tasks/main.yml +++ b/roles/odoo/tasks/main.yml @@ -31,7 +31,7 @@ - name: Clone current Odoo code git: - repo: 'ssh://git@gitea.agofer.net:22001/Agofer/odoo14_running_code.git' + repo: '{{ sourcecode_location }}' dest: /opt depth: 1 @@ -43,7 +43,7 @@ - name: Download and install wkhtmltopdf apt: - deb: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb + deb: '{{ wkhtmltopdf_location }}' - name: Link wkhtmltopdf scripts file: @@ -54,37 +54,11 @@ - wkhtmltopdf - wkhtmltoimage -- name: Create odoo database user - become: true - become_user: postgres - postgresql_user: - name: '{{ item }}' - role_attr_flags: SUPERUSER - loop: - - odoo - - agofer +- import_tasks: setup-postgresql.yml -- name: Retrieve database backup - synchronize: - mode: pull - compress: no - src: rsync://backups.bogota.agofer/db14/db_odoo_agofer.gz - dest: /home/odoo/db_odoo_agofer.sql.gz +- import_tasks: edit-odoo-settings.yml -- name: Create database - become: true - become_user: postgres - postgresql_db: - name: agofer - owner: odoo - -- name: Restore database from backup - become: true - become_user: postgres - postgresql_db: - name: agofer - state: restore - target: /home/odoo/db_odoo_agofer.sql.gz +- import_tasks: setup-nginx.yml - name: Configure Odoo log rotation copy: @@ -92,36 +66,6 @@ dest: /etc/logrotate.d/odoo mode: '0644' -- name: Configure Nginx - copy: - src: custom_502.html - dest: /etc/nginx/custom_502.html - mode: '0644' - -- copy: - src: nginx.conf - dest: /etc/nginx/sites-available/odoo14 - mode: '0644' - -- file: - state: link - src: /etc/nginx/sites-available/odoo14 - dest: /etc/nginx/sites-enabled/odoo14 - -- file: - state: link - src: /etc/nginx/custom_502.html - dest: /usr/share/nginx/html/custom_502.html - -- file: - state: absent - path: /etc/nginx/sites-enabled/default - -- name: Restart Nginx - systemd: - name: nginx - state: restarted - - name: Configure Odoo template: src: odoo.conf.j2 diff --git a/roles/odoo/tasks/setup-nginx.yml b/roles/odoo/tasks/setup-nginx.yml new file mode 100644 index 0000000..ef8c5be --- /dev/null +++ b/roles/odoo/tasks/setup-nginx.yml @@ -0,0 +1,33 @@ +--- +# Configure Odoo as the only site in the local Nginx http server + +- name: Configure Nginx + copy: + src: custom_502.html + dest: /etc/nginx/custom_502.html + mode: '0644' + +- copy: + src: nginx.conf + dest: /etc/nginx/sites-available/odoo14 + mode: '0644' + +- file: + state: link + src: /etc/nginx/sites-available/odoo14 + dest: /etc/nginx/sites-enabled/odoo14 + +- file: + state: link + src: /etc/nginx/custom_502.html + dest: /usr/share/nginx/html/custom_502.html + +- file: + state: absent + path: /etc/nginx/sites-enabled/default + +- name: Restart Nginx + systemd: + name: nginx + state: restarted + diff --git a/roles/odoo/tasks/setup-postgresql.yml b/roles/odoo/tasks/setup-postgresql.yml new file mode 100644 index 0000000..ddddac2 --- /dev/null +++ b/roles/odoo/tasks/setup-postgresql.yml @@ -0,0 +1,35 @@ +--- +# Configure PostgreSQL and import existing Odoo14 database from a backup + +- name: Create odoo database user + become: true + become_user: postgres + postgresql_user: + name: '{{ item }}' + role_attr_flags: SUPERUSER + loop: + - odoo + - agofer + +- name: Retrieve database backup + synchronize: + mode: pull + compress: no + src: '{{ database_location }}' + dest: /home/odoo/db_odoo_agofer.sql.gz + +- name: Create database + become: true + become_user: postgres + postgresql_db: + name: agofer + owner: odoo + +- name: Restore database from backup + become: true + become_user: postgres + postgresql_db: + name: agofer + state: restore + target: /home/odoo/db_odoo_agofer.sql.gz + diff --git a/roles/odoo/files/remove_remote_connections.sql b/roles/odoo/templates/change-odoo-settings.sql.j2 similarity index 54% rename from roles/odoo/files/remove_remote_connections.sql rename to roles/odoo/templates/change-odoo-settings.sql.j2 index 061e4e2..d6e34fa 100644 --- a/roles/odoo/files/remove_remote_connections.sql +++ b/roles/odoo/templates/change-odoo-settings.sql.j2 @@ -1,34 +1,49 @@ --- Update production Odoo database to delete remote connection servers --- (email and electronic invoice) and change the password for user sistemas +-- Update Odoo database with new settings for the current development/testing +-- install + +-- Change Electronic Invoice settings to prevent invoices from being sent UPDATE "res_company" SET "ei_automatic_gen"=false,"ei_ack_folder"='/INVOICE/LAB/800216499/800216499_01/OUT/Acuse_Recibo/',"ei_dian_result_folder"='/INVOICE/LAB/800216499/800216499_01/OUT/Dian_result',"ei_write_folder"='/INVOICE/LAB/800216499/800216499_01/IN/',"ei_automatic_read"=false,"ei_error_folder"='/INVOICE/LAB/800216499/800216499_01/OUT/Error/',"ei_decision_folder"='/INVOICE/LAB/800216499/800216499_01/OUT/Aceptacion_y_rechazo/',"ei_server_type"='test',"xml_automatic_generation"=false,"sftp_url"='fecolab.cen.biz',"ei_voucher_folder"='/INVOICE/LAB/800216499/800216499_01/OUT/Comprobantes/' WHERE id IN (1); +-- Deactivate Electronic Invoice periodic checks and downloads + UPDATE "ir_cron" SET "active"=false WHERE id IN (25); UPDATE "ir_cron" SET "active"=false WHERE id IN (27); +-- Change Client ID for Google OAuth authentication + UPDATE "auth_oauth_provider" SET "client_id"='839348907645-51gmj31708h2vuts2sorqh842uhohoce.apps.googleusercontent.com' WHERE id IN (3); +-- Change password for user 'sistemas' + UPDATE "res_users" SET "password_crypt"='$pbkdf2-sha512$6400$tnYOAUCoNSbkHKMUAmAMgQ$UTwtQj2mGD1KnW5.S7dq0qxMw5M4tuWb2ckr8vB8k7MLrwG5aDyWDA6sLXawE..xrLDjvYrtxgIRvNf97knYVQ' WHERE id IN (5); UPDATE "res_users" SET "password"='' WHERE id = 5; UPDATE "res_users" SET "share"=false WHERE id = 5; -delete from wkf_instance where res_id=1 and res_type='fetchmail.server'; +-- Delete incoming and outgoing mail server settings -delete from fetchmail_server where id IN (1); +DELETE FROM wkf_instance where res_id=1 and res_type='fetchmail.server'; -delete from wkf_instance where res_id=1 and res_type='ir.mail_server'; +DELETE FROM fetchmail_server where id IN (1); -delete from ir_mail_server where id IN (1); +DELETE FROM wkf_instance where res_id=1 and res_type='ir.mail_server'; -delete from wkf_instance where res_id=4 and res_type='ir.mail_server'; +DELETE FROM ir_mail_server where id IN (1); -delete from ir_mail_server where id IN (4); +DELETE FROM wkf_instance where res_id=4 and res_type='ir.mail_server'; -delete from wkf_instance where res_id=5 and res_type='ir.mail_server'; +DELETE FROM ir_mail_server where id IN (4); -delete from ir_mail_server where id IN (5); +DELETE FROM wkf_instance where res_id=5 and res_type='ir.mail_server'; + +DELETE FROM ir_mail_server where id IN (5); + +DELETE FROM ir_model_data where id IN (1576); + +-- Change base URL + +UPDATE "ir_config_parameter" SET "value"='https://{{ ansible_hostname }}.{{ dominio }}' WHERE id IN (5); -delete from ir_model_data where id IN (1576); diff --git a/roles/odoo/templates/odoo.conf.j2 b/roles/odoo/templates/odoo.conf.j2 index 80403fe..b95dce3 100644 --- a/roles/odoo/templates/odoo.conf.j2 +++ b/roles/odoo/templates/odoo.conf.j2 @@ -9,8 +9,8 @@ db_user = odoo db_name = agofer list_db = True dbfilter = ^agofer$ -addons_path = /opt/odoo/odoo/addons,/opt/odoo/community/addons,/opt/odoo/extended,/opt/odoo/vendor -without_demo = True +addons_path = /opt/odoo/core/addons,/opt/odoo/community,/opt/odoo/custom,/opt/odoo/vendor +without_demo = all test_enable = False timezone = America/Bogota unaccent = True diff --git a/roles/odoo/vars/main/main.yml b/roles/odoo/vars/main/main.yml index 848b23b..2301a65 100644 --- a/roles/odoo/vars/main/main.yml +++ b/roles/odoo/vars/main/main.yml @@ -2,6 +2,12 @@ adminpass: '{{ vault_adminpass }}' +wkhtmltopdf_location: 'https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb' + +sourcecode_location: 'ssh://git@gitea.agofer.net:22001/Agofer/odoo14_running_code.git' + +database_location: 'rsync://backups.bogota.agofer/db14/db_odoo_agofer.gz' + apt_packages: - build-essential - nginx @@ -41,3 +47,4 @@ python_packages: - setuptools - wheel - paramiko + - pdfminer