Specify qgis-server version, add remotely accessible gis database
This commit is contained in:
parent
7221b118f6
commit
b1747ae92e
|
@ -4,10 +4,21 @@ software_package_root: "/opt"
|
||||||
|
|
||||||
# temporary fix for https://github.com/ansible/ansible/issues/8603
|
# temporary fix for https://github.com/ansible/ansible/issues/8603
|
||||||
_lizmap_version: 3.7.6
|
_lizmap_version: 3.7.6
|
||||||
|
_qgis_server_version: 3.34.7 # LTS preferred
|
||||||
|
|
||||||
php:
|
php:
|
||||||
version: 8.2
|
version: 8.2
|
||||||
|
|
||||||
|
gis_database:
|
||||||
|
user: gis
|
||||||
|
databases:
|
||||||
|
- gisdb
|
||||||
|
allow_ips:
|
||||||
|
v4:
|
||||||
|
- "0.0.0.0/0"
|
||||||
|
v6:
|
||||||
|
- "::0/0"
|
||||||
|
|
||||||
qgis_repo:
|
qgis_repo:
|
||||||
keyring:
|
keyring:
|
||||||
url: "https://download.qgis.org/downloads/qgis-archive-keyring.gpg"
|
url: "https://download.qgis.org/downloads/qgis-archive-keyring.gpg"
|
||||||
|
@ -19,7 +30,8 @@ postgresql_server:
|
||||||
password: # TODO: link to vault?
|
password: # TODO: link to vault?
|
||||||
|
|
||||||
qgis_server:
|
qgis_server:
|
||||||
path: "/var/www/qgis-server" # no trailing /
|
full_version: "1:{{ _qgis_server_version }}+17bookworm"
|
||||||
|
path: "/opt/qgis-server" # no trailing /
|
||||||
user: "www-data"
|
user: "www-data"
|
||||||
group: "www-data"
|
group: "www-data"
|
||||||
port: 3030
|
port: 3030
|
||||||
|
|
106
playbook.yaml
106
playbook.yaml
|
@ -14,6 +14,12 @@
|
||||||
name: sshd
|
name: sshd
|
||||||
state: restarted
|
state: restarted
|
||||||
|
|
||||||
|
- name: Ensure postgresql is restarted
|
||||||
|
become: true
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: postgresql
|
||||||
|
state: restarted
|
||||||
|
|
||||||
- name: Ensure php-fpm is restarted
|
- name: Ensure php-fpm is restarted
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
|
@ -43,6 +49,7 @@
|
||||||
- postgresql
|
- postgresql
|
||||||
- acl # bug: https://github.com/ansible/ansible/issues/74830
|
- acl # bug: https://github.com/ansible/ansible/issues/74830
|
||||||
- inotify-tools
|
- inotify-tools
|
||||||
|
- postgis
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Ensure qgis-server is valid
|
- name: Ensure qgis-server is valid
|
||||||
|
@ -71,7 +78,7 @@
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
update_cache: true
|
update_cache: true
|
||||||
name:
|
name:
|
||||||
- qgis-server
|
- "{{ 'qgis-server=' + qgis_server['full_version'] }}"
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Ensure qgis-server directory is present
|
- name: Ensure qgis-server directory is present
|
||||||
|
@ -81,7 +88,7 @@
|
||||||
state: directory
|
state: directory
|
||||||
owner: www-data
|
owner: www-data
|
||||||
group: www-data
|
group: www-data
|
||||||
mode: u=rwX,g=rwX,o=r
|
mode: u=rwX,g=rwX,o=rX
|
||||||
|
|
||||||
- name: Ensure qgis-server environment file is latest
|
- name: Ensure qgis-server environment file is latest
|
||||||
become: true
|
become: true
|
||||||
|
@ -99,6 +106,7 @@
|
||||||
dest: "/etc/systemd/system/{{ item }}"
|
dest: "/etc/systemd/system/{{ item }}"
|
||||||
backup: true
|
backup: true
|
||||||
owner: root
|
owner: root
|
||||||
|
group: root
|
||||||
mode: u=rw,g=r,o=r
|
mode: u=rw,g=r,o=r
|
||||||
loop:
|
loop:
|
||||||
- "qgis-server@.service"
|
- "qgis-server@.service"
|
||||||
|
@ -129,7 +137,17 @@
|
||||||
name: "nginx"
|
name: "nginx"
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Ensure nginx and ssh ports are exposed
|
- name: Ensure custom ufw rules are latest
|
||||||
|
become: true
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "/etc/ufw/applications.d/{{ item | basename }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: u=rw,g=r,o=r
|
||||||
|
with_fileglob: "templates/ufw/applications.d/*"
|
||||||
|
|
||||||
|
- name: Ensure ufw rules are set
|
||||||
become: true
|
become: true
|
||||||
community.general.ufw:
|
community.general.ufw:
|
||||||
rule: allow
|
rule: allow
|
||||||
|
@ -139,6 +157,7 @@
|
||||||
- "SSH"
|
- "SSH"
|
||||||
- "Nginx HTTP"
|
- "Nginx HTTP"
|
||||||
- "Nginx HTTPS"
|
- "Nginx HTTPS"
|
||||||
|
- "PostgreSQL"
|
||||||
|
|
||||||
- name: Ensure postgresql for lizmap is valid
|
- name: Ensure postgresql for lizmap is valid
|
||||||
block:
|
block:
|
||||||
|
@ -231,25 +250,32 @@
|
||||||
dest: "/var/www/html/lizmap"
|
dest: "/var/www/html/lizmap"
|
||||||
state: link
|
state: link
|
||||||
|
|
||||||
- name: Ensure lizmap-web-client conf is latest
|
- name: Ensure lizmap-web-client default users file is latest
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: "./templates/lizmap/{{ item.src }}.j2"
|
src: "./templates/lizmap/defaultusers.json.j2"
|
||||||
dest:
|
dest: "{{ lizmap['path'] }}lizmap-web-client-{{ lizmap['version'] }}/lizmap/modules/lizmap/install/defaultusers.json"
|
||||||
"{{ lizmap['path'] }}lizmap-web-client-{{ lizmap['version'] }}/{{
|
|
||||||
item.dest if item.dest is not none else 'lizmap/var/config/' }}{{ item.src }}"
|
|
||||||
backup: true
|
backup: true
|
||||||
owner: www-data
|
owner: www-data
|
||||||
mode: u=rw,g=r,o=r
|
group: www-data
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
|
||||||
|
- name: Ensure lizmap-web-client conf is latest
|
||||||
|
become: true
|
||||||
|
ansible.builtin.blockinfile:
|
||||||
|
block: "{{ lookup('ansible.builtin.template', './templates/lizmap/' + item + '.j2') }}"
|
||||||
|
dest: "{{ lizmap['path'] + 'lizmap-web-client-' + lizmap['version'] + '/lizmap/var/config/' + item }}"
|
||||||
|
backup: true
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
create: true
|
||||||
|
marker: "; {mark} ANSIBLE MANAGED BLOCK"
|
||||||
|
|
||||||
loop:
|
loop:
|
||||||
- src: profiles.ini.php
|
- profiles.ini.php
|
||||||
dest:
|
- lizmapConfig.ini.php
|
||||||
- src: lizmapConfig.ini.php
|
- localconfig.ini.php
|
||||||
dest:
|
|
||||||
- src: localconfig.ini.php
|
|
||||||
dest:
|
|
||||||
- src: defaultusers.json
|
|
||||||
dest: lizmap/modules/lizmap/install/
|
|
||||||
|
|
||||||
register: _lizmap_conf
|
register: _lizmap_conf
|
||||||
|
|
||||||
|
@ -489,3 +515,49 @@
|
||||||
state: present
|
state: present
|
||||||
key: " {{ lookup('file', item) }} "
|
key: " {{ lookup('file', item) }} "
|
||||||
loop: "{{ publisher_ssh_keys }}"
|
loop: "{{ publisher_ssh_keys }}"
|
||||||
|
|
||||||
|
- name: Ensure gis database is present
|
||||||
|
tags: debug
|
||||||
|
block:
|
||||||
|
- name: Ensure gis database user exists
|
||||||
|
become: true
|
||||||
|
become_user: postgres
|
||||||
|
community.postgresql.postgresql_user:
|
||||||
|
name: "{{ gis_database['user'] }}"
|
||||||
|
encrypted: true
|
||||||
|
password: "{{ postgresql_gis_pass }}"
|
||||||
|
|
||||||
|
- name: Ensure gis databases exists
|
||||||
|
become: true
|
||||||
|
become_user: postgres
|
||||||
|
community.postgresql.postgresql_db:
|
||||||
|
name: "{{ item }}"
|
||||||
|
owner: "{{ gis_database['user'] }}"
|
||||||
|
loop: "{{ gis_database['databases'] }}"
|
||||||
|
|
||||||
|
- name: Ensure postgis schema is available in databases
|
||||||
|
become: true
|
||||||
|
become_user: postgres
|
||||||
|
community.postgresql.postgresql_ext:
|
||||||
|
db: "{{ item }}"
|
||||||
|
name: postgis
|
||||||
|
loop: "{{ gis_database['databases'] }}"
|
||||||
|
|
||||||
|
- name: Ensure gis database is reachable
|
||||||
|
notify: Ensure postgresql is restarted
|
||||||
|
block:
|
||||||
|
- name: Ensure postgresql listens on addresses
|
||||||
|
become: true
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: ./templates/postgresql/postgresql_remote.conf.j2
|
||||||
|
dest: /etc/postgresql/15/main/conf.d/postgresql_remote.conf
|
||||||
|
owner: postgres
|
||||||
|
group: postgres
|
||||||
|
mode: u=rw,g=r,o=
|
||||||
|
backup: false
|
||||||
|
|
||||||
|
- name: Ensure postgresql allows gis user to connect
|
||||||
|
become: true
|
||||||
|
ansible.builtin.blockinfile:
|
||||||
|
block: "{{ lookup('ansible.builtin.template', './templates/postgresql/pg_hba_remote.conf.j2') }}"
|
||||||
|
dest: /etc/postgresql/15/main/pg_hba.conf
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Allow remote access to gis databases
|
||||||
|
{% for item in gis_database['allow_ips']['v4'] %}
|
||||||
|
hostssl {{ gis_database['databases'] | join(',') }} {{ gis_database['user'] }} {{ item }} scram-sha-256
|
||||||
|
{% endfor %}
|
||||||
|
{% for item in gis_database['allow_ips']['v6'] %}
|
||||||
|
hostssl {{ gis_database['databases'] | join(',') }} {{ gis_database['user'] }} {{ item }} scram-sha-256
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1 @@
|
||||||
|
listen_addresses = '*'
|
|
@ -0,0 +1,5 @@
|
||||||
|
# from https://github.com/ageis/ufw-application-profiles/blob/master/applications.d/PostgreSQL
|
||||||
|
[PostgreSQL]
|
||||||
|
title=PostgreSQL
|
||||||
|
description=Fully featured object-relational database management system.
|
||||||
|
ports=5432/tcp
|
Loading…
Reference in New Issue