Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Weblate #1

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
vm_vars/credentials.yaml
.vault_pass.txt
*.retry
*.swp
.gandi.config.yaml
31 changes: 31 additions & 0 deletions delete-machines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
- name: delete deployment
hosts: localhost
connection: local
gather_facts: false

vars_files:
- "vm_vars/credentials.yaml"
- "vm_vars/settings.yaml"

tasks:
- name: delete machines
gandi_vps:
gandi_api_key: "{{ gandi_api_key }}"
name: "{{ item }}"
datacenter: "{{ datacenter }}"
state: deleted
with_items:
- trad1
async: 7200
poll: 0
register: node_deletion

- name: wait for deletion
async_status:
jid: "{{ item.ansible_job_id }}"
register: jobs
until: jobs.finished
delay: 10
retries: 300
with_items:
- "{{ node_deletion.results }}"
40 changes: 40 additions & 0 deletions deploy-machines.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
- name: deploy machines
hosts: localhost
connection: local
gather_facts: false

vars_files:
- "vm_vars/credentials.yaml"
- "vm_vars/settings.yaml"

tasks:

- name: weblate machine
gandi_vps:
gandi_api_key: "{{ gandi_api_key }}"
name: trad1
machine_type: custom
image: "{{ os_image }}"
datacenter: "{{ datacenter }}"
sshkey_ids:
- "{{ gandi_ssh_key_id }}"
cores: 2
memory: 2048
disk: 5
interfaces: {'publics': [{'ipv4': 'auto'}] }
state: running
farm: tools
tags: weblate
async: 7200
poll: 0
register: weblate_creation

- name: wait for weblate creation
async_status:
jid: "{{ item.ansible_job_id }}"
register: jobs
until: jobs.finished
delay: 10
retries: 300
with_items:
- "{{ weblate_creation }}"
8 changes: 8 additions & 0 deletions deploy-services.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- hosts: trad1
become: yes
remote_user: root
roles:
- common
- weblate
tags:
- tool
26 changes: 26 additions & 0 deletions group_vars/all.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# IPS
gw_private_ip: "{{ hostvars['gw1']['private_ips'][0] }}"

weblate_dir: ""

# EMAIL CONFIGURATION
EMAIL_HOST: ""
EMAIL_HOST_PASSWORD: ""
EMAIL_HOST_USER: ""
EMAIL_PORT: ""
# E-mail address that error messages come from.
SERVER_EMAIL = ""
# Default email address to use for various automated correspondence from
# the site managers. Used for registration emails.
DEFAULT_FROM_EMAIL = ""

# WEBLATE ADMIN, FOR ERRORS AND NOTIFICATIONS
weblate_admin: ""
admin_mail: ""

# PASSWORDS
PSQL_weblate_password: ""
PSQL_master_password: ""

# password for "weblate" linux user
weblate_user_pass: ""
8 changes: 8 additions & 0 deletions roles/common/files/ssh_authorized_keys
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5+2ViaP1ktWlzMCY4IOJOV1K0TH1GstHzoMdeIf9ihiSz7nR7wKcYJMC6KlmOYVQzftENXHQZAtbL4tVPLpLWXN+4fCn+pbQVu47P3QCH9Ez0d23p4byZl5h+qyx0dJv/ltc71X6NIvHH2WXmvvy+Bda4b1NVpJN/voiMoihipsjPPeL+s6B+3dw6PD3h5vvzvJCrfkKGijoT74+BbjYimwmNsaDRQH9tIMaTVeV7ZIe9qfxg5fkg4WsFl9mzikbqYzdBgiC2XeK/L4w3FJONALAEy7FTsUdNaenKxTn4zw/9qdV20TqYEyCbYlANS+2NMLYxeSqdpYB3yvePoucOw== [email protected]
ssh-dss AAAAB3NzaC1kc3MAAACBAM686CNkUeMiHvr/1tj4zRaJMqAgZAFCuX6WmocNHleTLG2yWcQPAIXKONp++AJ78woEERCTB2otJSsP4Ur8q/K95UiPYmtRJ/wwTI4ojrCk4BmK9KK2hb0OONOL0SvX/sUZlddFtAZ2xnSFD6YC4gtANE1nnojo2/BOrgs9h13tAAAAFQCkqnmRZOK29LK8OPI+095IzI0YMQAAAIAf3BB/TX2mZWGtB9PivKybt+QPMx5YWA43jK6NippTIVq60ihvcnVKpAQDt0llZn4J5qoEgVHwELr+4F6vMz2HP3ZviQ3c/4hlIpfknVsFLgMkJynKZaJLTe+Afwv1r+8DAA2+/SvtwLjFIDcbkTgGdxiyInD8rDyprKQ7nI3sNwAAAIABuUMiFMmpkARmatAJoXjFm2V1JIyycuJdMqJMUoq9m7kjJB4r55+eTLEtIvtBs/LnlAUTl2kCQszEax4VlLGiEEH/hWryaePRuosEv1issiISiluJmIQcJU+vgAHApyGH6uVCWzoc58or5rnQto22MEcH/qHIggTuKIfQvz8Hhg== [email protected]
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzWy1ckqww3CP8BPB56tfHwN7Wh+/4dpByhwTpb5lXpfjNvI3KNaz3835oa/cHvxt34alBHdhG65eUQOYOX3frXGEPxFPCjADPBh0+WAa00IpFLCyvsVxOutBU9Fu5eGVVcmIC5gq4M21zUppbiFzppc/7a8W/xz4W17LzuqzRRaerz5WcYNE5uf+arqW2zrmWA5Nhwjo2C1Q0qB8a+6Nvg14OAKyYL8P2eTUmzmK+Dv3oCwgqLZalx1djjmFv3N6SWdOLK92Jq3/b6Xb9RHCALP1/wnVtmzKFaCtspBpDs9eU6f6G4hP67sRobimMWdB/EibLlLDw3Sul6j6CK6Qd8QMJwR5cU2+lmSQXlwlvRmgvhayPUNJEwR0nY3uiHoybJzClF3LOljn7RkqBUY6ud3y1L1OUbJvUYw9ou6gd61HGqXFjuD8hLDRBdCaAzlPm1Wm6eAY01bLOcKcXdqNJOoSh/ZKAdT5VvmPZgbit9c5OitujNGs3wkI2O+DydMa/UBJbdzQdh+QZLVFzQ1qO2BPkQCQ2TZBad0YqtlTxGiB+cEwIx4dkYfJcbWcrVZs04g24otMQOnb+1KcISKcqVR/qOWvFzaBMa8uXu6JoDE2qL6R1q+uls+gMFFIKoy16C3skg7jxydlgXEfiURWNy3RkIEgMSEkGz9dxDv8UAQ== [email protected]
ssh-dss AAAAB3NzaC1kc3MAAACBAMZ50GLnHEvUFvMQsHBRdlUka0ikKOmpTt7etALYXfDSsR6ItF1r3evY74bDGrQjD6SwOHiwfnDsUH6pw8OydHH17803JBhUjDe2/NEhmaAqOmI+sLTknHVJZwDEVLhvXBaFTQcT4qEGgG0XYxM+EZ7vBirodzvGwBpwXnmMlNA3AAAAFQDVlmYkBh8rhBbJwZpmWGaGDPjFBQAAAIEAl4shqD8f64XTqcaJ456j5vghvElyPN1T8JoqlUg7iyzFeRnHlcGZkN3nw+aB1DVHIRIBA5hGk0TOCXgGRNkcgtDn6Wj9R0A2Wow/reFFPjio+NIM5YaNVqUPirFMWOO+cVhCaN3RvIHjWzGM+oQjk2LGxpN/Tzh2UyF7O3FLU6MAAACAcH39fUlEERGhrfx6cyKv7jjoChOsHKc/Wix3QyU7jq7Ta5iVjOGBOR1nYL5JKJWnEhIx/g5N+NAuvvzLIe/x4vlFo8PLk0obCXDeOsucuwWpcCldYE3GqTJZzxnCOIkdjooszQhztmxe1bBP/Aib7KyogaJmKrQv6BOjWQhx/TE= laurent@brasil
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPQJeSOFDn9N73xOkJvWS97CvGQLarKI6n2kaA4cLzx root@argentina
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm70qHMJSqaQKJdoNOzrfCo+1pzlhqHIFBozI5VCiMwA6Nr2qEHD+VgSbhDByX0xdgv9cwIcxvVzWMZPn8QM2ZewvNgPHoQxH4ae3pWjTM+W8qqaNjBfWuarinwt7gO8jT8i55AcMa5ctihvXWE3jTM6EHcaKTngFD1NYFj5tS4Zrw9a5nK1ZRsMrPF6Wte9S3e2PWiPYiT8uCauNUB5Xi6r1BxzMtviJddZmv0r4WQL3QD672Gmia6xhIybiIFTOID+N4cAARKZKh7WSlcx4qA1umWLd1nst5HgyK4SfFhSPd+2XJLsPc1cZpVVfjJRGomLi7yxu4P8VMaKwwCiuj stan@BobyLap
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdqFMRQx+OI+3b8st+ho1Ioqp3wiQqqMlMKiNjDC1rUiQ5sGhGT1uxBzxWSA8UjyfJmYaJhllfe5Tjp2D1lUyXX2tX0QCMM1doHON/29wjBXxBgtP7i5focNAv6KP2suSuyFuIRpP3MuEyieQgyH0atL1FxNpQIrvnOrdiw609T4xfLTWfad+jjtIo3qq3Rvb7TpI9h0lBcgJEHPSjsapYenFPNCaRE+3oye37OtYdWaF9ozdHkRBDj8mp23bitJSwltYOhYZlVs8fVyBr30+z4tSwNMizl7DCrr+rJFBCRwoHUOLo82LuJf1ivQwu3mC77JJgWsiycMYnKPOamDwv pablo@pablo
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTHau8idcljL+CRudl/i0HPzKbTxYk+qSJg26ql/K+BJF5uS360jYt9MW+C4qLSfYBtY0Ywcb7ePeO+1I/BjAdf6BtzxnNCYDnKptPMlkq9E0caMcDuuYFNG8BZQ6HcVmIbCns6aa0cXRGZcIBeHFAWfveocPdpcnTOXbFItV4ndFhm+KsCaJ9uQUxmJZMuUYoA/mmIgizddevh+bWMyN2/ntLhCvXucKti79sUoGVo5Ihk4KKXYxmZkWMJeY6y72TMeMx/KOJuoI5bkaLl/Y7oF8g7gzghmF56yI0uev83CyY1Mi+nF+qYqcjA9W9UVzx/xlkt3vhVyQ0C7hywoW1SPultSOr2ovtaEEFG16phOhWCNTwc1fUBwDv+UHHSgDjUQw1XBeMpTyW3d0Kys6bqvdisT9Z8n364BNDs2wC5VpctOLMyWXOt7stql56625fjMTGZYxD/+b4IvyW+qP9JRSjeeqb03PXoT+45V57s6UxJpIihjZSrEqJ1ZXAD0tLv3Fsj1KHNQi8da+P0ph33XeplCGPhRBohiL3obxWSDZ/WX0MaX4tgICqDHAkSGrDJkeF8dgNAtO2+m44oty6U/ztnuSKQGBXACxbpS+M8YfPFTyBkjrOtfqk0R/MgdG2gxvPyYPG3ody20QcYzTbG9LrtOReN58kPt4D/3Mp2w== [email protected]
17 changes: 17 additions & 0 deletions roles/common/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
- name: copy ssh keys
copy:
src: files/ssh_authorized_keys
dest: /root/.ssh/authorized_keys
mode: 0600

- name: add gandi apt key
apt_key:
url: https://mirrors.gandi.net/gandi/pubkey
id: D9A579D6BB859933
state: present

- name: update and upgrade
apt:
update_cache: yes
upgrade: dist
25 changes: 25 additions & 0 deletions roles/weblate/tasks/cache.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
- name: download redis
unarchive:
src: http://download.redis.io/releases/redis-5.0.3.tar.gz
dest: /tmp
remote_src: yes

- name: compile redis
command: make
args:
chdir: /tmp/redis-5.0.3

- name: move redis binary to path
command: mv /tmp/redis-5.0.3 /usr/bin/

- name: create redis dir
file:
path: /etc/redis
state: directory

- name: copy config file
template:
src: redis.conf.j2
dest: "/etc/redis/redis.conf"

24 changes: 24 additions & 0 deletions roles/weblate/tasks/database.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
- name: install dependencies
apt:
package: {{ item }}
state: installed
update_cache: yes
with_items:
- postgresql

- name: set password
shell: psql postgres -c "alter user postgres with password '{{ PSQL_master_password }}'"
become: yes
become_user: postgres

- name: create user weblate
postgresql_user:
name: weblate
password: "{{ PSQL_weblate_password }}"
role_attr_flags: "NOCREATEDB,NOCREATEROLE,NOSUPERUSER"

- name: create db
postgresql_db:
name: weblate
owner: weblate
51 changes: 51 additions & 0 deletions roles/weblate/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
- name: install dependencies
apt:
package: {{ item }}
state: installed
update_cache: yes
with_items:
- libxml2-dev
- libxslt-dev
- libfreetype6-dev
- libjpeg-dev
- libz-dev
- libyaml-dev
- python3-dev
- python3-pip
- python3-virtualenv
- gcc
- make
- git
- python3-requests-oauthlib
- python3-six
- python3-openid

- name: Update virtualenv
command: pip3 install --upgrade virtualenv

- name: create virtualenv
command: virtualenv {{ weblate_dir }}

- include: database.yml

- include: cache.yml

- name: install weblate and optional packages
pip:
name:
- Weblate
- pytz
- python-bidi
- PyYAML
- pyuca
- psycopg2-binary
- django-redis
- hiredis
virtualenv: ~/weblate-env

- name: Copy weblate configuration
template:
src: settings.py.j2
dest: "~/weblate-env/lib/python2.7/site-packages/weblate/settings.py"

- include: webserver.yml
40 changes: 40 additions & 0 deletions roles/weblate/tasks/webserver.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
- name: install dependencies
apt:
package: {{ item }}
state: installed
update_cache: yes
with_items:
- nginx
- uwsgi-plugin-python3

# - name: install uwsgi with pip
# pip:
# name:
# - uwsgi
# virtualenv: ~/weblate-env

- name: Create socket for uwsgi/nginx communication
template:
src: uwsgi-weblate.socket.j2
dest: /etc/systemd/system/uwsgi-weblate.socket

- name: Create service for uwsgi
template:
src: uwsgi-weblate.service.j2
dest: /etc/systemd/system/uwsgi-weblate.service

- name: copy nginx site
template:
src: weblate.nginx.j2
dest: /etc/nginx/sites-available/weblate

- name: create symlink for weblate site
file:
src: /etc/nginx/sites-available/weblate
dest: /etc/nginx/sites-enabled/weblate
state: link

- name: reload nginx
service:
name: nginx
state: reloaded
Loading