Hello PyDocTeur.

This commit is contained in:
Julien Palard 2020-11-30 11:40:31 +01:00
parent 61ba705600
commit 9cc7befb78
2 changed files with 146 additions and 27 deletions

View File

@ -1,28 +1,35 @@
$ANSIBLE_VAULT;1.1;AES256
30663331346337396534613161386537363535633031306236313162306266383561343238633339
3664343836636139336134303735356435343034373338620a343364633263666661623438323636
66613238366538636534356336343164646431613231623362383465323031376463646437393439
6637313064386666640a303962336131656238666466656435633766633239326434613330636366
62653935356631316434656433653034303734633430346233633530636437363638303161386139
63666332333465306139306330343264306530303536326262356535623566656638326236326263
34356639643434346163326236613165366466306133396139316661666463626631363862373036
62333330653065643530333633386430653561333262653966646634393332323330313063616139
31363733623334643763393833613061363937666438656166313164333634626465343434333263
64663238343436363837636439623964303134333163623866646433373165363636343531656136
30336338396437316337383563326637363062313062333832373662306332623831656135663161
66653361383635666437306131363232636534396165613265366134393366663830616362356236
33646537333366383330353931356438643239333737633762363634386434316364666537363362
36373361343038316265643364623264623532633062313636316330656534353935323030396235
66616538343337363637633033336631333265626433633766383831636533373735373430653666
65306462363133343763656632616336306432316635346563623634643431393065306337613737
37613238616366633532323362663766386261616636633764313130323130386636303131386463
64306332333337386664313531306534313564333538623564343362633838363563336237613731
64663230313863646562633564356266373937666430633937343363663035363037633964613531
32376330376534643362643933663564646631663834343333616462356662303936323264373738
31666339336530336432656265663933383562643664663632343539633131326666656132306365
63306135613936303966653532386163646265383963373734323165633463323835376531623635
37633762303731653831316362393232313061353237666637393834366137313061386563383134
32313838353833356535633735616635636164653965363136653838613733373134633032366434
33633630626230396434396561653961646131613032303137313339383431646335353635643633
64616365373137633238356430363431666563363738386135643939393836373132376430623032
326263393335643431393536383635656237
64376361613965323865623433666232633330643434326562393064393039356166373639646361
3361346238626566383963383837643139326530343665640a376336356366316439333739366139
34376135366661626664663532616662353736643064386235346236346433656533313937353462
3935393434653533340a613664373432653734353462326532316539616162303539663463636331
38626263303033666236336439636134363136643836343266656362313331316432316130383130
66656563393232353436376262623861323761393836386162363630623331396530393737366531
36383163663732313633643731363763353035333931326639623863373039333131393762616631
61356436383763353037353030663663343265366339613866623161653834376133326564383937
32633464643330343334323831653235333338303433366535303662386264383438373230336432
33363364373237326131303561363530353533646466656432633739373137306363396162336639
35303562623962343532633939653332333931333434363164383264373232353230633933643635
66633533376664303639363035383066366537373462343834363230623535393366353163646537
62346535313663336438363535356165316635306438643938333434633136323962623638363462
31386633646562633838613366616665393934376436623535643535343962363137303665363963
39353238373438666462313862653534313935333562653434386131323539313037336235303834
32383865613535363365326663663331633463346663353637386538376338666666386332613830
33343936353836313132333561393965393531303233346666346266386532356363626539383739
35366534636331346438616630333833323037343733346133383038363637343239346332353734
31386433613465316232636562666138636539346237663331333330393336646562386433633462
36636338623865663136656134613463663963333063316336366366626438393163303838633534
31356666663031323233666331386438396130313466623432396239336463373630633262336636
65633662306535613662616338393730346132383937363038363263356436336266323161383361
34653431303431303532323331346464313639366139633434306236356565613762613264353034
61356466313562633863346135326637363064303564376562376561306665303239613930376333
34663761353561383835636132656630376436643462363764353334656261633138366134666333
31323462636263326139623461626331666137343565366336306565396637653862626565373633
64303066363930306539633566636130363563623535303631386462393235396362633262623536
36393935613665663139626562653863666334656363386636613166613663363630376438653434
35373935353865356633336533333264626337656264303564316337323138303833626433613834
65366133636235303236303835356236656165303634386132626262343663656562343036306337
31356666343736646332396537313563306362306337663966343537313063303965613938616635
35633437666331303533333863616439333139363065666133363735316239363337656364633638
35373239636134326632373138376236356539346164636436313933303237393832333435363061
6263613262353137386562626335373166393035626239333764

112
pydocteur.afpy.org.yml Normal file
View File

@ -0,0 +1,112 @@
---
- hosts: webservers
tasks:
- name: Basic setup
include_role: name=common
- name: Setup pydocteur.afpy.org
include_role: name=julienpalard.nginx
vars:
nginx_owner: pydocteur-afpy-org
nginx_domain: pydocteur.afpy.org
nginx_certificates: [pydocteur.afpy.org]
nginx_public_deploy_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPqZ20aNdTDrePRQT0obzUF0yn/o3cWEFwaf/MtAOmVxpJZiTZzaikU58qLVaTxfZpULMf2yIB9a1v0FhUOHde30+FFyxuGCMmV9lHT7wA4TS3Ucqj2kqzV2Qby/3IjxI41MXpbIFBj7K7TaJKfCPb2ToAuxbyiSiLXDre+xpSfR8qNAz1nObJPR/NbrJRzHnLywml1b7j1kPbbGfUvh3jtMa9a9eN3xotxGsLM8Da+R86xagC6lChJqxzM2zlsqXMhwnf/ntNAIJC6CpVpwdKTF6S8VIVC2UyB9oMnP43B1ijAETuNYG/nm4nE5IkQ14SiiQyRqdfX7+y5Pt2BfOxwVEedvcdAHZIj3v0fDr+23lf2AXR2v9V2JWT0BVLSJ6s2DHrumXkbS+XQkJWjxSZUUN7zg+J/+sPRrYERo+wIzLxXGGycrRgmQKLH6OJIy2/n/L8KtZfvxm6u90WIHu6RYTU9rqvzoqtEImDegOtzPqDFsljm8simginlqQo5gk= pydocteur"
nginx_conf: |
server
{
listen 80;
server_name pydocteur.afpy.org;
access_log /var/log/nginx/pydocteur.afpy.org-access.log;
error_log /var/log/nginx/pydocteur.afpy.org-error.log;
return 301 https://$host$request_uri;
}
server
{
listen 443 ssl;
server_name pydocteur.afpy.org;
access_log /var/log/nginx/pydocteur.afpy.org-access.log;
error_log /var/log/nginx/pydocteur.afpy.org-error.log;
include snippets/letsencrypt-pydocteur.afpy.org.conf;
location /
{
include proxy_params;
proxy_pass http://unix:/home/pydocteur-afpy-org/wsgi.sock;
}
}
- name: PyDocTeur have its own systemd user daemon started at boot
command:
cmd: loginctl enable-linger pydocteur-afpy-org
creates: "/var/lib/systemd/linger/pydocteur-afpy-org"
- name: Initial clone
become: true
become_user: pydocteur-afpy-org
git:
repo: https://github.com/AFPy/PyDocTeur/
dest: /home/pydocteur-afpy-org/src/
update: no
- name: pip install requirements
become: true
become_user: pydocteur-afpy-org
pip:
requirements: /home/pydocteur-afpy-org/src/requirements.txt
virtualenv_command: /usr/bin/python3 -m venv
virtualenv: "/home/pydocteur-afpy-org/venv/"
- name: pip install gunicorn
become: true
become_user: pydocteur-afpy-org
pip:
name: gunicorn
virtualenv_command: /usr/bin/python3 -m venv
virtualenv: "/home/pydocteur-afpy-org/venv/"
- name: systemd user directory
file:
path: /home/pydocteur-afpy-org/.local/share/systemd/user/
state: directory
- name: systemd pydocteur.afpy.org service
copy:
dest: /home/pydocteur-afpy-org/.local/share/systemd/user/pydocteur.service
content: |
[Unit]
Description=PyDocTeur Github hook
After=network.target
[Service]
PIDFile=/home/pydocteur-afpy-org/service.pid
WorkingDirectory=/home/pydocteur-afpy-org/src/
ExecStart=/home/pydocteur-afpy-org/venv/bin/gunicorn -w 1 \
--pid /home/pydocteur-afpy-org/service.pid \
--bind unix:/home/pydocteur-afpy-org/wsgi.sock \
wsgi
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- name: Configure PyDocTeur
copy:
content: "{{ vault_pydocteur_env }}"
dest: /home/pydocteur-afpy-org/src/.env
- name: Start PyDocTeur
become: true
become_user: pydocteur-afpy-org
systemd:
daemon_reload: yes
scope: user
state: started
name: pydocteur
handlers:
- name: reload nginx
service: name=nginx state=reloaded