Retrouvez le sur www.theshifters.org
Plateforme pédagogique
| Mission | |
|---|---|
| Dates | |
| Créée | Achevée |
| 21/06/2019 | |
| Contacts | |
| The Shift Project | Shifters |
| Clémence V. | Vincent Lefoulon |
| Contributeurs | |
| 27 | |
| Documents | |
| Cahier des charges | |
Description de la mission
Structurer une communauté d’enseignants, via un espace de travail (Slack ou autre, à réfléchir) permettant à ces personnes d’échanger entre elles au sujet de l'enseignement des enjeux climatiques.
Les besoins sont décrits dans le cahier des charges.
A ce propos, « il s’agit là d’un projet très élaboré et ambitieux, qui nécessite de lourds moyens (évalués par un professionnel à 70000€ d’expertise), et dont nous souhaiterions voir le Ministère s’emparer. Ce que nous visons dans le cadre de cette mission est d’une ampleur moindre, et vise surtout à offrir une solution alternative aux enseignants et autres acteurs de la communauté pédagogique qui souhaite échanger avec leurs pairs de différentes disciplines, et partager des ressources pédagogiques. Et ce en attendant que la plateforme que nous avons pensée voit le jour (ce qui risque de prendre du temps, si cela a lieu) ».
Le mail de Clémence contient des informations supplémentaires :
Certains d’entre vous ont demandé certaines précisions avant de confirmer leur engagement, je vais donc tacher d’éclairer la démarche, afin que vous puissiez décider si vous souhaitez vraiment contribuer à cette mission :
- Il s’agit à ce stade uniquement de constituer et structurer la plateforme, pas encore de la diffuser, ni encore de l’alimenter avec des ressources et témoignages. Cette phase viendra plus tard. Si c’est sur cet aspect que vous souhaitez contribuer, ne vous inquiétez pas, tout le réseau des Shifters seront tenus informés de la mise en route de la plateforme, et il sera temps d’apporter votre aide pour cette étape à ce stade.
- En ce qui concerne l’organisation de cette mission, il est nécessaire qu’un pilote se désigne, pour coordonner le travail, et animer le suivi de la mission, et faire le lien plus directement avec moi au Shift. à certains d’entre vous se sentent-ils capables de tenir ce rôle ? En effet, je ne piloterais pas précisément cette mission, même si nous travaillerons en étroite collaboration pour être sûrs d’aller dans la bonne (et la même) direction. Si vous êtes intéressés, merci de me le signaler !
- En ce qui concerne les outils de travail, le plus simple est que ceux d’entre vous qui sont toujours motivés pour discuter concrètement des outils et supports à disposition se retrouve sur une chaine dédiée sur le slack Shifters (#Mission Plateforme pédagogique) pour se reconnaitre et initier les échanges. Pour le support « papier », je vous laisse décider de l’outil qui vous convient le mieux (j’ai personnellement tendance à utiliser un googledoc et googlesheet pour travailler à plusieurs et mettre les idées en commun). Ne pas être à Paris ne devrait pas poser de problème, et la plupart des échanges pourront, je pense, se faire via les outils numériques.
- En termes de quantité de travail demandée : ce sera selon le nombre de personnes impliquées. Mais a priori il s’agit plutôt de mener une discussion et partager vos expériences quant à ces outils-là, et ensuite réfléchir à la manière de structurer l’outil. Puis la diffusion se fera avec l’aide de tous les shifters qui le voudront, et ne devrait pas être trop prenante.
Quelques idées mentionnées par mail : l’utilité de regarder et comparer les outils de partage de contenu déjà existantes et utilisées par les enseignants (moodle, workplace, slack).
Équipe
Elle est constituée de :
- 1 référent, coordinateur de la mission : Vincent Lefoulon
- 26 contributeurs
Calendrier
- Semaine du 1er juillet : outil(s) choisi(s)
- Semaine du 8 juillet : outils structurés et configurés
- Semaine du 22 juillet : outils déployés et utilisables
- Semaines suivantes : communication autour de l'outil, diffusion dans le monde de l'enseignement
Contenu de la mission
Etude du cahier des charges
Le terme « outil » désigne l'outil temporaire mis en place par les Shifters et non pas l'outil final.
Questions/remarques
On liste ici les potentiels points peu clairs du cahier des charges, les questions non soulevées...
- L'outil devra-t-il être sous licence libre ?
- Par qui sera-t-il déployé et maintenu (d'un point de vue informatique) ?
- Qui maintiendra le contenu de la plateforme (alimentation, modération...) ?
- Présence de données personnelles dans un compte d'utilisateur et probablement un profil, le RGPD doit être "légalement" appliqué.
- Des contenus vont être mis en ligne. Peut se poser la question de la propriété intellectuelle et de la licence
- Attention aux suites et aux applications gratuites sur le cloud. La sécurité et la confidentialité des données (si c'est un prérequis) ne sont pas nécessairement "garanties". L'ANSSI (Agence Nationale de la Sécurité des Systèmes d'Information) fait des recommandations en ce sens. En outre, certaines plateforme autorisent un nombre limité de messages.
- Peut-on avoir plusieurs outils, à l'instar des Shifters qui travaillent avec Slack pour les discussions et un wiki pour le contenu persistent ?
- "Possibilité pour les utilisateurs d’uploader des ressources pédagogiques accessibles à tous" -> "tous" inclut-il les personnes non inscrites sur la plateforme ?
Déploiement informatique
Cette section décrit comment la plateforme a été déployée informatiquement.
On distingue 2 environnements: - un environnement de développement/test qui est un bac à sable temporaire, réservé à certains membres des shifters, permettant de mettre au point la plateforme (ergonomie, modules, etc). Liens: https://159.122.175.176:31000/, http://159.122.175.176:30000/ - et un environnement de production utilisée par les utilisateurs finaux (enseignants, chercheurs, etc), utilisant le paramétrage mis au point sur la plateforme de test. Lien: https://shifterscluster-prod.par01.containers.appdomain.cloud/
Ces 2 environnements sont hébergés sur la plateforme de Cloud de IBM. (cloud.ibm.com). Ils sont constitués tous deux d'un cluster Kubernetes executant des versions containerisées (Docker) de Moodle et de MariaDB.
Environnement de test
Création du cluster
- Création d’un groupe de resource ShiftersResourceGroup-Dev
- Création d’un Cluster Kubernetes gratuit (local node : 1 seule machine héberge le contrôleur et les worker nodes) sur ibmcloud (cloud.ibm.com) sur le Cloud Public zone Europe / Datacenters de Frankfort dans le groupe de ressources , nommé ShiftersCluster-Dev
- Association du cluster ShiftersCluster-Dev au groupe de ressources ShiftersResourceGroup-Dev
- Création d’un groupe d’accès (IAM) ShiftersAccessGroup
- Ajout de Vincent Lefoulon et Tom Domenge dans le groupe utilisateurs en tant qu’Editors
- Installation sur le poste de travail de quelques outils d'interface CLI ainsi que le plug-in Kubernetes Service. Sur MacOS la commande était:
curl -sL https://ibm.biz/idt-installer | bash
- Connection au cluster
ibmcloud login -a cloud.ibm.com -r eu-de -g ShiftersResourceGroup-Dev
Noeud final de l'API : https://cloud.ibm.com
Email> christian@chateauvieux.net
Password> Authentification... OK
Compte ciblé Christian Chateauvieux's Account (e57a5c5d7c8d46c0959d04a481877ee3) <-> 1957782
Groupe de ressources ciblé ShiftersResourceGroup-Dev
Région ciblée eu-de
Noeud final d'API : https://cloud.ibm.com
Région : eu-de
Utilisateur : christian@chateauvieux.net
Compte : Christian Chateauvieux's Account (e57a5c5d7c8d46c0959d04a481877ee3) <-> 1957782
Groupe de ressources : ShiftersResourceGroup-Dev
Noeuds finaux d'API CF :
Organisation :
Espace :
Astuce : si vous gérez les services et les applications Cloud Foundry - Utilisez 'ibmcloud target --cf' pour cibler l'organisation/l'espace Cloud Foundry de manière interactive ou utilisez 'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' pour cibler l'organisation/l'espace. - Utilisez 'ibmcloud cf' si vous souhaitez exécuter l'interface de ligne de commande Cloud Foundry avec le contexte IBM Cloud CLI en cours.
- Téléchargement sur le poste local de la configuration du cluster
- ibmcloud ks cluster-config --cluster ShiftersCluster-Dev
OK La configuration de ShiftersCluster-Dev a été téléchargée correctement.
- Export des variables d'environnement pour commencer à utiliser Kubernetes.
export KUBECONFIG=/Users/Christian/.bluemix/plugins/container-service/clusters/ShiftersCluster-Dev/kube-config-mil01-ShiftersCluster-Dev.yml
- Création du role binding d'administration
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
- Initialisation du Tiller Helm sur le cluster
helm init --upgrade
- Ajout du repository Kubernetes
helm repo add kubernetes https://kubernetes-charts.storage.googleapis.com
"kubernetes" has been added to your repositories
Installation de Moodle via Helm Charts
- On se place dans moodle-for-shifters/ibmcloud/dev
cd moodle-for-shifters/ibmcloud/dev
- Création des espaces de stockage pour MariaDB et Moodle
kubectl apply -f persistentVolumeClaim-mariadb-dev.yaml
persistentvolumeclaim/data-moodle-for-shifters-mariadb-0 created
kubectl apply -f persistentVolume-mariadb-dev.yaml
persistentvolume/mariadb-data created
kubectl apply -f persistentVolumeClaim-moodle-dev.yaml
persistentvolumeclaim/data-moodle-for-shifters created
kubectl apply -f persistentVolume-moodle-dev.yaml
persistentvolume/moodle-data created
- Installation de Moodle
helm install --name moodle-for-shifters --values=values-dev.yaml kubernetes/moodle
NAME: moodle-for-shifters LAST DEPLOYED: Fri Aug 9 15:39:44 2019 NAMESPACE: default STATUS: DEPLOYED
RESOURCES: ==> v1/ConfigMap NAME DATA AGE moodle-for-shifters-mariadb 1 1s moodle-for-shifters-mariadb-tests 1 1s
==> v1/Pod(related) NAME READY STATUS RESTARTS AGE moodle-for-shifters-6d4f885986-kh7fp 0/1 ContainerCreating 0 1s moodle-for-shifters-mariadb-0 0/1 ContainerCreating 0 1s
==> v1/Secret NAME TYPE DATA AGE moodle-for-shifters Opaque 2 1s moodle-for-shifters-mariadb Opaque 2 1s
==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE moodle-for-shifters NodePort 172.21.99.116 <none> 80:30917/TCP,443:31037/TCP 1s moodle-for-shifters-mariadb ClusterIP 172.21.40.180 <none> 3306/TCP 1s
==> v1beta1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE moodle-for-shifters 0/1 1 0 1s
==> v1beta1/StatefulSet NAME READY AGE moodle-for-shifters-mariadb 0/1 1s
NOTES:
- Please be patient while the chart is being deployed **
1. Access you Moodle instance with:
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services moodle-for-shifters)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo "Moodle URL: http://$NODE_IP:$NODE_PORT/"
2. Login with the following credentials
echo Username: admin
echo Password: $(kubectl get secret --namespace default moodle-for-shifters -o jsonpath="{.data.moodle-password}" | base64 --decode)
- Le node port retourné ici est 30000 (HTTP) ou 31000 (HTTPS)
- Obtention de l'addresse IP du worker node de test
ibmcloud cs workers ShiftersCluster-Dev
OK ID Adresse IP publique Adresse IP privée Version Etat Statut Zone Version kube-bl5d3k3f01qu1qq11tsg-shiftersclu-default-0000007f 159.122.175.176 10.144.195.184 free normal Ready mil01 1.13.8_1530
- Admin Moodle: admin | Mot de passe: Sh1ftmood4
- Exposition du port d'écoute (NOT WORKING...)
kubectl expose deployment moodle-for-shifters --type=NodePort --port=80 --name=moodle-service --target-port=31000
service/moodle-service exposed
Environnement de production
Création du cluster
- Création d’un groupe de resource ShiftersResourceGroup-Prod
- Création d’un Cluster Kubernetes payant (1 machine héberge le contrôleur et 1 worker node) sur ibmcloud (cloud.ibm.com) sur le Cloud Public zone Europe / Datacenters de Paris dans le groupe de ressources , nommé ShiftersCluster-Prod
- Association du cluster ShiftersCluster-Prod au groupe de ressources ShiftersResourceGroup-Prod
- Création d’un groupe d’accès (IAM) ShiftersAccessGroup
- Ajout de Vincent Lefoulon et Tom Domenge dans le groupe utilisateurs en tant qu’Editors
- Installation sur le poste de travail de quelques outils d'interface CLI ainsi que le plug-in Kubernetes Service. Sur MacOS la commande était:
curl -sL https://ibm.biz/idt-installer | bash
- Connection au cluster
ibmcloud login -a cloud.ibm.com -r eu-de -g ShiftersResourceGroup-Prod
Noeud final de l'API : https://cloud.ibm.com
Email> christian@chateauvieux.net
Password> Authentification... OK
Compte ciblé Christian Chateauvieux's Account (e57a5c5d7c8d46c0959d04a481877ee3) <-> 1957782
Groupe de ressources ciblé ShiftersResourceGroup-Prod
Région ciblée eu-de
Noeud final d'API : https://cloud.ibm.com
Région : eu-de
Utilisateur : christian@chateauvieux.net
Compte : Christian Chateauvieux's Account (e57a5c5d7c8d46c0959d04a481877ee3) <-> 1957782
Groupe de ressources : ShiftersResourceGroup-Prod
Noeuds finaux d'API CF :
Organisation :
Espace :
Astuce : si vous gérez les services et les applications Cloud Foundry - Utilisez 'ibmcloud target --cf' pour cibler l'organisation/l'espace Cloud Foundry de manière interactive ou utilisez 'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' pour cibler l'organisation/l'espace. - Utilisez 'ibmcloud cf' si vous souhaitez exécuter l'interface de ligne de commande Cloud Foundry avec le contexte IBM Cloud CLI en cours.
- Téléchargement sur le poste local de la configuration du cluster
ibmcloud ks cluster-config --cluster ShiftersCluster-Prod
OK La configuration de ShiftersCluster-Prod a été téléchargée correctement.
- Export des variables d'environnement pour commencer à utiliser Kubernetes.
export KUBECONFIG=/Users/Christian/.bluemix/plugins/container-service/clusters/ShiftersCluster-Prod/kube-config-par01-ShiftersCluster-Prod.yml
- Création du role binding d'administration
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
- Initialisation du Tiller Helm sur le cluster
helm init --upgrade
- Ajout du repository Kubernetes
helm repo add kubernetes https://kubernetes-charts.storage.googleapis.com
"kubernetes" has been added to your repositories
Installation de Moodle via Helm Charts
- On se place dans moodle-for-shifters/ibmcloud/prod
cd moodle-for-shifters/ibmcloud/prod
- Installation de Moodle
helm install --name moodle-for-shifters --values=values-prod.yaml kubernetes/moodle
NAME: moodle-for-shifters LAST DEPLOYED: Fri Aug 9 15:39:44 2019 NAMESPACE: default STATUS: DEPLOYED
RESOURCES: ==> v1/ConfigMap NAME DATA AGE moodle-for-shifters-mariadb 1 1s moodle-for-shifters-mariadb-tests 1 1s
==> v1/Pod(related) NAME READY STATUS RESTARTS AGE moodle-for-shifters-6d4f885986-kh7fp 0/1 ContainerCreating 0 1s moodle-for-shifters-mariadb-0 0/1 ContainerCreating 0 1s
==> v1/Secret NAME TYPE DATA AGE moodle-for-shifters Opaque 2 1s moodle-for-shifters-mariadb Opaque 2 1s
==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE moodle-for-shifters NodePort 172.21.99.116 <none> 80:30917/TCP,443:31037/TCP 1s moodle-for-shifters-mariadb ClusterIP 172.21.40.180 <none> 3306/TCP 1s
==> v1beta1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE moodle-for-shifters 0/1 1 0 1s
==> v1beta1/StatefulSet NAME READY AGE moodle-for-shifters-mariadb 0/1 1s
NOTES:
- Please be patient while the chart is being deployed **
1. Access you Moodle instance with:
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services moodle-for-shifters)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo "Moodle URL: http://$NODE_IP:$NODE_PORT/"
2. Login with the following credentials
echo Username: user
echo Password: $(kubectl get secret --namespace default moodle-for-shifters -o jsonpath="{.data.moodle-password}" | base64 --decode)
- Le node port retourné ici est 80
- Obtention de l'addresse IP du worker node de test
ibmcloud cs workers ShiftersCluster-Prod -> 159.8.83.19
- Admin Moodle: user | Mot de passe: Apxseo4m5e
Installation via Docker (Non utilisée)
ibmcloud cr namespace-add shifters
Ajout de l'espace de nom 'shifters'...
Espace de nom ajouté avec succès 'shifters'
OK
docker pull stable/moodle
docker tag bitnami/moodle de.icr.io/shifters/repo:moodle
ibmcloud cr login
Connexion à 'registry.eu-de.bluemix.net'... Connecté à 'registry.eu-de.bluemix.net'.
IBM Cloud Container Registry is adopting new icr.io domain names to align with the rebranding of IBM Cloud for a better user experience. The existing bluemix.net domain names are deprecated, but you can continue to use them for the time being, as an unsupported date will be announced later. For more information about registry domain names, see https://cloud.ibm.com/docs/services/Registry?topic=registry-registry_overview#registry_regions_local
Connexion à 'de.icr.io'... Connecté à 'de.icr.io'.
IBM Cloud Container Registry is adopting new icr.io domain names to align with the rebranding of IBM Cloud for a better user experience. The existing bluemix.net domain names are deprecated, but you can continue to use them for the time being, as an unsupported date will be announced later. For more information about registry domain names, see https://cloud.ibm.com/docs/services/Registry?topic=registry-registry_overview#registry_regions_local
OK
docker push de.icr.io/shifters/repo:moodle
Rencensement d'outils
Ce document recense plusieurs outils selon divers critères :
https://lite.framacalc.org/shifters_plateforme_pedago
Moodle
Du fait des fonctionnalités qu'elle fournit et de son usage dans le monde de l'enseignement, nous avons choisi la plateforme Moodle : https://moodle.org/
Configuration
Cette section décrit comment la plateforme a été configurée depuis son interface d'administration pour la rendre plus ergonomique et la faire correspondre à nos besoins.
Un ancien travail : https://lite.framacalc.org/shifters_moodle
| URL de la page de paramétrage | Paramétrage | Raison (si non évidente) | Auteur | Date |
|---|---|---|---|---|
| /admin/tool/langimport/index.php | Installer le pack "Français (fr)" | Vincent | 13/08/19 | |
| /admin/settings.php?section=langsettings | "Langue par défaut" = "Français (fr)" | Vincent | 13/08/19 | |
| /admin/settings.php?section=frontpagesettings | "Nom complet du site" = "Les Shifters" | Vincent | 13/08/19 | |
| /admin/settings.php?section=frontpagesettings | "Nom abrégé du site" = "Les Shifters" | Vincent | 13/08/19 | |
| /admin/settings.php?section=frontpagesettings | "Page d'accueil" =
|
Vincent | 13/08/19 | |
| /admin/settings.php?section=frontpagesettings | "Éléments de la page d'accueil, une fois connecté" =
|
Vincent | 13/08/19 | |
| /admin/settings.php?section=frontpagesettings | "Nombre d'annonces" = 0 | A priori, on n'utilisera pas les annonces. | Vincent | 13/08/19 |
| Personnaliser le tableau de bord par défaut | ||||
| /admin/settings.php?section=manageauths | Activer le plugin "Auto-enregistrement par courriel" | S'inscrire à la plateforme sans demander l'autorisation | Vincent | 13/08/19 |
| /admin/settings.php?section=manageauths | "Auto-enregistrement" = "Auto-enregistrement par courriel" | S'inscrire à la plateforme sans demander l'autorisation | Vincent | 13/08/19 |
| /admin/settings.php?section=manageauths | "Permettre la connexion au moyen de l'adresse de courriel" = "Oui" (case cochée) | Vincent | 13/08/19 | |
| /admin/settings.php?section=enrolsettingsself | "Autoriser les méthodes d'auto-inscription existantes" = "Oui" | Participer à un cours sans demander l'autorisation | Vincent | 13/08/19 |
| /admin/settings.php?section=enrolsettingsguest | "Permettre l'accès anonyme" = "Oui" | Lire les cours sans devoir se connecter | Vincent | 13/08/19 |
| /admin/settings.php?section=userpolicies | "Connecter automatiquement les visiteurs anonymes" = "Oui" | Lire les cours sans devoir se connecter | Vincent | 13/08/19 |
| Créer un cours sans demander l'autorisation | Tom | 13/08/19 |