4 changed files with 139 additions and 188 deletions
@ -0,0 +1,23 @@
|
||||
--- |
||||
- debug: |
||||
var: doku_path |
||||
|
||||
- name: make dokuwiki archive |
||||
community.general.archive: |
||||
dest: "{{ archive }}" |
||||
path: |
||||
- "{{ doku_path }}conf" |
||||
- "{{ doku_path }}data" |
||||
- "{{ doku_path }}lib/plugins" |
||||
|
||||
- name: copy archive to controller |
||||
fetch: |
||||
src: "{{ archive }}" |
||||
dest: "{{ output }}" |
||||
flat: yes |
||||
|
||||
- name: remove remote archive |
||||
file: |
||||
path: "{{ archive }}" |
||||
state: absent |
||||
|
||||
@ -1,165 +1,100 @@
|
||||
--- |
||||
# NOTE: https://wiki.alpinelinux.org/wiki/DokuWiki |
||||
- name: install dokuwiki to container |
||||
hosts: dokuwiki |
||||
tags: containers |
||||
|
||||
vars: |
||||
lighttpd_user: lighttpd |
||||
lighttpd_group: lighttpd |
||||
docroot: /var/www/localhost/htdocs |
||||
|
||||
doku_url: https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz |
||||
doku_tar: /tmp/dokuwiki-stable.tgz |
||||
doku_dir: "{{ docroot }}/dokuwiki" |
||||
|
||||
use_backup: True |
||||
doku_backup_archive: ../data/dokuwiki_backup.tgz |
||||
backup_guard: ANSIBLE_BACKUP_GUARD |
||||
|
||||
tasks: |
||||
|
||||
# TODO: break out lighttpd default config to a separate playlist |
||||
|
||||
# |
||||
# lighttpd config |
||||
# |
||||
|
||||
- name: install packages |
||||
vars: |
||||
packages: |
||||
- lighttpd |
||||
- php7-common |
||||
- php7-session |
||||
- php7-iconv |
||||
- php7-json |
||||
- php7-gd |
||||
- php7-curl |
||||
- php7-xml |
||||
- php7-mysqli |
||||
- php7-imap |
||||
- php7-cgi |
||||
- php7-pdo |
||||
- php7-pdo_mysql |
||||
- php7-soap |
||||
- php7-xmlrpc |
||||
- php7-posix |
||||
- php7-mcrypt |
||||
- php7-gettext |
||||
- php7-ldap |
||||
- php7-ctype |
||||
- php7-dom |
||||
- fcgi |
||||
- tar |
||||
apk: |
||||
name: "{{ packages | join(' ') }}" |
||||
state: present |
||||
|
||||
# TODO: replace seperate template with 'line in file' |
||||
#$HTTP["url"] =~ "^/dokuwiki/(data|conf|bin|inc|vendor)/+." { |
||||
# url.access-deny = ("") |
||||
#} |
||||
# - name: copy lighttpd.conf |
||||
# copy: |
||||
# src: ../templates/lighttpd.conf.j2 |
||||
# dest: /etc/lighttpd/lighttpd.conf |
||||
|
||||
- name: ensure lighttpd service is started |
||||
service: |
||||
name: lighttpd |
||||
enabled: yes |
||||
state: started |
||||
|
||||
# |
||||
# dokuwiki config |
||||
# |
||||
|
||||
# TODO: this should be a separate play |
||||
|
||||
- name: test if dokuwiki was already installed |
||||
find: |
||||
paths: "{{ doku_dir }}" |
||||
pattern: README |
||||
register: doku_find_result |
||||
when: not use_backup |
||||
|
||||
- name: download dokuwiki stable |
||||
get_url: |
||||
url: "{{ doku_url }}" |
||||
dest: "{{ doku_tar }}" |
||||
when: not use_backup and doku_find_result.matched == 0 |
||||
|
||||
- name: make directory for dokiwiki in docroot |
||||
file: |
||||
path: "{{ doku_dir }}" |
||||
state: directory |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
when: not use_backup and doku_find_result.matched == 0 |
||||
|
||||
- name: unarchive downloaded file |
||||
unarchive: |
||||
remote_src: yes |
||||
src: "{{ doku_tar }}" |
||||
dest: /tmp |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
when: not use_backup and doku_find_result.matched == 0 |
||||
|
||||
- name: find doku temporary directory |
||||
find: |
||||
paths: /tmp/ |
||||
file_type: directory |
||||
pattern: "dokuwiki-20*" |
||||
use_regex: true |
||||
register: doku_tmp_dir |
||||
when: not use_backup |
||||
|
||||
- name: copy dokuwiki files to webroot |
||||
copy: |
||||
remote_src: yes |
||||
src: "{{ doku_tmp_dir.files[0].path }}/" |
||||
dest: "{{ doku_dir }}" |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
when: not use_backup and doku_tmp_dir.matched > 0 |
||||
|
||||
# NOTE: this is only about 3.5MB |
||||
#- name: remove archive |
||||
# file: |
||||
# path: "{{ doku_tar }}" |
||||
# state: absent |
||||
|
||||
- name: remove temporary files |
||||
file: |
||||
path: "{{ doku_tmp_dir.files[0].path }}" |
||||
state: absent |
||||
when: not use_backup and doku_tmp_dir.matched > 0 |
||||
|
||||
# |
||||
# install backup data |
||||
# |
||||
|
||||
- name: test for backup guard |
||||
find: |
||||
path: "{{ doku_dir }}" |
||||
pattern: "{{ backup_guard }}" |
||||
register: backup_guard_present |
||||
|
||||
- name: extract backup archive |
||||
unarchive: |
||||
src: "{{ doku_backup_archive }}" |
||||
dest: "{{ docroot }}" |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
when: use_backup and backup_guard_present.matched == 0 |
||||
|
||||
- name: add guard file to let ansible know backup is completed |
||||
file: |
||||
path: "{{ doku_dir }}/{{ backup_guard }}" |
||||
state: touch |
||||
when: use_backup and backup_guard_present.matched == 0 |
||||
|
||||
# TODO: add play for creating backup data |
||||
# TODO: split up plays and move to separate role |
||||
# TODO: remember to add custom plugins to backup |
||||
|
||||
- name: test if dokuwiki is already installed |
||||
find: |
||||
paths: "{{ doku_dir }}" |
||||
pattern: README |
||||
register: check_installed |
||||
|
||||
- set_fact: |
||||
install_dokuwiki: "{{ check_installed.matched == 0 }}" |
||||
|
||||
- name: install block |
||||
when: install_dokuwiki |
||||
vars: {} |
||||
block: |
||||
- name: add dokuwiki deny rules to lighttpd.conf |
||||
blockinfile: |
||||
path: /etc/lighttpd/lighttpd.conf |
||||
block: | |
||||
$HTTP["url"] =~ "^/dokuwiki/(data|conf|bin|inc|vendor)/+." { |
||||
url.access-deny = ("") |
||||
} |
||||
|
||||
- name: restart lighttpd |
||||
service: |
||||
name: lighttpd |
||||
enabled: yes |
||||
state: restarted |
||||
|
||||
- name: download dokuwiki stable |
||||
get_url: |
||||
url: "{{ doku_url }}" |
||||
dest: "{{ doku_tar }}" |
||||
|
||||
- name: make directory for dokiwiki in docroot |
||||
file: |
||||
path: "{{ doku_dir }}" |
||||
state: directory |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
|
||||
- name: unarchive downloaded file |
||||
unarchive: |
||||
remote_src: yes |
||||
src: "{{ doku_tar }}" |
||||
dest: /tmp |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
|
||||
- name: find doku temporary directory |
||||
find: |
||||
paths: /tmp/ |
||||
file_type: directory |
||||
pattern: "dokuwiki-20*" |
||||
use_regex: true |
||||
register: doku_tmp_dir |
||||
|
||||
- name: copy dokuwiki files to webroot |
||||
copy: |
||||
remote_src: yes |
||||
src: "{{ doku_tmp_dir.files[0].path }}/" |
||||
dest: "{{ doku_dir }}" |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
|
||||
- name: remove archive |
||||
file: |
||||
path: "{{ doku_tar }}" |
||||
state: absent |
||||
|
||||
- name: remove temporary files |
||||
file: |
||||
path: "{{ doku_tmp_dir.files[0].path }}" |
||||
state: absent |
||||
|
||||
## |
||||
## install backup data |
||||
## |
||||
|
||||
- name: test for backup guard |
||||
find: |
||||
path: "{{ doku_dir }}" |
||||
pattern: "{{ backup_guard }}" |
||||
register: backup_guard_present |
||||
|
||||
- name: extract backup archive |
||||
unarchive: |
||||
src: "{{ doku_backup_archive }}" |
||||
dest: "{{ doku_dir }}" |
||||
owner: "{{ lighttpd_user }}" |
||||
group: "{{ lighttpd_group }}" |
||||
when: use_backup and backup_guard_present.matched == 0 |
||||
|
||||
- name: add guard file to let ansible know backup is completed |
||||
file: |
||||
path: "{{ doku_dir }}/{{ backup_guard }}" |
||||
state: touch |
||||
when: use_backup and backup_guard_present.matched == 0 |
||||
|
||||
|
||||
@ -1,30 +1,24 @@
|
||||
--- |
||||
#- name: include dokuwiki install task |
||||
# include_tasks: dokuwiki.yml |
||||
- name: include dokuwiki install task |
||||
vars: |
||||
lighttpd_user: lighttpd |
||||
lighttpd_group: lighttpd |
||||
docroot: /var/www/localhost/htdocs |
||||
|
||||
doku_url: https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz |
||||
doku_tar: /tmp/dokuwiki-stable.tgz |
||||
doku_dir: "{{ docroot }}/dokuwiki" |
||||
|
||||
use_backup: True |
||||
doku_backup_archive: data/dokuwiki_backup.tgz |
||||
backup_guard: ANSIBLE_BACKUP_GUARD |
||||
import_tasks: dokuwiki.yml |
||||
|
||||
- name: backup block |
||||
when: "'backup' in ansible_run_tags" |
||||
include_tasks: backup.yml |
||||
vars: |
||||
output: /tmp/ |
||||
archive: /tmp/dokuwiki_backup.tgz |
||||
doku_path: /var/www/localhost/htdocs/dokuwiki/ |
||||
block: |
||||
- name: make dokuwiki archive |
||||
community.general.archive: |
||||
dest: "{{ archive }}" |
||||
path: |
||||
- "{{ doku_path }} + conf" |
||||
- "{{ doku_path }} + data" |
||||
- "{{ doku_path }} + lib/plugins" |
||||
|
||||
- name: copy archive to controller |
||||
fetch: |
||||
src: "{{ archive }}" |
||||
dest: "{{ output }}" |
||||
flat: yes |
||||
|
||||
- name: remove remote archive |
||||
file: |
||||
path: "{{ archive }}" |
||||
state: absent |
||||
when: "'backup' in ansible_run_tags" |
||||
|
||||
|
||||
Loading…
Reference in new issue