Ansible playbooks for setting up and configuring a school's app server.
  • Python 51.4%
  • Jinja 48.6%
Find a file
2026-07-31 12:49:16 +02:00
.github/workflows Provide Github Action to run linter on Ansible scripts. 2024-11-12 17:15:28 +01:00
group_vars Deploy Etherpad with its own Docker Compose file in new directory. 2026-07-31 12:49:16 +02:00
host_vars Deploy Etherpad with its own Docker Compose file in new directory. 2026-07-31 12:49:16 +02:00
inventory Move inventory file into it's own directory. 2024-10-19 13:42:25 +02:00
roles Deploy Etherpad with its own Docker Compose file in new directory. 2026-07-31 12:49:16 +02:00
tools Provide simple Python script for creating and listing accounts on Stalwart mail server. 2025-08-19 14:29:57 +02:00
.ansible-lint Skip some linter errors for Ansible. 2024-10-19 13:40:58 +02:00
.gitignore Provide Ansible role for Forgejo Git server. 2025-10-04 19:25:13 +02:00
ansible.cfg Move inventory file into it's own directory. 2024-10-19 13:42:25 +02:00
development.yml Remove Gitea from all Ansible roles and playbooks. 2026-06-13 10:51:52 +02:00
infrastructure.yml Configure Authentik stack to also react on requests on the base domain. 2025-10-05 11:50:52 +02:00
initial-setup.yml Add more tags to playbooks. 2024-10-18 17:21:54 +02:00
LICENSE Provide first Ansible playbooks for setting up basic services. 2024-07-24 20:05:48 +02:00
mail-server.yml Provide Ansible playbook and roles for Stalwart mail server 2025-08-18 11:04:44 +02:00
maintenance.yml Bump up version of some containers. 2025-06-25 08:26:40 +02:00
Pipfile Bump up Python version in Pipfile. 2025-06-14 16:36:20 +02:00
Pipfile.lock Bump up Python version in Pipfile. 2025-06-14 16:36:20 +02:00
README.md Provide Ansible playbook for installing and configuring Crowdsec threat intelligence. 2024-10-18 11:06:50 +02:00
requirements.yml Provide Ansible playbook for installing and configuring the Grafana Alloy agent. 2024-10-16 12:37:10 +02:00
site.yml Provide role for installing and configuring Etherpad. 2024-07-26 13:29:09 +02:00
TODO.md Provide Ansible role for creating backup archives for all Docker volumes. 2024-10-19 16:27:24 +02:00
tools.yml Provide Ansible role for Joplin server. 2026-07-29 11:16:25 +02:00

School server - Ansible playbooks

Ansible playbooks for setting up and configuring a school's app server. These playbooks use Docker Compose scripts from the Github repo "SchoolAppServer".

Requirements

Install ansible first by following the official handbook:

After that you can install all ansible roles:

ansible-galaxy install -r requirements.yml

Usage

First, you have to provide all necessary parameters and settings by editing the files in the directories "group_vars" and "host_vars".

After that you can just run the main playbook to install and configure all services:

ansible-playbook site.yml

It is possible to run only roles with certain tags from a given playbook on chosen hosts, e.g.:

ansible-playbook infrastructure.yml --limit server-it-01 --tags "monitoring"

Useful commands

Show full inventory with all variables:

ansible-inventory --list

Try to log in to all servers in group:

ansible schoolservers -m ping

Simple tasks can be executed manually as ad hoc commands:

ansible server-it-01 -a "/sbin/reboot" -u wichmann
ansible server-it-01 -m ansible.builtin.copy -a "src=/etc/hosts dest=/tmp/hosts" -u wichmann
ansible schoolservers -m ansible.builtin.apt -a "force_apt_get: true upgrade: dist" -u wichmann
ansible schoolservers -a "sudo systemctl reload alloy" -u wichmann
ansible schoolservers -m ansible.builtin.service -a "name=alloy state=reloaded" -u wichmann
ansible all -m ansible.builtin.setup -u wichmann