You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

161 lines
3.8 KiB

---
# 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
- 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