Merge branch 'cas' into 'newinfra'

[cas] CRANSIBLEISED bro

See merge request nounous/ansible!204
certbot_on_virtu
pa 2021-02-07 17:16:43 +00:00
commit 0614b7040f
10 changed files with 71 additions and 26 deletions

View File

@ -0,0 +1,23 @@
---
glob_django_cas:
repo: 'http://gitlab.adm.crans.org/nounous/django-cas.git'
path: '/var/local/django-cas'
url:
- cas.crans.org
- cas.adm.crans.org
- login.crans.org
- login.adm.crans.org
- auth.crans.org
- auth.adm.crans.org
ldap:
dn: 'cn=Utilisateurs,dc=crans,dc=org'
password: "{{ vault_cas_ldap_password }}"
user: 'cn=cas,ou=service-users,dc=crans,dc=org'
server: 172.16.10.157
db:
host: tealc.adm.crans.org
password: "{{ vault_cas_database_password }}"
secret_key: "{{ vault_cas_secret_key }}"
reverse_proxy:
- '10.231.136.0/24'
- '2a0c:700:0:2::/64'

3
hosts
View File

@ -22,6 +22,9 @@ reverseproxy
[dhcp:children] [dhcp:children]
routeurs_vm routeurs_vm
[django_cas]
cas.adm.crans.org
[dns_auth_master] [dns_auth_master]
silice.adm.crans.org silice.adm.crans.org

View File

@ -2,9 +2,8 @@
--- ---
# Django CAS server # Django CAS server
- hosts: cas.adm.crans.org - hosts: django_cas
vars: vars:
cas_secret_key: "{{ vault_cas_secret_key }}" django_cas: "{{ glob_django_cas | default({}) | combine(loc_django_cas | default({})) }}"
cas_ldap_password: "{{ vault_cas_ldap_password }}" roles:
cas_database_password: "{{ vault_cas_database_password }}" - django-cas
roles: ["django-cas"]

View File

@ -1,3 +1,21 @@
# Django CAS # Django CAS
Une fois le rôle appliqué il faut aller dans `/var/local/django-cas` et faire un `./manage.py collectstatic`. Une fois le rôle appliqué il faut aller dans django_cas.path et faire un `./manage.py collectstatic`.
## Variables
On rassemble dans le dictionnaire django_cas toutes les variables liées au déploiement du cas. Voici une liste exhaustive des paramètres à définir :
- repo : Endroit d'où cloner les sources. Par défaut au crans, on utilise le dépôt : https://gitlab.crans.org/nounous/django-cas.git
- path : Là où on va installer le logiciel.
- url : Une liste d'url qui vont servir le cas
- ldap : dictionnaire qui configure la discussion avec le ldap
- dn : nom derrière lequel sont stockés les utilisateurs dans le ldap
- password : mot de passe de connection au ldap
- user : utilisateur avec lequel on se connecte
- server : serveur sur lequel le ldap est situé
- db : dictionnaire qui configure la discussion avec la base de données
- host : l'hôte sur lequel la base de données se trouve
- password : mot de passe d'accès
- secret_key : le secret de django_cas
- reverse_proxy : liste optionnelle permettant de faire tourner le cas derrière un reverse proxy tout en gardant les informations de connection originales de l'utilisateur. Il doit contenir la liste d'ip du reverse-proxy avec lequel il se connectera au CAS.

View File

@ -16,15 +16,16 @@
- name: Clone Django CAS project repository - name: Clone Django CAS project repository
git: git:
repo: http://gitlab.adm.crans.org/nounous/django-cas.git repo: '{{ django_cas.repo }}'
dest: /var/local/django-cas dest: '{{ django_cas.path }}'
force: yes
version: master version: master
umask: '002' umask: '002'
- name: Configure Django CAS - name: Configure Django CAS
template: template:
src: cas/settings_local.py.j2 src: cas/settings_local.py.j2
dest: /var/local/django-cas/cas/settings_local.py dest: '{{ django_cas.path }}/cas/settings_local.py'
mode: 0600 mode: 0600
owner: www-data owner: www-data
notify: Restart uwsgi notify: Restart uwsgi

View File

@ -1,20 +1,20 @@
{{ ansible_header | comment }} {{ ansible_header | comment }}
SECRET_KEY = '{{ cas_secret_key }}' SECRET_KEY = '{{ django_cas.secret_key }}'
# Settings for the CAS server # Settings for the CAS server
CAS_LDAP_SERVER = "172.16.10.90" CAS_LDAP_SERVER = "{{ django_cas.ldap.server }}"
CAS_LDAP_USER = "cn=cas,ou=service-users,dc=crans,dc=org" CAS_LDAP_USER = "{{ django_cas.ldap.user }}"
CAS_LDAP_PASSWORD = "{{ cas_ldap_password }}" CAS_LDAP_PASSWORD = "{{ django_cas.ldap.password }}"
CAS_LDAP_BASE_DN = "cn=Utilisateurs,dc=crans,dc=org" CAS_LDAP_BASE_DN = "{{ django_cas.ldap.dn }}"
# Database # Database
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'cas', 'NAME': 'cas',
'HOST': 'pgsql.adm.crans.org', 'HOST': '{{ django_cas.db.host }}',
'USER': 'cas', 'USER': 'cas',
'PASSWORD': '{{ cas_database_password }}', 'PASSWORD': '{{ django_cas.db.password }}',
} }
} }

View File

@ -1,4 +1,4 @@
{{ ansible_header | comment }} {{ ansible_header | comment }}
0 0 * * * www-data /var/local/django-cas/manage.py clearsessions 0 0 * * * www-data {{ django_cas.path }}/manage.py clearsessions
*/5 * * * * www-data /var/local/django-cas/manage.py cas_clean_tickets */5 * * * * www-data {{ django_cas.path }}/manage.py cas_clean_tickets
5 0 * * * www-data /var/local/django-cas/manage.py cas_clean_sessions 5 0 * * * www-data {{ django_cas.path }}/manage.py cas_clean_sessions

View File

@ -1,7 +1,7 @@
{{ ansible_header | comment }} {{ ansible_header | comment }}
server { server {
server_name cas.crans.org cas.adm.crans.org login.crans.org login.adm.crans.org auth.crans.org auth.adm.crans.org; server_name {{ django_cas.url | join(' ') }};
listen 80; listen 80;
listen [::]:80; listen [::]:80;
@ -11,11 +11,12 @@ server {
} }
location /static { location /static {
alias /var/local/django-cas/cas/local_static; alias {{ django_cas.path }}/cas/local_static;
} }
set_real_ip_from 10.231.136.0/24; {% for ip in django_cas.reverse_proxy | default([]) %}
set_real_ip_from 2a0c:700:0:2::/64; set_real_ip_from {{ ip }};
{% endfor %}
real_ip_header P-Real-Ip; real_ip_header P-Real-Ip;
location / { location / {

View File

@ -1,3 +1,3 @@
#!/usr/bin/tail +14 #!/usr/bin/tail +14
{{ ansible_header | comment }} {{ ansible_header | comment }}
> django-cas-server a été déployé sur cette machine. Voir /var/local/django-cas/. > django-cas-server a été déployé sur cette machine. Voir {{ django_cas.path }}.

View File

@ -2,8 +2,8 @@
[uwsgi] [uwsgi]
plugin = python3 plugin = python3
chdir = /var/local/django-cas/ chdir = {{ django_cas.path }}/
wsgi-file = /var/local/django-cas/cas/wsgi.py wsgi-file = {{ django_cas.path }}/cas/wsgi.py
max-request=50 max-request=50
cheaper = 1 cheaper = 1
cheaper-initial = 1 cheaper-initial = 1