Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 109

Florent Torregrosa, 15/02/2014 20:15
add d7-all-usage.sh in the crontab

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
3 13 Florent Torregrosa
{{>toc}}
4 1 Julien Enselme
5
h1. Les tâches planifiées
6
7 26 Florent Torregrosa
h2. Crontab
8
9 3 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.
10 1 Julien Enselme
11 3 Julien Enselme
Pour voir et modifier la liste des actions :
12
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
13
# 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 47 Julien Enselme
{{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 !
17
Les scripts doivent si possible s’exécuter avant le club Drupal pour que les problèmes éventuels y soient réglés)}}
18
19 69 Julien Enselme
{{tip(
20
* Pour utiliser un autre éditeur que vi taper : export EDITOR=editor_name exemple : vim, nano.
21 74 Florent Torregrosa
)}}
22
23
{{important(
24
* d7-all-update-contrib.sh fait des sauvegardes automatiques individuelles pour les sites Drupal 7 en faisant appel à d7-all-dump-indiviual.sh auto
25
* C'est pour cela que d7-all-dump-individual.sh auto n'est pas appelé dans le crontab.
26
)}}
27 26 Florent Torregrosa
28
<pre>
29
<code class="php">
30 42 Florent Torregrosa
######## How to use
31
# mm hh jj MMM JJJ task
32
# minutes hour day_month month day_week
33
# for more informations : https://fr.wikipedia.org/wiki/Crontab#Notation
34
######## End how to
35
36 1 Julien Enselme
37
### Cleaning
38 91 Julien Enselme
00 5 * * * /users/guest/assos/bin/all-reset-permissions.sh > /dev/null
39
00 6 * * * /users/guest/assos/bin/delete-temporary-files.sh > /dev/null
40 1 Julien Enselme
41
42 105 Julien Enselme
### Git report
43
00 12 * * * /users/guest/assos/bin/git-report.sh
44 1 Julien Enselme
45
46 91 Julien Enselme
### Drupal 7 cron
47 93 Julien Enselme
00 * * * * /users/guest/assos/bin/d7-all-drush.sh -q cron > /dev/null
48 91 Julien Enselme
49
50 68 Florent Torregrosa
### Databases
51 43 Florent Torregrosa
# Create backup
52 103 Julien Enselme
00 8 1,15 * * /users/guest/assos/bin/d7-all-dump-full.sh > /dev/null || mail -s "d7-all-dump-full.sh did not run correctly" assos
53 67 Julien Enselme
54 68 Florent Torregrosa
# flush backup
55 91 Julien Enselme
00 8 2,16 * * /users/guest/assos/bin/flush-full-databases-backups.sh d7 > /dev/null
56
00 23 * * 2   /users/guest/assos/bin/flush-individual-databases-backups.sh auto d7 > /dev/null
57
00 1 * * 3    /users/guest/assos/bin/flush-individual-databases-backups.sh manual d7 > /dev/null
58 1 Julien Enselme
59
60 68 Florent Torregrosa
### Drupal 7
61 91 Julien Enselme
00 3 * * 4  /users/guest/assos/bin/d7-all-reset-variables.sh > /dev/null
62 104 Julien Enselme
00 22 * * 3 /users/guest/assos/bin/d7-all-update-contrib.sh
63
00 1 * * 4  /users/guest/assos/bin/d7-all-update-localisation.sh
64 1 Julien Enselme
00 2 * * 4  /users/guest/assos/bin/d7-all-security-review.sh
65 67 Julien Enselme
00 4 * * 4  /users/guest/assos/bin/d7-all-releases-info.sh
66 108 Florent Torregrosa
67 43 Florent Torregrosa
68 109 Florent Torregrosa
00 22 * * 6 /users/guest/assos/bin/d7-all-usage.sh
69 104 Julien Enselme
00 22 * * 7 /users/guest/assos/bin/disk-usage.sh
70 3 Julien Enselme
</code>
71 83 Julien Enselme
</pre>
72
73 25 Florent Torregrosa
La liste des tâches effectuées régulièrement est ci-dessous.
74
75 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 !)}}
76
77 25 Florent Torregrosa
h2. La réinitialisation des variables
78 1 Julien Enselme
79
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.
80
81 25 Florent Torregrosa
En voici quelques exemples :
82
83 1 Julien Enselme
<pre>
84 21 Florent Torregrosa
<code class="bash">
85 25 Florent Torregrosa
drush -y vset error_level 0
86
</code>
87 3 Julien Enselme
</pre>
88 1 Julien Enselme
89
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.
90 25 Florent Torregrosa
91 1 Julien Enselme
<pre>
92 3 Julien Enselme
<code class="php">
93 1 Julien Enselme
drush -y vset --always-set reverse_proxy TRUE
94
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
95 70 Julien Enselme
</code>
96 1 Julien Enselme
</pre>
97 6 Julien Enselme
98 1 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. **Pas fini : voir http://assos.centrale-marseille.fr/lessive/content/t%C3%A2che/rendre-les-settingsphp-conformes-%C3%A0-la-version-712-de-drupal**
99 3 Julien Enselme
100 1 Julien Enselme
h2. La sauvegarde des bases de données
101 73 Julien Enselme
102 107 Julien Enselme
Sur les installations D7 : une fois par semaine
103 73 Julien Enselme
104
On utilise les scripts de sauvegardes :
105 1 Julien Enselme
106 72 Julien Enselme
* [[Scripts_et_taches_planifiees#d7-all-dump-fullsh|d7-all-dump-full.sh]]
107 1 Julien Enselme
* [[Scripts_et_taches_planifiees#d7-all-dump-individualsh|d7-all-dump-individual.sh]].
108
109
h2. La purge des sauvegardes de bases de données
110
111 107 Julien Enselme
Sur les installations D7 : toutes les semaines
112 21 Florent Torregrosa
113 75 Julien Enselme
Cette tâche utilise les scripts de purges des sauvegardes ([[Scripts_et_taches_planifiees#flush-full-databases-backupssh|flush-full-databases-backups.sh]] et [[Scripts_et_taches_planifiees#flush-individual-databases-backupssh|flush-individual-databases-backups.sh]]) afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles.
114
115
h1. Liste des scripts à disposition
116 21 Florent Torregrosa
117 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.
118 78 Julien Enselme
119 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.
120 82 Julien Enselme
121 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.
122 1 Julien Enselme
123 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.
124 53 Julien Enselme
125 101 Julien Enselme
La liste complète et à jour est disponible ici : https://forge.centrale-marseille.fr/projects/clubdrupal/repository