|
@@ -1,51 +1,92 @@
|
1
|
|
-- name: Clone Selfoss
|
2
|
|
- git: repo=https://github.com/SSilence/selfoss.git
|
3
|
|
- dest=/var/www/selfoss
|
4
|
|
- accept_hostkey=yes
|
5
|
|
- version={{ selfoss_version }}
|
|
1
|
+- name: Install selfoss dependencies
|
|
2
|
+ apt:
|
|
3
|
+ name: "{{ packages }}"
|
|
4
|
+ state: present
|
|
5
|
+ vars:
|
|
6
|
+ packages:
|
|
7
|
+ - php
|
|
8
|
+ - php-pgsql
|
|
9
|
+ - php-gd
|
|
10
|
+ - curl
|
|
11
|
+ - unzip
|
|
12
|
+ tags:
|
|
13
|
+ - dependencies
|
|
14
|
+
|
|
15
|
+- name: Create Selfoss temp directory
|
|
16
|
+ file: path=/root/selfoss state=directory
|
|
17
|
+
|
|
18
|
+- name: Download Selfoss-{{ selfoss_version }}
|
|
19
|
+ get_url:
|
|
20
|
+ url=https://github.com/SSilence/selfoss/releases/download/{{ selfoss_version }}/selfoss-{{ selfoss_version }}.zip
|
|
21
|
+ dest=/root/selfoss/selfoss-{{ selfoss_version }}.zip
|
|
22
|
+
|
|
23
|
+- name: Create Selfoss unpack directory
|
|
24
|
+ file: path=/root/selfoss/selfoss-{{ selfoss_version }} state=directory
|
|
25
|
+
|
|
26
|
+- name: Extract Selfoss archive
|
|
27
|
+ unarchive:
|
|
28
|
+ copy: no
|
|
29
|
+ src: /root/selfoss/selfoss-{{ selfoss_version }}.zip
|
|
30
|
+ dest: /root/selfoss/selfoss-{{ selfoss_version }}/
|
|
31
|
+ creates: /root/selfoss-{{ selfoss_version }}/index.php
|
|
32
|
+
|
|
33
|
+- name: Back-Up old Selfoss data
|
|
34
|
+ shell: cp -r /var/www/selfoss/data /root/selfoss/data_bak || true
|
|
35
|
+
|
|
36
|
+- name: Delete old Selfoss document root
|
|
37
|
+ file: path=/var/www/selfoss state=absent
|
|
38
|
+
|
|
39
|
+- name: Copy Selfoss source to document root
|
|
40
|
+ shell: cp -r /root/selfoss/selfoss-{{ selfoss_version }} /var/www/selfoss
|
|
41
|
+
|
|
42
|
+- name: Delete empty Selfoss data
|
|
43
|
+ file: path=/var/www/selfoss/data state=absent
|
|
44
|
+
|
|
45
|
+- name: Restore old Selfoss data
|
|
46
|
+ shell: cp -r /root/selfoss/data_bak /var/www/selfoss/data || cp -r /root/selfoss/selfoss-{{ selfoss_version }}/data /var/www/selfoss/data
|
|
47
|
+
|
|
48
|
+- name: Delete old Selfoss source
|
|
49
|
+ file: path=/root/selfoss state=absent
|
6
|
50
|
|
7
|
51
|
- name: Set selfoss ownership
|
8
|
52
|
action: file owner=root group=www-data path=/var/www/selfoss recurse=yes state=directory
|
9
|
53
|
|
10
|
|
-# only data/cache, data/favicons, data/logs, data/thumbnails, data/sqlite public/ should be writeable by httpd
|
11
|
54
|
- name: Set selfoss permission
|
12
|
55
|
action: file path=/var/www/selfoss/{{ item }} mode=0775
|
13
|
56
|
with_items:
|
14
|
57
|
- data/cache
|
15
|
58
|
- data/favicons
|
|
59
|
+ - data/fulltextrss
|
16
|
60
|
- data/logs
|
17
|
|
- - data/thumbnails
|
18
|
61
|
- data/sqlite
|
|
62
|
+ - data/thumbnails
|
19
|
63
|
- public
|
20
|
64
|
|
21
|
|
-- name: Install selfoss dependencies (PHP5 variant)
|
22
|
|
- apt: pkg={{ item }} state=present
|
23
|
|
- with_items:
|
24
|
|
- - php5
|
25
|
|
- - php5-pgsql
|
26
|
|
- - php5-gd
|
27
|
|
- when: (ansible_distribution_release != "xenial" and ansible_distribution_release != "bionic" and ansible_distribution_release != "stretch")
|
28
|
|
- tags:
|
29
|
|
- - dependencies
|
30
|
|
-
|
31
|
|
-- name: Install selfoss dependencies
|
32
|
|
- apt: pkg={{ item }} state=present
|
33
|
|
- with_items:
|
34
|
|
- - php
|
35
|
|
- - php-pgsql
|
36
|
|
- - php-gd
|
37
|
|
- when: (ansible_distribution_release == "xenial" or ansible_distribution_release == "bionic" or ansible_distribution_release == "stretch")
|
38
|
|
- tags:
|
39
|
|
- - dependencies
|
40
|
|
-
|
41
|
65
|
- name: Create database user for selfoss
|
42
|
|
- postgresql_user: login_host=localhost login_user={{ db_admin_username }} login_password="{{ db_admin_password }}" name={{ selfoss_db_username }} password="{{ selfoss_db_password }}" state=present
|
|
66
|
+ postgresql_user:
|
|
67
|
+ login_host=localhost
|
|
68
|
+ login_user={{ db_admin_username }}
|
|
69
|
+ login_password="{{ db_admin_password }}"
|
|
70
|
+ name={{ selfoss_db_username }}
|
|
71
|
+ password="{{ selfoss_db_password }}"
|
|
72
|
+ state=present
|
43
|
73
|
|
44
|
74
|
- name: Create database for selfoss
|
45
|
|
- postgresql_db: login_host=localhost login_user={{ db_admin_username }} login_password="{{ db_admin_password }}" name={{ selfoss_db_database }} state=present owner={{ selfoss_db_username }}
|
|
75
|
+ postgresql_db:
|
|
76
|
+ login_host=localhost
|
|
77
|
+ login_user={{ db_admin_username }}
|
|
78
|
+ login_password="{{ db_admin_password }}"
|
|
79
|
+ name={{ selfoss_db_database }}
|
|
80
|
+ state=present
|
|
81
|
+ owner={{ selfoss_db_username }}
|
46
|
82
|
|
47
|
83
|
- name: Install selfoss config.ini
|
48
|
|
- template: src=var_www_selfoss_config.ini.j2 dest=/var/www/selfoss/config.ini group=www-data owner=root mode=0640
|
|
84
|
+ template:
|
|
85
|
+ src=var_www_selfoss_config.ini.j2
|
|
86
|
+ dest=/var/www/selfoss/config.ini
|
|
87
|
+ owner=root
|
|
88
|
+ group=www-data
|
|
89
|
+ mode=0640
|
49
|
90
|
|
50
|
91
|
- name: Enable Apache rewrite module
|
51
|
92
|
command: a2enmod rewrite creates=/etc/apache2/mods-enabled/rewrite.load
|
|
@@ -59,21 +100,34 @@
|
59
|
100
|
command: a2enmod expires creates=/etc/apache2/mods-enabled/expires.load
|
60
|
101
|
notify: restart apache
|
61
|
102
|
|
62
|
|
-- name: Rename existing Apache blog virtualhost
|
63
|
|
- command: mv /etc/apache2/sites-available/selfoss /etc/apache2/sites-available/selfoss.conf removes=/etc/apache2/sites-available/selfoss
|
64
|
|
-
|
65
|
|
-- name: Remove old sites-enabled/selfoss symlink (new one will be created by a2ensite)
|
66
|
|
- file: path=/etc/apache2/sites-enabled/selfoss state=absent
|
|
103
|
+- name: Create the Apache sites config files
|
|
104
|
+ template:
|
|
105
|
+ src=etc_apache2_sites-available_selfoss.j2
|
|
106
|
+ dest=/etc/apache2/sites-available/selfoss_{{ item.name }}.conf
|
|
107
|
+ owner=root
|
|
108
|
+ group=root
|
|
109
|
+ with_items: "{{ virtual_domains }}"
|
67
|
110
|
|
68
|
|
-- name: Configure the Apache HTTP server for selfoss
|
69
|
|
- template: src=etc_apache2_sites-available_selfoss.j2 dest=/etc/apache2/sites-available/selfoss.conf group=root owner=root
|
|
111
|
+- name: Remove old sites-enabled symlinks (new ones will be created by a2ensite)
|
|
112
|
+ file: path=/etc/apache2/sites-enabled/selfoss_{{ item }}.conf state=absent
|
|
113
|
+ with_items: "{{ virtual_domains | json_query('[*].name') }}"
|
70
|
114
|
|
71
|
|
-- name: Enable the selfoss site
|
72
|
|
- command: a2ensite selfoss.conf creates=/etc/apache2/sites-enabled/selfoss.conf
|
|
115
|
+- name: Enable Apache sites (creates new sites-enabled symlinks)
|
|
116
|
+ command: a2ensite selfoss_{{ item }}.conf creates=/etc/apache2/sites-enabled/selfoss_{{ item }}.conf
|
73
|
117
|
notify: restart apache
|
|
118
|
+ with_items: "{{ virtual_domains | json_query('[*].name') }}"
|
74
|
119
|
|
75
|
120
|
- name: Install selfoss cronjob
|
76
|
|
- cron: name="selfoss" user="www-data" minute="*/5" job="curl --silent --show-error -k 'https://{{ selfoss_domain }}/update' > /dev/null"
|
|
121
|
+ cron:
|
|
122
|
+ name="selfoss"
|
|
123
|
+ user="www-data"
|
|
124
|
+ minute="*/5"
|
|
125
|
+ job="curl --silent --show-error -k 'https://{{ selfoss_domain }}/update' > /dev/null"
|
77
|
126
|
|
78
|
127
|
- name: Configure selfoss logrotate
|
79
|
|
- copy: src=etc_logrotate_selfoss dest=/etc/logrotate.d/selfoss owner=root group=root mode=0644
|
|
128
|
+ copy:
|
|
129
|
+ src=etc_logrotate_selfoss
|
|
130
|
+ dest=/etc/logrotate.d/selfoss
|
|
131
|
+ owner=root
|
|
132
|
+ group=root
|
|
133
|
+ mode=0644
|