2021-04-04 17:26:30 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
- hosts: dl
|
2021-04-06 19:49:04 +00:00
|
|
|
vars:
|
|
|
|
uploaders:
|
2022-02-28 14:00:13 +00:00
|
|
|
- mdk
|
|
|
|
- hs-157
|
|
|
|
- pilou
|
|
|
|
- entwanne
|
2023-02-15 15:34:01 +00:00
|
|
|
- merwyn
|
2021-04-06 19:49:04 +00:00
|
|
|
|
2021-04-04 17:26:30 +00:00
|
|
|
tasks:
|
|
|
|
- name: Basic setup
|
|
|
|
include_role: name=common
|
|
|
|
|
2021-04-06 19:49:04 +00:00
|
|
|
- name: Create uploaders group
|
|
|
|
group:
|
|
|
|
name: uploaders
|
|
|
|
state: present
|
|
|
|
|
|
|
|
- name: Create uploaders accounts
|
|
|
|
user:
|
|
|
|
group: uploaders
|
2022-02-28 14:00:13 +00:00
|
|
|
name: "{{ item }}"
|
2021-04-06 19:49:04 +00:00
|
|
|
state: present
|
|
|
|
loop: "{{ uploaders }}"
|
|
|
|
|
|
|
|
- name: mkdir uploaders .ssh
|
|
|
|
file:
|
|
|
|
path: "~/.ssh"
|
|
|
|
state: directory
|
|
|
|
mode: 0755
|
|
|
|
become: yes
|
2022-02-28 14:00:13 +00:00
|
|
|
become_user: "{{ item }}"
|
2021-04-06 19:49:04 +00:00
|
|
|
loop: "{{ uploaders }}"
|
|
|
|
|
|
|
|
- name: Set user authorized keys
|
|
|
|
copy:
|
2022-02-28 14:00:13 +00:00
|
|
|
content: "{{ authorized_keys[item]|join('\n') }}"
|
2021-04-06 19:49:04 +00:00
|
|
|
dest: "~/.ssh/authorized_keys"
|
|
|
|
mode: 0644
|
|
|
|
become: yes
|
2022-02-28 14:00:13 +00:00
|
|
|
become_user: "{{ item }}"
|
2021-04-06 19:49:04 +00:00
|
|
|
loop: "{{ uploaders }}"
|
|
|
|
|
2021-04-06 19:49:40 +00:00
|
|
|
- name: Install dependencies
|
2021-04-04 17:26:30 +00:00
|
|
|
apt:
|
2021-04-06 19:49:40 +00:00
|
|
|
name: [libnginx-mod-http-fancyindex, rsync]
|
2021-04-04 17:26:30 +00:00
|
|
|
state: present
|
|
|
|
|
|
|
|
- name: Setup afpy.org
|
2023-02-14 15:20:38 +00:00
|
|
|
tags: nginx
|
|
|
|
include_role:
|
|
|
|
name: nginx
|
|
|
|
apply:
|
|
|
|
tags: nginx
|
2021-04-04 17:26:30 +00:00
|
|
|
vars:
|
|
|
|
nginx_owner: dl-afpy-org
|
2021-11-18 07:08:04 +00:00
|
|
|
nginx_domain: dl.afpy.org
|
2021-04-04 17:26:30 +00:00
|
|
|
nginx_certificates: [dl.afpy.org, videos-2015.pycon.fr]
|
|
|
|
nginx_conf: |
|
|
|
|
server
|
|
|
|
{
|
2021-12-30 20:33:48 +00:00
|
|
|
listen [::]:80; listen 80;
|
2021-04-08 06:37:10 +00:00
|
|
|
server_name dl.afpy.org;
|
2021-04-04 17:26:30 +00:00
|
|
|
return 301 https://$host$request_uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
server
|
|
|
|
{
|
2021-12-30 20:33:48 +00:00
|
|
|
listen [::]:80; listen 80;
|
2021-04-08 06:37:10 +00:00
|
|
|
server_name videos-2015.pycon.fr;
|
|
|
|
return 301 https://dl.afpy.org/pycon-fr-15$request_uri;
|
2021-04-04 17:26:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
server
|
|
|
|
{
|
2023-02-13 21:40:47 +00:00
|
|
|
listen [::]:443 ssl http2; listen 443 ssl http2;
|
2021-04-04 17:26:30 +00:00
|
|
|
server_name videos-2015.pycon.fr;
|
|
|
|
include snippets/letsencrypt-dl.afpy.org.conf;
|
2021-04-08 06:37:10 +00:00
|
|
|
return 301 https://dl.afpy.org/pycon-fr-15$request_uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
server
|
|
|
|
{
|
2023-02-13 21:40:47 +00:00
|
|
|
listen [::]:443 ssl http2; listen 443 ssl http2;
|
2021-04-08 06:37:10 +00:00
|
|
|
server_name dl.afpy.org;
|
2022-11-08 21:00:32 +00:00
|
|
|
charset utf-8;
|
2021-04-08 06:37:10 +00:00
|
|
|
include snippets/letsencrypt-dl.afpy.org.conf;
|
2021-04-04 17:26:30 +00:00
|
|
|
|
2021-04-08 06:37:10 +00:00
|
|
|
root /var/www/dl.afpy.org/;
|
2021-04-04 17:26:30 +00:00
|
|
|
|
2023-02-14 17:23:46 +00:00
|
|
|
add_header Content-Security-Policy "default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'self'";
|
|
|
|
add_header X-Content-Type-Options "nosniff";
|
2023-02-14 15:20:38 +00:00
|
|
|
|
2021-04-04 17:26:30 +00:00
|
|
|
location /
|
|
|
|
{
|
2021-04-08 06:37:10 +00:00
|
|
|
fancyindex on;
|
2022-11-08 21:00:32 +00:00
|
|
|
fancyindex_exact_size off; # Output human-readable file sizes.
|
2023-03-30 09:09:52 +00:00
|
|
|
fancyindex_name_length 150;
|
2021-04-04 17:26:30 +00:00
|
|
|
}
|
|
|
|
}
|