-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #208 from dump-hr/fix-code-runner
fix code runnner on fesb PCs
- Loading branch information
Showing
7 changed files
with
116 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[web] | ||
49.12.103.189 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
- hosts: localhost | ||
tasks: | ||
- name: Check if inventory is empty. | ||
fail: | ||
msg: '[ERROR] Empty inventory. No host available.' | ||
when: groups.all|length == 0 | ||
|
||
- hosts: web | ||
remote_user: root # TODO: promini | ||
|
||
pre_tasks: | ||
- name: Update apt cache if needed. | ||
become: true | ||
apt: | ||
update_cache: true | ||
cache_valid_time: 3600 | ||
|
||
roles: | ||
- role: geerlingguy.docker | ||
become: true | ||
vars: | ||
docker_users: | ||
- root # TODO: promini | ||
- role: traefik | ||
- role: code-runner | ||
vars: | ||
docker_image: ghcr.io/dump-hr/code-runner:latest | ||
code_runner_domain: code-runner.bdeak.net |
2 changes: 2 additions & 0 deletions
2
infrastructure/ansible/playbooks/code-runner/roles/code-runner/meta/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
--- | ||
dependencies: [] |
57 changes: 57 additions & 0 deletions
57
infrastructure/ansible/playbooks/code-runner/roles/code-runner/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
--- | ||
- name: Generate random container suffix | ||
set_fact: | ||
container_name: "code-runner-{{ lookup('community.general.random_string', length=8, special=false, upper=false) }}" | ||
|
||
- name: Create new code-runner docker container | ||
docker_container: | ||
name: '{{ container_name }}' | ||
image: '{{ docker_image }}' | ||
pull: true | ||
restart_policy: unless-stopped | ||
networks: | ||
- name: traefiknet | ||
labels: | ||
traefik.enable: 'true' | ||
traefik.http.routers.code-runner.rule: 'Host(`{{ code_runner_domain }}`)' | ||
traefik.http.middlewares.code-runner-retry.retry.attempts: '5' | ||
traefik.http.middlewares.code-runner-retry.retry.initialinterval: '100ms' | ||
traefik.http.middlewares.code-runner-cors.headers.accesscontrolallowmethods: '*' | ||
traefik.http.middlewares.code-runner-cors.headers.accesscontrolalloworiginlist: '*' | ||
traefik.http.middlewares.code-runner-cors.headers.accesscontrolmaxage: '100' | ||
traefik.http.middlewares.code-runner-cors.headers.addvaryheader: 'true' | ||
traefik.http.routers.code-runner.middlewares: 'code-runner-retry, code-runner-cors' | ||
# Setting a service property ensures that the generated service name will be consistent between versions | ||
traefik.http.services.code-runner.loadbalancer.server.scheme: 'http' | ||
|
||
- name: Swap docker containers if new one is healthy | ||
block: | ||
- name: Check if code-runner docker container is healthy | ||
docker_container_info: | ||
name: '{{ container_name }}' | ||
register: code_runner | ||
until: code_runner.exists and code_runner.container.State.Health.Status != 'starting' | ||
failed_when: code_runner.container.State.Health.Status != 'healthy' | ||
retries: 20 | ||
delay: 5 | ||
|
||
- name: Remove old code-runner docker container | ||
docker_container: | ||
name: code-runner | ||
state: absent | ||
|
||
- name: Rename new code-runner docker container | ||
shell: docker rename "{{ container_name }}" code-runner | ||
|
||
rescue: | ||
- name: Save unhealthy code-runner docker container logs | ||
shell: docker logs "{{ container_name }}" | sed -e 's/\x1b\[[0-9;]*m//g' > "/home/{{ ansible_user }}/unhealthy-$(date +%s)-{{ container_name }}.log" 2>&1 | ||
|
||
- name: Remove new unhealthy code-runner docker container | ||
docker_container: | ||
name: '{{ container_name }}' | ||
state: absent | ||
|
||
- name: Return error | ||
fail: | ||
msg: New code-runner docker container is unhealthy |
2 changes: 2 additions & 0 deletions
2
infrastructure/ansible/playbooks/code-runner/roles/traefik/meta/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
--- | ||
dependencies: [] |
23 changes: 23 additions & 0 deletions
23
infrastructure/ansible/playbooks/code-runner/roles/traefik/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
- name: Create traefik docker network | ||
docker_network: | ||
name: traefiknet | ||
state: present | ||
|
||
- name: Create traefik docker container | ||
docker_container: | ||
name: traefik | ||
image: traefik:v2.10 | ||
restart_policy: unless-stopped | ||
command: | ||
- "--providers.docker=true" | ||
- "--providers.docker.exposedbydefault=false" | ||
- "--providers.docker.network=traefiknet" | ||
- "--entrypoints.web.address=:80" | ||
- "--accesslog=true" | ||
ports: | ||
- "80:80" | ||
volumes: | ||
- "/var/run/docker.sock:/var/run/docker.sock:ro" | ||
networks: | ||
- name: traefiknet |