Feat(domserver): docker compose testing
This commit is contained in:
4
ansible.cfg
Normal file
4
ansible.cfg
Normal file
@@ -0,0 +1,4 @@
|
||||
[defaults]
|
||||
roles_path=./roles/
|
||||
inventory=./hosts
|
||||
remote_user=root
|
||||
4
group_vars/domserver/main.yml
Normal file
4
group_vars/domserver/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
domjudge_base_dir: /opt/domjudge/midterm
|
||||
mariadb_version: 11.7.2
|
||||
domserver_version: 8.3.1
|
||||
13
hosts
Normal file
13
hosts
Normal file
@@ -0,0 +1,13 @@
|
||||
[control]
|
||||
localhost ansible_connection=local
|
||||
|
||||
[domserver]
|
||||
10.4.2.226
|
||||
# 140.113.168.160
|
||||
|
||||
[judgehost]
|
||||
10.4.2.227
|
||||
10.4.2.228
|
||||
|
||||
[all:vars]
|
||||
ansible_python_interpreter=/usr/bin/python
|
||||
@@ -0,0 +1,4 @@
|
||||
[mariadb]
|
||||
max_connections = 1000
|
||||
innodb_log_file_size = 4096MB
|
||||
max_allowed_packet = 4096MB
|
||||
5
roles/configure_domserver/files/config/php/domjudge.conf
Normal file
5
roles/configure_domserver/files/config/php/domjudge.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
; Set these three to be at least the size of your largest testcase and
|
||||
; largest expected program output.
|
||||
php_admin_value[memory_limit] = 4096M
|
||||
php_admin_value[upload_max_filesize] = 4096M
|
||||
php_admin_value[post_max_size] = 4096M
|
||||
6
roles/configure_domserver/handlers/main.yml
Normal file
6
roles/configure_domserver/handlers/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: Restart domjudge docker compose
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ domjudge_base_dir }}"
|
||||
state: restarted
|
||||
remove_orphans: true
|
||||
38
roles/configure_domserver/tasks/main.yml
Normal file
38
roles/configure_domserver/tasks/main.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
- name: Install domjudge directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ domjudge_base_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: root
|
||||
group: root
|
||||
- name: Install domjudge docker compose
|
||||
notify:
|
||||
- Restart domjudge docker compose
|
||||
block:
|
||||
- name: Install docker-compose.yml
|
||||
ansible.builtin.template:
|
||||
src: docker-compose.yml.jinja
|
||||
dest: "{{ domjudge_base_dir }}/docker-compose.yml"
|
||||
mode: '0644'
|
||||
owner: root
|
||||
group: root
|
||||
- name: Install mysql config
|
||||
ansible.builtin.copy:
|
||||
src: config/mysql
|
||||
dest: "{{ domjudge_base_dir }}/config/mysql"
|
||||
mode: '0755'
|
||||
owner: root
|
||||
group: root
|
||||
- name: Install domserver php config
|
||||
ansible.builtin.copy:
|
||||
src: config/php
|
||||
dest: "{{ domjudge_base_dir }}/config/php"
|
||||
mode: '0755'
|
||||
owner: root
|
||||
group: root
|
||||
- name: Enable and start docker
|
||||
ansible.builtin.systemd_service:
|
||||
name: docker.service
|
||||
state: started
|
||||
enabled: true
|
||||
28
roles/configure_domserver/templates/docker-compose.yml.jinja
Normal file
28
roles/configure_domserver/templates/docker-compose.yml.jinja
Normal file
@@ -0,0 +1,28 @@
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:{{ mariadb_version }}
|
||||
environment:
|
||||
MYSQL_USER: domjudge
|
||||
MYSQL_DATABASE: domjudge
|
||||
MYSQL_PASSWORD: "{{ mysql_password }}"
|
||||
MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}"
|
||||
restart: always
|
||||
volumes:
|
||||
- "./data/mariadb:/var/lib/mysql"
|
||||
- "./config/mysql:/etc/mysql/conf.d:ro"
|
||||
domserver:
|
||||
build:
|
||||
context: .
|
||||
dockerfile_inline: |
|
||||
FROM domjudge/domserver:{{ domserver_version }}
|
||||
COPY ./config/php/domjudge.conf /etc/php/8.2/fpm/pool.d/domjudge.conf
|
||||
environment:
|
||||
MYSQL_HOST: mariadb
|
||||
MYSQL_USER: domjudge
|
||||
MYSQL_DATABASE: domjudge
|
||||
MYSQL_PASSWORD: "{{ mysql_password }}"
|
||||
MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}"
|
||||
CONTAINER_TIMEZONE: Asia/Taipei
|
||||
restart: always
|
||||
ports:
|
||||
- "8080:80"
|
||||
9
roles/configure_judgehost/tasks/main.yml
Normal file
9
roles/configure_judgehost/tasks/main.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: Add boot parameters
|
||||
ansible.builtin.lineinfile:
|
||||
path: /boot/loader/entries/arch.conf
|
||||
line: >-
|
||||
options
|
||||
cgroup_enable=memory
|
||||
swapaccount=1
|
||||
systemd.unified_cgroup_hierarchy=0
|
||||
4
roles/install_packages/handlers/main.yml
Normal file
4
roles/install_packages/handlers/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
- name: Upgrade packages
|
||||
community.general.pacman:
|
||||
upgrade: true
|
||||
9
roles/install_packages/tasks/main.yml
Normal file
9
roles/install_packages/tasks/main.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: Update package cache
|
||||
community.general.pacman:
|
||||
update_cache: true
|
||||
- name: Install docker
|
||||
community.general.pacman:
|
||||
pkg:
|
||||
- docker
|
||||
notify: Upgrade packages
|
||||
Reference in New Issue
Block a user