alicante-infra/roles/dolibarr_native/tasks/main.yml

181 lines
4.2 KiB
YAML

---
- name: Instalar Apache y PHP 8.2
apt:
name:
- apache2
- php8.2
- php8.2-cli
- php8.2-fpm
- php8.2-pgsql
- php8.2-curl
- php8.2-gd
- php8.2-intl
- php8.2-xml
- php8.2-zip
- php8.2-mbstring
- php8.2-ldap
- libapache2-mod-php8.2
- wget
- unzip
state: present
update_cache: yes
- name: Habilitar módulos Apache necesarios
apache2_module:
name: "{{ item }}"
state: present
loop:
- rewrite
- headers
notify: restart apache
- name: Crear directorio base Dolibarr
file:
path: /var/www/dolibarr
state: directory
owner: www-data
group: www-data
mode: '0755'
- name: Descargar Dolibarr 20.0.2
get_url:
url: https://github.com/Dolibarr/dolibarr/archive/refs/tags/20.0.2.tar.gz
dest: /tmp/dolibarr-20.0.2.tar.gz
timeout: 120
- name: Extraer Dolibarr
unarchive:
src: /tmp/dolibarr-20.0.2.tar.gz
dest: /tmp/
remote_src: yes
creates: /tmp/dolibarr-20.0.2
- name: Mover contenido a /var/www/dolibarr
shell: |
cp -r /tmp/dolibarr-20.0.2/htdocs /var/www/dolibarr/
cp -r /tmp/dolibarr-20.0.2/scripts /var/www/dolibarr/
args:
creates: /var/www/dolibarr/htdocs
- name: Crear directorios necesarios
file:
path: "{{ item }}"
state: directory
owner: www-data
group: www-data
mode: '0755'
loop:
- /var/www/dolibarr/documents
- /var/www/dolibarr/htdocs/conf
- /var/www/dolibarr/htdocs/custom
- name: Crear conf.php inicial
template:
src: conf.php.j2
dest: /var/www/dolibarr/htdocs/conf/conf.php
owner: www-data
group: www-data
mode: '0640'
- name: Configurar permisos correctos
file:
path: "{{ item }}"
owner: www-data
group: www-data
recurse: yes
loop:
- /var/www/dolibarr/htdocs/conf
- /var/www/dolibarr/documents
- name: Crear VirtualHost Apache para Dolibarr
copy:
dest: /etc/apache2/sites-available/dolibarr.conf
content: |
<VirtualHost *:8080>
ServerAdmin admin@localhost
DocumentRoot /var/www/dolibarr/htdocs
<Directory /var/www/dolibarr/htdocs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/dolibarr/documents>
Require all denied
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dolibarr-error.log
CustomLog ${APACHE_LOG_DIR}/dolibarr-access.log combined
</VirtualHost>
notify: restart apache
- name: Cambiar Apache a puerto 8080
lineinfile:
path: /etc/apache2/ports.conf
regexp: '^Listen 80'
line: 'Listen 8080'
notify: restart apache
- name: Deshabilitar sitio default
command: a2dissite 000-default
notify: restart apache
ignore_errors: yes
- name: Habilitar sitio Dolibarr
command: a2ensite dolibarr
notify: restart apache
- name: Asegurar Apache iniciado
systemd:
name: apache2
state: started
enabled: yes
- name: Esperar a que Apache esté listo
wait_for:
port: 8080
timeout: 30
- name: Crear install.lock para seguridad
file:
path: /var/www/dolibarr/documents/install.lock
state: touch
owner: www-data
group: www-data
mode: '0444'
- name: Crear script backup Dolibarr
copy:
dest: /usr/local/bin/backup-dolibarr.sh
mode: '0755'
content: |
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/opt/backups/dolibarr"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/dolibarr_files_$DATE.tar.gz" \
/var/www/dolibarr/documents \
/var/www/dolibarr/htdocs/conf
su - postgres -c "pg_dump {{ core_db_credentials.dolibarr_db_name }}" | gzip > "$BACKUP_DIR/dolibarr_db_$DATE.sql.gz"
find "$BACKUP_DIR" -mtime +14 -delete
echo "✓ Backup Dolibarr: $DATE"
- name: Crear directorio backups Dolibarr
file:
path: /opt/backups/dolibarr
state: directory
mode: '0755'
- name: Programar backup semanal Dolibarr
cron:
name: "Backup Dolibarr"
weekday: "0"
hour: "4"
minute: "0"
job: "/usr/local/bin/backup-dolibarr.sh >> /var/log/dolibarr-backup.log 2>&1"