Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 118

Julien Enselme, 03/06/2017 17:06

1 1 Julien Enselme
Afin de gagner du temps et d'éviter les erreurs humaines, des scripts ont été écrits tout au long du projet. Certains sont même exécutés automatiquement toutes les semaines.
2 1 Julien Enselme
3 13 Florent Torregrosa
{{>toc}}
4 1 Julien Enselme
5 1 Julien Enselme
h1. Les tâches planifiées
6 1 Julien Enselme
7 26 Florent Torregrosa
h2. Crontab
8 26 Florent Torregrosa
9 114 Julien Enselme
Pour exécuter ces tâches régulièrement, on utilise le "crontab":http://fr.wikipedia.org/wiki/Crontab. Il s'agit d'un programme installé sur notre serveur et qui exécute des actions à intervalles réguliers.
10 1 Julien Enselme
11 3 Julien Enselme
Pour voir et modifier la liste des actions :
12 3 Julien Enselme
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
13 3 Julien Enselme
# taper la commande pour voir le crontab <code>crontab -l</code>
14 47 Julien Enselme
# taper la commande pour modifier le crontab <code>crontab -e</code>.
15 1 Julien Enselme
16 111 Florent Torregrosa
{{important(Ne pas effectuer cette opération avant de s'être renseigné sur "vi":http://fr.wikipedia.org/wiki/Vi (l'éditeur de texte utilisé qui n'est pas vraiment intuitif :p) et sur "la syntaxe du crontab":http://fr.wikipedia.org/wiki/Crontab#Modification ! Les scripts doivent si possible s’exécuter avant le club Drupal pour que les problèmes éventuels y soient réglés)}}
17 47 Julien Enselme
18 1 Julien Enselme
{{tip(Pour utiliser un autre éditeur que vi taper : export EDITOR=editor_name exemple : vim, nano.)}}
19 74 Florent Torregrosa
20 111 Florent Torregrosa
{{important(d7-all-update-contrib.sh fait des sauvegardes automatiques individuelles pour les sites Drupal 7 en faisant appel à d7-all-dump-indiviual.sh auto. C'est pour cela que d7-all-dump-individual.sh auto n'est pas appelé dans le crontab.)}}
21 26 Florent Torregrosa
22 26 Florent Torregrosa
<pre>
23 26 Florent Torregrosa
<code class="php">
24 42 Florent Torregrosa
######## How to use
25 42 Florent Torregrosa
# mm hh jj MMM JJJ task
26 42 Florent Torregrosa
# minutes hour day_month month day_week
27 42 Florent Torregrosa
# for more informations : https://fr.wikipedia.org/wiki/Crontab#Notation
28 42 Florent Torregrosa
######## End how to
29 112 Julien Enselme
# Update content type site on default when making changes here
30 1 Julien Enselme
31 1 Julien Enselme
### Cleaning
32 112 Julien Enselme
00 5 * * * /home/assos/bin/all-reset-permissions.sh > /dev/null
33 112 Julien Enselme
00 6 * * * /home/assos/bin/delete-temporary-files.sh > /dev/null
34 1 Julien Enselme
35 1 Julien Enselme
36 105 Julien Enselme
### Git report
37 112 Julien Enselme
00 12 * * * /home/assos/bin/git-report.sh
38 1 Julien Enselme
39 1 Julien Enselme
40 93 Julien Enselme
### Drupal 7 cron
41 112 Julien Enselme
00 * * * * /home/assos/bin/d7-all-drush.sh -q cron 2>&1 | /home/assos/bin/log.sh "Drush cron"
42 91 Julien Enselme
43 68 Florent Torregrosa
### Databases
44 1 Julien Enselme
# Create backup
45 112 Julien Enselme
00 8 1,15 * * /home/assos/bin/d7-all-dump-full.sh > /dev/null || mail -s "d7-all-dump-full.sh did not run correctly" assos
46 1 Julien Enselme
47 1 Julien Enselme
# flush backup
48 112 Julien Enselme
00 8 2,16 * * /home/assos/bin/flush-full-databases-backups.sh d7 > /dev/null
49 112 Julien Enselme
00 23 * * 2   /home/assos/bin/flush-individual-databases-backups.sh auto d7 > /dev/null
50 112 Julien Enselme
00 1 * * 3    /home/assos/bin/flush-individual-databases-backups.sh manual d7 > /dev/null
51 91 Julien Enselme
52 91 Julien Enselme
53 91 Julien Enselme
### Drupal 7
54 112 Julien Enselme
00 3 * * 4  /home/assos/bin/d7-all-reset-variables.sh 2>&1 | /home/assos/bin/log.sh "d7-all-reset-variables.sh"
55 112 Julien Enselme
00 22 * * 3 /home/assos/bin/d7-all-update-contrib.sh 2>&1 | /home/assos/bin/log.sh "d7-all-update-contrib.sh"
56 112 Julien Enselme
00 1 * * 4  /home/assos/bin/d7-all-update-localisation.sh 2>&1 | /home/assos/bin/log.sh "d7-all-update-localisation.sh"
57 112 Julien Enselme
00 2 * * 4  /home/assos/bin/d7-all-security-review.sh 2>&1 | /home/assos/bin/log.sh "d7-all-security-review.sh"
58 113 Julien Enselme
00 4 * * 4  /home/assos/bin/sauron.sh settings.load_settings:project=assos update.check_update:send_mail=True > /dev/null
59 104 Julien Enselme
60 112 Julien Enselme
00 22 * * 6 /home/assos/bin/d7-all-usage.sh
61 112 Julien Enselme
00 22 * * 7 /home/assos/bin/disk-usage.sh
62 108 Florent Torregrosa
63 112 Julien Enselme
64 112 Julien Enselme
### Log report
65 112 Julien Enselme
55 23 * * * /home/assos/bin/log-report.sh
66 118 Julien Enselme
0 0 * * 0 /home/assos/bin/purge-logs.sh
67 3 Julien Enselme
</code>
68 83 Julien Enselme
</pre>
69 83 Julien Enselme
70 25 Florent Torregrosa
La liste des tâches effectuées régulièrement est ci-dessous.
71 25 Florent Torregrosa
72 1 Julien Enselme
{{important(Lors de l’import d’un script de configuration comme _scripts-config.sh_ sont chemin doit être donné de façon absolue. Sinon le crontab ne trouvera pas le script !)}}
73 1 Julien Enselme
74 25 Florent Torregrosa
h2. La réinitialisation des variables
75 1 Julien Enselme
76 1 Julien Enselme
Cette tâche consiste à réinitialiser certaines variables qui donnent des droits considérés comme trop permissifs donc dangereux aux administrateurs des sites ou nécessaire pour d'autres scripts tels que piwik ou security_review.
77 1 Julien Enselme
78 25 Florent Torregrosa
En voici quelques exemples :
79 25 Florent Torregrosa
80 1 Julien Enselme
<pre>
81 21 Florent Torregrosa
<code class="bash">
82 25 Florent Torregrosa
drush -y vset error_level 0
83 25 Florent Torregrosa
</code>
84 3 Julien Enselme
</pre>
85 1 Julien Enselme
86 1 Julien Enselme
Cette commande permet de ne pas afficher les messages d'erreurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulgués à n'importe qui.
87 25 Florent Torregrosa
88 1 Julien Enselme
<pre>
89 3 Julien Enselme
<code class="php">
90 1 Julien Enselme
drush -y vset --always-set reverse_proxy TRUE
91 1 Julien Enselme
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
92 70 Julien Enselme
</code>
93 1 Julien Enselme
</pre>
94 6 Julien Enselme
95 115 Julien Enselme
Ces commandes permettent de déclarer à Drupal les serveurs proxy du CRI afin d'éviter qu'il ne répertorie tous les visiteurs comme ayant l'adresse des serveurs sus-cités.
96 3 Julien Enselme
97 1 Julien Enselme
h2. La sauvegarde des bases de données
98 73 Julien Enselme
99 107 Julien Enselme
Sur les installations D7 : une fois par semaine
100 73 Julien Enselme
101 73 Julien Enselme
On utilise les scripts de sauvegardes :
102 1 Julien Enselme
103 72 Julien Enselme
* [[Scripts_et_taches_planifiees#d7-all-dump-fullsh|d7-all-dump-full.sh]]
104 1 Julien Enselme
* [[Scripts_et_taches_planifiees#d7-all-dump-individualsh|d7-all-dump-individual.sh]].
105 1 Julien Enselme
106 1 Julien Enselme
h2. La purge des sauvegardes de bases de données
107 1 Julien Enselme
108 107 Julien Enselme
Sur les installations D7 : toutes les semaines
109 21 Florent Torregrosa
110 116 Julien Enselme
Cette tâche utilise les scripts de purges des sauvegardes afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles.
111 75 Julien Enselme
112 75 Julien Enselme
h1. Liste des scripts à disposition
113 21 Florent Torregrosa
114 102 Florent Torregrosa
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos. Ce dossier est dans le PATH de l'utilisateur assos ce qui permet d'utiliser les scripts comme les commandes usuelles du shell. Les script doiventb être exécutables pour fonctionner ainsi. Le script @all-reset-permissions.sh@ remet les bonnes permissions sur ce dossier.
115 78 Julien Enselme
116 102 Florent Torregrosa
Le PATH est par sécurité entièrement récrit dans @scripts-config.sh@ (on est certain que les commandes seront trouvées même si on ne les appelle pas avec leur chemin absolu). Le PATH contient alors les chemins vers les dossiers contenant les exécutables du système ainsi que les dossiers bin de assos.
117 82 Julien Enselme
118 53 Julien Enselme
La plupart des scripts ont besoin d’importer un des scripts de configuration. L’import se fait grâce à la commande @. SCRIPT@. Ces scripts doivent être importés explicitement. On réalise un test en début de script. Ce test permet de savoir si le script importé a besoin de l’import d’un autre script. Si ce n’est pas le cas, on affiche un message d’avertissement et on arrête l’exécution.
119 1 Julien Enselme
120 85 Julien Enselme
Les scripts nécessitant un argument contiennent une ligne commençant par ARGS détaillant la liste des arguments nécessaires à l’exécution du script. Les arguments entre crochets sont facultatifs. Si vous lancez un tel script sans argument, il affichera un message d’aide donnant la liste des arguments.
121 53 Julien Enselme
122 101 Julien Enselme
La liste complète et à jour est disponible ici : https://forge.centrale-marseille.fr/projects/clubdrupal/repository
123 117 Julien Enselme
124 117 Julien Enselme
125 117 Julien Enselme
h1. Recréer le venv pour unlog
126 117 Julien Enselme
127 117 Julien Enselme
Si Python est mis à jour (par exemple de 3.4 vers 3.5) il faut recréer le venv pour unlog. Pour cela :
128 117 Julien Enselme
129 117 Julien Enselme
# Supprimer l'ancien venv :
130 117 Julien Enselme
<pre>
131 117 Julien Enselme
cd unlog
132 117 Julien Enselme
rm -rf bin include lib lib64 pyvenv.cfg
133 117 Julien Enselme
</pre>
134 117 Julien Enselme
# Recréer le venv (toujours dans /home/assos/unlog) :
135 117 Julien Enselme
<pre>
136 117 Julien Enselme
python3 -m venv --without-pip .
137 117 Julien Enselme
</pre>
138 117 Julien Enselme
# Activer le venv :
139 117 Julien Enselme
<pre>
140 117 Julien Enselme
source bin/activate
141 117 Julien Enselme
</pre>
142 117 Julien Enselme
# Installer pip le gestionnaire de paquets python :
143 117 Julien Enselme
<pre>
144 117 Julien Enselme
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
145 117 Julien Enselme
python3 get-pip.py
146 117 Julien Enselme
</pre>
147 117 Julien Enselme
# Installer unlog :
148 117 Julien Enselme
<pre>
149 117 Julien Enselme
cd /home/assos/unlog/unlog
150 117 Julien Enselme
python3 setup.py install
151 117 Julien Enselme
</pre>
152 117 Julien Enselme
# Vérifier que tout fonctionne :
153 117 Julien Enselme
<pre>
154 117 Julien Enselme
# Désactiver le venv
155 117 Julien Enselme
deactivate
156 117 Julien Enselme
# Retourner dans le home de assos
157 117 Julien Enselme
cd 
158 117 Julien Enselme
# lancer unlog
159 117 Julien Enselme
my-unlog --help
160 117 Julien Enselme
</pre>