feat: install and test mCaptcha/cache
This commit is contained in:
parent
4186f1eb47
commit
2b23534250
5 changed files with 134 additions and 1 deletions
18
ansible/artifacts/cache/cache.service
vendored
Normal file
18
ansible/artifacts/cache/cache.service
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Redis instance with mCaptcha cache module
|
||||||
|
After=network.target
|
||||||
|
Documentation=https://github.com/mCaptcha/cache
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no
|
||||||
|
PIDFile=/run/redis/redis-server.pid
|
||||||
|
TimeoutStopSec=0
|
||||||
|
Restart=always
|
||||||
|
User=redis
|
||||||
|
Group=redis
|
||||||
|
RuntimeDirectory=redis
|
||||||
|
RuntimeDirectoryMode=2755
|
||||||
|
|
||||||
|
UMask=007
|
||||||
|
PrivateTmp=true
|
2
ansible/artifacts/cache/redis.conf
vendored
Normal file
2
ansible/artifacts/cache/redis.conf
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
loadmodule /usr/lib/redis/modules/libcache.so
|
||||||
|
bind 0.0.0.0
|
91
ansible/cache.yml
Normal file
91
ansible/cache.yml
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
---
|
||||||
|
- name: Base configuration
|
||||||
|
ansible.builtin.import_playbook: base.yml
|
||||||
|
|
||||||
|
- name: Install redis cache
|
||||||
|
hosts: mcaptcha_demo_server
|
||||||
|
remote_user: atm
|
||||||
|
pre_tasks:
|
||||||
|
- name: Ensure all VMs are reachable
|
||||||
|
ansible.builtin.ping:
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Install redis-server
|
||||||
|
become: true
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
pkg:
|
||||||
|
- redis-server
|
||||||
|
|
||||||
|
- name: Create Redis plugins dir
|
||||||
|
become: true
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /usr/lib/redis/modules
|
||||||
|
owner: redis
|
||||||
|
group: redis
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Copy custom Redis configuration
|
||||||
|
become: true
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: ./artifacts/cache/redis.conf
|
||||||
|
dest: /etc/redis/
|
||||||
|
owner: redis
|
||||||
|
group: redis
|
||||||
|
force: true
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: Create download dir
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/cache-lib
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Download plugin
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://dl.mcaptcha.org/mcaptcha/cache/master/cache-master-linux-amd64.tar.gz
|
||||||
|
dest: /tmp/cache-lib/
|
||||||
|
checksum: sha256:https://dl.mcaptcha.org/mcaptcha/cache/master/cache-master-linux-amd64.tar.gz.sha256
|
||||||
|
|
||||||
|
- name: Extract cache-master-linux-amd64.tar.gz into /var/lib/foo
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: /tmp/cache-lib/cache-master-linux-amd64.tar.gz
|
||||||
|
remote_src: true
|
||||||
|
dest: /tmp/cache-lib/
|
||||||
|
|
||||||
|
- name: Copy custom Redis configuration
|
||||||
|
become: true
|
||||||
|
notify: restart redis
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: /tmp/cache-lib/cache-master-linux-amd64/libcache.so
|
||||||
|
remote_src: true
|
||||||
|
dest: /usr/lib/redis/modules/
|
||||||
|
owner: redis
|
||||||
|
group: redis
|
||||||
|
force: true
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
# - name: Delete download dir
|
||||||
|
# ansible.builtin.file:
|
||||||
|
# path: /tmp/cache-lib
|
||||||
|
# state: absent
|
||||||
|
|
||||||
|
- name: Allow port 6379 for redis
|
||||||
|
become: true
|
||||||
|
community.general.ufw:
|
||||||
|
state: enabled
|
||||||
|
rule: allow
|
||||||
|
proto: tcp
|
||||||
|
port: "6379"
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: Restart redis
|
||||||
|
listen: restart redis
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: redis
|
||||||
|
enabled: true
|
||||||
|
state: restarted
|
|
@ -28,7 +28,7 @@
|
||||||
name: docker-ce
|
name: docker-ce
|
||||||
update_cache: true
|
update_cache: true
|
||||||
|
|
||||||
# - name: Install Docker Module for Python
|
#- name: Install Docker Module for Python
|
||||||
# become: true
|
# become: true
|
||||||
# community.general.pipx:
|
# community.general.pipx:
|
||||||
# name: docker
|
# name: docker
|
||||||
|
|
22
tests/cache/base.py
vendored
Normal file
22
tests/cache/base.py
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def test_redis_is_listening(host):
|
||||||
|
socket = host.socket(f"tcp://0.0.0.0:6379")
|
||||||
|
assert socket.is_listening
|
||||||
|
|
||||||
|
|
||||||
|
def test_redis_config_exists(host):
|
||||||
|
config = host.file("/etc/redis/redis.conf")
|
||||||
|
assert config.exists
|
||||||
|
assert config.is_file
|
||||||
|
|
||||||
|
|
||||||
|
def test_redis_service_running_and_enabled(host):
|
||||||
|
service = host.service("redis")
|
||||||
|
assert service.is_running
|
||||||
|
assert service.is_enabled
|
Loading…
Reference in a new issue