From 9cc7befb789cf76e9a427d15b52b06f1a2d03c08 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Mon, 30 Nov 2020 11:40:31 +0100 Subject: [PATCH] Hello PyDocTeur. --- group_vars/all/vault | 61 ++++++++++++---------- pydocteur.afpy.org.yml | 112 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+), 27 deletions(-) create mode 100644 pydocteur.afpy.org.yml diff --git a/group_vars/all/vault b/group_vars/all/vault index f16e865..1b87101 100644 --- a/group_vars/all/vault +++ b/group_vars/all/vault @@ -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 diff --git a/pydocteur.afpy.org.yml b/pydocteur.afpy.org.yml new file mode 100644 index 0000000..8fb433c --- /dev/null +++ b/pydocteur.afpy.org.yml @@ -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