--- - 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: | ServerAdmin admin@localhost DocumentRoot /var/www/dolibarr/htdocs Options -Indexes +FollowSymLinks AllowOverride All Require all granted Require all denied ErrorLog ${APACHE_LOG_DIR}/dolibarr-error.log CustomLog ${APACHE_LOG_DIR}/dolibarr-access.log combined 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"