Rolle: Dokuwiki neu

This commit is contained in:
Michael Grote 2021-02-23 12:35:07 +01:00
parent 95f260a24c
commit 2945fcb67b
11 changed files with 148 additions and 141 deletions

View file

@ -4,9 +4,3 @@
- { role: mgrote.dokuwiki, tags: "dokuwiki" } - { role: mgrote.dokuwiki, tags: "dokuwiki" }
vars: vars:
dokuwiki_update: false # Muss für den ersten Lauf aktiviert sein! dokuwiki_update: false # Muss für den ersten Lauf aktiviert sein!
# Aus Backup wiederherstellen
# chmod 777 /var/www/dokuwiki
# Daten reinkopieren
# chmod 755 /var/www/dokuwiki
# chown www-data:www-data /var/www/dokuwiki

View file

@ -2,35 +2,28 @@
### Beschreibung ### Beschreibung
Installiert Dokuwiki (mit apache2 und php-fpm). Installiert Dokuwiki (mit apache2 und php-fpm).
Es werden keine Einstellungen gesetzt Es werden keine Einstellungen gesetzt.
### Funktioniert auf ### Funktioniert auf
- [x] Ubuntu (>=18.04) - [x] Ubuntu (>=18.04)
### Variablen + Defaults ### Variablen + Defaults
##### Pfad zu Dokuwiki see [defaults](./defaults/main.yml)
dokuwiki_install_path: /var/www/dokuwiki
##### Soll IMMER ein Update/Neuer Download durchgeführt werden
- Muss für den ersten Lauf aktiviert sein!
dokuwiki_update: true
##### install.php behalten (für Ersteinrichtung)
dokuwiki_install: false
### Beispiel Playbook
```yaml
---
- hosts: dokuwiki
roles:
- { role: mgrote.dokuwiki, tags: "dokuwiki" }
```
### Daten...
#### Backup einspielen
1. aus Restic wiederherstellen
2. in Archiv packen
3. Inhalt nach /var/www/dokuwiki entpacken
4. Rechte anpassen: chmod 755 /var/www/dokuwiki
5. Besitzer anpassen: chown www-data:www-data /var/www/dokuwiki
### Einrichtung danach... #### Wechsel OS/Maschine
#### entweder mit dem Assistenten einrichten ##### auf altem PC
--> http://dokuwiki-test.grote.lan/install.php 1. tar -czf dw_backup.tar.gz /var/www/dokuwiki
#### oder die alten Dateien verwenden ##### auf neuem PC
Nach dem ausführen des Playbooks 1. Archiv in /home/mg/backup_<data>.tar.gz abspeichern
alles in `/var/www/dokuwiki` löschen 2. Archiv in /var/www verschieben: mv /home/mg/backup_<data>.tar.gz /var/www
`rm -rf * /var/www/dokuwiki/` 3. entpacken: tar -xzf backup_<data>.tar.gz
die alten Dateien nach "/var/www/dokuwiki" kopieren 4. Rechte anpassen: chmod 755 /var/www/dokuwiki
`mv /home/mg/dokuwiki /var/www/` 5. Besitzer anpassen: chown www-data:www-data /var/www/dokuwiki
die Dateirechte richtig setzen
`chown -R www-data /var/www/dokuwiki/`

View file

@ -1,4 +1,6 @@
--- ---
dokuwiki_install_path: /var/www/dokuwiki dokuwiki_install_path: /var/www/dokuwiki # wohin soll dokuwiki installiert werden
dokuwiki_update: false dokuwiki_download_url: https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz # wo soll dokuwiki heruntergeladen werden
dokuwiki_install: false dokuwiki_version_name: 2020-07-29 "Hogfather" # aus /var/www/dokuwiki/VERSION # welche Version, damit wird abgeglichen ob das Archiv heruntergeladen werden muss
dokuwiki_user: www-data # dokuwiki nutzer
dokuwiki_group: www-data #dokuwiki gruppe

View file

@ -1,13 +1,3 @@
--- ---
dependencies: dependencies:
galaxy_info: - role: mgrote.postfix
author: mgrote
description: install_dokuwiki
min_ansible_version: 2.0
license: GPLv3
platforms:
- name: Ubuntu
versions:
- all
galaxy_tags:
- system

View file

@ -0,0 +1,21 @@
---
# aktiviert das module rewrite = a2enmod rewrite
- name: activate a2enmod rewrite
become: yes
ansible.builtin.apache2_module:
state: present
name: rewrite
- name: copy default apache2.conf
become: yes
ansible.builtin.template:
src: "apache2.conf"
dest: "/etc/apache2/apache2.conf"
notify: restart_apache2
- name: copy 000-default.conf
become: yes
ansible.builtin.template:
src: "000-default.conf"
dest: "/etc/apache2/sites-enabled/000-default.conf"
notify: restart_apache2

View file

@ -0,0 +1,72 @@
---
- name: create dokuwiki install path
become: yes
ansible.builtin.file:
path: "{{ dokuwiki_install_path }}"
state: directory
owner: "{{ dokuwiki_user }}"
group: "{{ dokuwiki_group }}"
- name: check if dokuwiki is installed
become: yes
stat:
path: /var/www/dokuwiki/VERSION
register: dokuwiki_install_status
- name: check if desired version is installed
become: yes
ignore_errors: yes
lineinfile:
path: /var/www/dokuwiki/VERSION
line: "{{ dokuwiki_version_name }}"
state: present
check_mode: yes
register: dokuwiki_desired_version
when:
- dokuwiki_install_status.stat.exists == true
# falls Dokuwiki schon installiert ist existiert var/www/dokuwiki/VERSION mit
# dem Inhalt der Version: z.B. 2020-07-29 "Hogfather"
# when die Version die selbe wie in der Variable ist
# ist der status ok, ist die Version unterschiedlich ist der status changed, die Datei
# selber wird aber nicht geändert weil check_mode gleich yes ist
# das Ergebnis wird in der Variable dokuwiki_desired_version gespeichert
# https://raymii.org/s/tutorials/Ansible_-_Only-do-something-if-another-action-changed.html
- name: download latest dokuwiki archive & unarchive to {{ dokuwiki_install_path }}
become: yes
ansible.builtin.unarchive:
src: "{{ dokuwiki_download_url }}"
dest: "{{ dokuwiki_install_path }}"
remote_src: yes
extra_opts: [--strip-components=1] # entfernt die erste Ebene des Archives
owner: "{{ dokuwiki_user }}"
mode: 0744
when:
- (dokuwiki_desired_version.changed) or
(dokuwiki_install_status.stat.exists == false)
# Dise Variable wird hier abgefragt, so wird das Paket nur heruntergeladen wenn die
# Version Unterschiedlich ist
- name: Remove default plugins
become: yes
ansible.builtin.file:
path: '{{ dokuwiki_install_path }}/lib/plugins/{{ item }}'
state: absent
with_items:
- authpdo
- authmysql
- authpgsql
- authad
- name: Change file ownership, group and permissions
become: yes
ansible.builtin.file:
path: "{{ dokuwiki_install_path }}"
owner: "{{ dokuwiki_user }}"
group: "{{ dokuwiki_group }}"
mode: 0744
- name: remove installer
file:
path: "{{ dokuwiki_install_path }}/install.php"
state: absent

View file

@ -0,0 +1,13 @@
---
- name: install packages
become: yes
ansible.builtin.package:
name:
- php
- php-mbstring
- php-xml
- apache2
- libapache2-mod-php
- php-xml
- php-gd
state: present

View file

@ -1,91 +1,7 @@
- name: install packages ---
become: yes - name: include install tasks
ansible.builtin.package: include_tasks: install.yml
name: - name: include apache2 tasks
- php include_tasks: apache2.yml
- php-mbstring - name: include dokuwiki tasks
- php-xml include_tasks: dokuwiki.yml
- apache2
- libapache2-mod-php
- php-xml
- php-gd
state: present
# aktiviert das module rewrite = a2enmod rewrite
- name: activate a2enmod rewrite
become: yes
ansible.builtin.apache2_module:
state: present
name: rewrite
- name: Download latest dokuwiki
become: yes
ansible.builtin.get_url:
url: https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
dest: /tmp/dokuwiki-stable.tgz
when: dokuwiki_update # noqa 601 # entspricht when: dokuwiki_update == true; noqa sorgt dafür dass das beispiel nicht "gemeldet" wird
- name: create dokuwiki install path
become: yes
ansible.builtin.file:
path: "{{ dokuwiki_install_path }}"
state: directory
owner: www-data
group: www-data
- name: Unarchive dokuwiki-stable.tgz to {{ dokuwiki_install_path }}
become: yes
ansible.builtin.unarchive:
src: /tmp/dokuwiki-stable.tgz
dest: "{{ dokuwiki_install_path }}"
owner: www-data
remote_src: yes
list_files: yes
extra_opts: [--strip-components=1] # entfernt die erste Ebene des Archives
when: dokuwiki_update
- name: Remove default plugins
become: yes
ansible.builtin.file:
path: '{{ dokuwiki_install_path }}/lib/plugins/{{ item }}'
state: absent
with_items:
- authpdo
- authmysql
- authpgsql
- authad
when: dokuwiki_update
- name: Change file ownership, group and permissions
become: yes
ansible.builtin.file:
path: "{{ dokuwiki_install_path }}"
owner: www-data
group: www-data
- name: copy apache2.conf
become: yes
ansible.builtin.template:
src: "apache2.conf"
dest: "/etc/apache2/apache2.conf"
notify: restart_apache2
- name: copy 000-default.conf
become: yes
ansible.builtin.template:
src: "000-default.conf"
dest: "/etc/apache2/sites-enabled/000-default.conf"
notify: restart_apache2
- name: remove tmp files
become: yes
ansible.builtin.file:
path: /tmp/dokuwiki-stable.tgz
state: absent
- name: remove install.php
become: yes
ansible.builtin.file:
path: '{{ dokuwiki_install_path }}/install.php'
state: absent
when: not dokuwiki_install # noqa 601 # entspricht when: dokuwiki_update == true; noqa sorgt dafür dass das beispiel nicht "gemeldet" wird # entspricht == false

View file

@ -17,8 +17,9 @@
# modules, e.g. # modules, e.g.
#LogLevel info ssl:warn #LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log ErrorLog ${APACHE_LOG_DIR}/dokuwiki_error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined CustomLog ${APACHE_LOG_DIR}/dokuwiki_access.log combined
DirectoryIndex index.php
# For most configuration files from conf-available/, which are # For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to # enabled or disabled at a global level, it is possible to
@ -26,6 +27,11 @@
# following line enables the CGI configuration for this host only # following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf". # after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf #Include conf-available/serve-cgi-bin.conf
<Directory {{ dokuwiki_install_path }}>
AllowOverride All
Options -Indexes -MultiViews +FollowSymLinks
</Directory>
</VirtualHost> </VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

View file

@ -1,4 +1,4 @@
## mgrote.sicherung_cloud ## mgrote.restic
### Beschreibung ### Beschreibung
Installiert und konfiguriert restic. Installiert und konfiguriert restic.

View file

@ -36,7 +36,7 @@ fi
while [[ "$abbruch_restic" -le {{ restic_anzahl_versuche_backup }} ]] # Schleife für Abbruchbedingung; um die eckikgen Klammern(Befehl "test") muss immer ein leerzeichen sein while [[ "$abbruch_restic" -le {{ restic_anzahl_versuche_backup }} ]] # Schleife für Abbruchbedingung; um die eckigen Klammern(Befehl "test") muss immer ein leerzeichen sein
do do
{ # ist keine Subshell sondern Grouping; https://askubuntu.com/questions/662190/write-the-output-of-multiple-sequential-commands-to-a-text-file { # ist keine Subshell sondern Grouping; https://askubuntu.com/questions/662190/write-the-output-of-multiple-sequential-commands-to-a-text-file
echo "--------------------------------------------------" # Trenner logfile echo "--------------------------------------------------" # Trenner logfile