Révision partielle de formations EOLE

This commit is contained in:
2020-08-05 17:08:33 +02:00
parent a781e00a5a
commit 93be45617e
595 changed files with 19487 additions and 0 deletions

View File

@ -0,0 +1,188 @@
\begin{frame}
\frametitle{Écrire en couleur}
\begin{itemize}
\item from pyeole.ansiprint import *
\item print\_red
\item print\_green
\item print\_orange
\item ...
\item print\_title
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Question}
\begin{itemize}
\item from pyeole.ihm import question\_ouinon
\item question\_ouinon
\begin{itemize}
\item question : contenu de la question de type oui/non
\item default : valeur par défaut (défaut non)
\item level : info|warn|err (défaut info)
\item return oui ou non
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item print\_orange('couleur orange')
\item print\_title('le titre')
\item a=question\_ouinon('voulez vous vraiment faire cette action')
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gestion des services}
\begin{itemize}
\item from pyeole.service import *
\item manage\_service :
\begin{itemize}
\item action : start|stop|restart|status,
\item service : nom du service,
\item container : nom du conteneur (défaut root).
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item a=service\_out('ntp', 'stop')
\item a=service\_code('smbd', 'stop', 'fichier')
\item a=service\_code\_no\_container('apache2', 'restart')
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Execution de commande}
\begin{itemize}
\item from pyeole.process import *
\item system\_code : exécution de commande, stdout et stderr dans la console
\item system\_out : rien dans la console
\begin{itemize}
\item cmd : commande (list) ;
\item stdin : valeur de STDIN ;
\item container : nom du conteneur (root par défaut) ;
\item env : variable d'environnement ;
\item *context : ssh ou chroot (True par défaut) ;
\item *pty : créé un pseudo terminal (False par défaut).
\end{itemize}
\end{itemize}
\end{frame}
%\begin{frame}
% \frametitle{Execution de commande}
% \begin{itemize}
% \item from pyeole.process import *
% \item is\_installed
% \begin{itemize}
% \item package
% \item container : (défaut root)
% \item *context : (défaut True)
% \end{itemize}
% \item tcpcheck
% \begin{itemize}
% \item ip\_address : adresse IP
% \item port : port a tester
% \item timeout : temps d'attente maximum (défaut 1)
% \end{itemize}
% \item test\_conteneur : test si un conteneur est démarré
% \begin{itemize}
% \item container : nom du conteneur
% \item *ip\_address : adresse IP du conteneur (défaut None)
% \end{itemize}
% \end{itemize}
%\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item a=system\_code(['echo', 'mot'])
\item a=system\_out(['echo', 'mot'])
\item stdin : a=system\_code('cat', stdin="mot")
\item env : a=system\_code('env', env={'mot': 'mot'})
\item container : a=system\_code(['ls', '/etc/samba/'], container='fichier')
% \item installé : is\_installed('samba-common')
% \item non installé : is\_installed('samba')
% \item conteneur : is\_installed('samba', container='fichier')
\item test service : tcpcheck('192.0.2.52', '139')
% \item test\_conteneur('fichier')
\end{itemize}
\end{frame}
%FIXME
\begin{frame}
\frametitle{Gestion des locks}
\begin{itemize}
\item from pyeole.lock import *
\item acquire : ajout d'un lock
\item release : supprimer un lock
\item is\_locked : vérifier la présence d'un fichier lock
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item ajouter, vérifier et supprimer un lock.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Lire valeur du dictionnaire}
\begin{itemize}
\item Via creoled :
\begin{itemize}
\item from creole.client import CreoleClient
\item client = CreoleClient()
\item client.get\_creole(variable)
\end{itemize}
\item en chargeant les dictionnaires :
\begin{itemize}
\item from creole.loader import creole\_loader
\item config = creole\_loader()
\item config.creole.famille.variable
\item config.creole.famille.master.slave
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Modifier valeur du dictionnaire}
\begin{itemize}
\item from creole.loader import creole\_loader, config\_save\_values
\item config = creole\_loader(rw=True)
\item config.creole.famille.variable = value
\item config.creole.famille.master.master.append(value)
\item config.creole.famille.master.slave[-1] = value
\item config\_save\_values(config)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Afficher la valeur de la variable adresse\_ip\_eth0 ;
\item afficher la valeur de la variable netmask\_ssh\_eth0.
\end{itemize}
\end{frame}
%\begin{frame}
% \frametitle{Valeur du dictionnaire conteneur}
% \begin{itemize}
% \item from creole.eosfunc import *
% \item load\_conteneur\_var() : chargement des configurations conteneurs
% \end{itemize}
%\end{frame}
%
%\begin{frame}
% \frametitle{Pratique}
% \begin{itemize}
% \item container\_var = load\_container\_var()
% \item print container\_var['container\_ip\_fichier']
% \end{itemize}
%\end{frame}

View File

@ -0,0 +1,133 @@
\begin{frame}
\frametitle{Écrire en couleur}
\begin{itemize}
%FIXME
\item . /usr/lib/eole/ihm.sh
\item EchoRouge
\item EchoVert
\item EchoOrange
\item ...
\item EchoGras
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Question}
\begin{itemize}
\item Question\_ouinon
\item \$1 : contenu de la question de type oui/non
\item \$2 : interactif ou non
\item \$3 : valeur par défaut (défaut non)
\item \$4 : info|warn|err (défaut info)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item EchoOrange 'couleur orange'
\item EchoGras 'le titre'
\item Question\_ouinon "Voulez vous vraiment faire cette action ?"
\item echo \$?
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gestion des services}
\begin{itemize}
\item CreoleService
\begin{itemize}
\item \$1 : nom du service
\item \$2 : start|stop|restart|status
\item -c conteneur : pour un unique conteneur
\end{itemize}
\item redémarrer tous les services : StartAll
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item CreoleService ntp stop
\item CreoleService smbd stop
\item CreoleService apache2 restart
\item CreoleService apache2 restart -c web
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Execution de commande}
\begin{itemize}
\item CreoleRun
\item \$1 : commande
\item \$2 : conteneur
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Execution de commande}
\begin{itemize}
\item tcpcheck
\item \$1 : timeout
\item \$2 : ip:port
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item CreoleRun "echo mot" fichier
\item test service : tcpcheck 2 192.0.2.52:80
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gestion des locks}
\begin{itemize}
%FIXME
\item CreoleLock acquire "nom\_du\_lock"
\item CreoleLock release "nom\_du\_lock"
\item CreoleLock is\_locked "nom\_du\_lock"
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Créé un lock "test" ;
\item Supprimé le lock "test".
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Valeur d'une variable}
\begin{itemize}
\item CreoleGet nom\_variable
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Récupérer la valeur de la variable adresse\_ip\_eth0
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Modifier la valeur}
\begin{itemize}
\item CreoleSet nom\_variable valeur ;
\item Pour une liste : CreoleSet nom\_variable """valeur1
\item valeur2""" ;
\item attention, ne peut changer la longueur de esclave.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Modifier la valeur de la variable de vm\_swappiness à 10 ;
\item modifier ubuntu\_update\_mirrors à "eole.ac-dijon.fr inconnu.lan"
\end{itemize}
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Génération certificat}
\begin{itemize}
\item Fichier dans /usr/share/eole/certs/ ;
\item fichier avec extension gen\_cert ;
\item fonction gen\_certif() :
\begin{itemize}
\item certfile : nom du fichier crt ;
\item keyfile : nom de la clef ;
\item {cert|key}\_user, {cert|key}\_grp, {cert|key}\_chmod ;
\item regen=regen ;
\item container : nom du conteneur.
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Groupe de conteneur}
\begin{itemize}
\item Différents conteneurs peuvent être rassemblés ;
\item le même path ;
\item le même IP ;
\item le même nom.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,38 @@
\begin{frame}
\frametitle{Création d'un script diagnose}
\begin{itemize}
\item Diagnose sert à tester le service d'un serveur ;
\item si possible, doit tester le bon fonctionnement de l'application ;
\item script bash dans /usr/share/eole/diagnose.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fonction diagnose standard}
\begin{itemize}
\item Certains nombres de fonction dans /usr/lib/eole/diagnose.sh :
\begin{itemize}
\item TestIP2 : test une IP via paquet ICMP ECHO\_REQUEST ;
\item TestARP : requète ARP (évite les problèmes de firewall) ;
\item TestService : test une connexion TCP ;
\item TestUDP : vérifie l'écoute d'un service UDP ;
\item TestPid : test de la présence d'un processus via pidof ;
\item TestHTTPPage : test une page web particulière ;
\end{itemize}
\item fonctions d'affichage :
\begin{itemize}
\item EchoGras : titre de section ;
\item printf ". \%\${len\_pf}s => " "Test a afficher" ;
\item EchoVert|EchoRouge : succès ou échec ;
\item Inactif : si un service est inactif volontairement ;
\item NoConfig : service non configuré.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire un fichier diagnose pour IRCD.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,6 @@
\begin{frame}
\frametitle{Disknod}
\begin{itemize}
\item Accès direct au device (ACL, attribut étendu, ...).
\end{itemize}
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Résolution de nom local}
\begin{itemize}
\item /usr/share/eole/lxc/hosts ;
\item nom du fichier correspond au nom du conteneur ;
\item fichier template ;
\item adresse\_ip nom\_de\_domaine.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Interface supplémentaire}
\begin{itemize}
\item Pour les services sur le même réseau ;
\item balise : <interface interfacelist='...' linkto='...' ip='\%\%...' mask='\%\%...' bcast='\%\%...'/>.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Montage des conteneurs}
\begin{itemize}
\item Mode conteneur doit être plus proche du mode non conteneur ;
\item répertoire où donnée utilisateur ;
\item dans le répertoire /usr/share/eole/lxc/fstab/ ;
\item fichier avec le nom du conteneur ou groupe de conteneur ;
\item /home {{ROOTFS}}/home none bind 0 0
\end{itemize}
\end{frame}

View File

@ -0,0 +1,39 @@
\begin{frame}
\frametitle{Gestion des bases de données}
\begin{itemize}
\item Import initial de la base ;
\item gère les mises à jour (changement d'une option) ;
\item /usr/share/eole/applications/{gen|updates}/xxx.py :
\begin{itemize}
\item conf\_dict = dict(filenames=[...], {test|test\_active}=test)
\item emplacement des fichiers SQL : /usr/share/eole/mysql/xxx/{gen|updates}/xxxx.sql
\end{itemize}
\item eolesql.db\_test
\item importation et modification de la base :
\begin{itemize}
\item db\_exists(database)
\item test\_var(variable, value='oui')
\item table\_exists(database, table)
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gestion des bases de donnée}
\begin{itemize}
\item Change les mots de passe dans les fichiers de configuration ;
\item /usr/share/eole/applications/passwords/xxx.ini :
\begin{itemize}
\item [xxx] : section
\item username : nom d'utilisateur mysql à modifier
\item template : clef à modifier (ex 'define("pass", "'
\item end\_template : fin de la clef = '");'
\item filename : chemin du fichier à modifier
\item owner : utilisateur et groupe du fichier
\item chmod : droit du fichier
\item {pre|post}\_cmd : script exécuter avant|après la modification (NEWPASS est remplacé par le mot de passe).
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,237 @@
\begin{frame}
\frametitle{Création de patch}
\begin{itemize}
\item Génération normal : /usr/share/eole/creole/distrib => /etc
\item Génération avec patch : /usr/share/eole/creole/distrib + /usr/share/eole/creole/patch => /var/lib/creole => /etc
\item Créer un patch :
\begin{itemize}
\item copie du fichier original /usr/share/eole/creole/distrib => /usr/share/eole/creole/modif ;
\item modification du fichier dans /usr/share/eole/creole/modif ;
\item exécution "gen\_patch" ;
\item reconfiguration.
\end{itemize}
\item Désactiver un patch : supprimer le fichier dans /usr/share/eole/creole/patch.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Modifié dans le template de configure sshd\_config : "LoginGraceTime" de "30" à "60"
\item créé le patch.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole}
\begin{itemize}
\item Un dictionnaire est un fichier XML Creole ;
\item décrit les variables présente dans l'interface de configuration ;
\item informations utiles pour les services ;
\item les dictionnaires locaux sont dans /usr/share/eole/creole/dicos/local/.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{CreoleLint}
\begin{itemize}
\item Vérifie la syntaxe du dictionnaire : \commande{CreoleLint -d} ;
\item test la génération d'un template suivant contrainte : \commande{CreoleLint -t nom\_du\_template}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{CreoleCat}
\begin{itemize}
\item Templatise un fichier sans faire de reconfigure (objectif de test) ;
\item \commande{CreoleCat -t nom\_du\_template}
\item \commande{CreoleCat -t nom\_du\_template -o /tmp/template.tmpl}
\item \commande{CreoleCat -s /tmp/nom\_du\_template -o /tmp/template.tmpl}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les paquets}
\begin{itemize}
\item Les paquets fonctionnent sur le maitre ou dans un conteneur ;
\item permet d'installer les paquets sans passer par les dépendances de paquet.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les services}
\begin{itemize}
\item Services fonctionnent sur le maitre ou dans un conteneur ;
\item différentes méthodes : service, upstart (version EOLE inférieur à 2.6) ou apache.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Installer le paquet ircd-irc2 ;
\item ajouter un dictionnaire pour gérer :
\begin{itemize}
\item l'installation du paquet,
\item le service.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : le firewall}
\begin{itemize}
\item On commence par ouvrir les accès (service\_access) ;
\item on ajoute ensuite les restrictions (service\_restiction).
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Ajouter des règles de firewall et tcpwrapper pour autoriser les accès.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les familles}
\begin{itemize}
\item Les variables sont classés dans des familles.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les variables}
\begin{itemize}
\item Les variables sont typées :
\begin{itemize}
\item number, port,
\item string, mail, filename, unix\_user, web\_address,
\item ip, local\_ip, netmask, network, broadcast,
\item netbios, domain, domain\_strict, hostname, hostname\_strict,
\item oui/non, on/off, yes/no.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Dans la famille "services" ajouter la variable "activer\_ircd" ayant pour valeur possible "oui" et "non" ;
\item tester gen\_config.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les fichiers templates}
\begin{itemize}
\item Le nom des fichiers templates sont dans les dictionnaires (file) ;
\item le répertoire de destination doit existé par défaut ;
\item possibilité de définir les droits sur le fichier ;
\item nom de la source peut être différents de la destination.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Ajouter le template /etc/ircd/ircd.conf.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : les contraintes}
\begin{itemize}
\item pour tester/remplir/grouper/conditionner des variables ;
\begin{itemize}
\item calcul automatique avec fonction personnalisé (fill),
\item calcul automatique non modifiable (auto),
\item choix de réponse (valid\_enum),
\item cacher des variables suivant des contraintes (condition),
\item groupe de variables (group) :
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Ajouter une famille "ircd" ;
\item configuration de la M line : M:<ircd\_domaine>::<ircd\_libelle>:<ircd\_port>:000A :
\begin{itemize}
\item le nom de domaine est une copie de web\_url,
\item le libellé est la concaténation de "Serveur IRC pour" et libelle\_etab et n'est pas modifiable par l'utilisateur,
\item le port ircd est par défaut le port 6667 modifiable en mode expert,
\item modifier la balise service\_access ;
\end{itemize}
\item pouvoir ajouter des K line : K:<ircd\_banned\_hostname:ircd\_banned\_comment:*:0:
\begin{itemize}
\item variable groupé avec possibilité de ne pas mettre de valeur,
\item nom d'hôte ou domaine banni,
\item proposer un commentaire par défaut.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire une condition pour désactiver la famille et le service ;
\item tester gen\_config ;
\item mettre la valeur de ircd\_domaine à localhost.localdomaine.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Dictionnaire Creole : l'aide}
\begin{itemize}
\item Afficher de l'aide dans l'interface : <help></help>.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Ajouter de l'aide sur la variable activer\_ircd.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Redéfinition}
\begin{itemize}
\item Permet de redéfinir des attributs et caractéristiques :
\begin{itemize}
\item service
\item variable
\end{itemize}
\item remove\_check : supprimer les "check" déjà définit de la variable.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Langague de template Creole}
\begin{itemize}
\item Un template utilise le langage de template Creole.
\item variable Creole préfixé par \begin{semiverbatim}\%\%\end{semiverbatim}
\item Test : \begin{semiverbatim}\%if EXPRESSION code if \%else code else \%end if\end{semiverbatim}
\item Boucle : \begin{semiverbatim}\%for \%\%i in EXPRESSION hello \%\%i \%end for\end{semiverbatim}
\item Boucle pour variable multi évolué avec esclave : \begin{semiverbatim}\%for \%\%var in \%\%variablemaitre\end{semiverbatim}\begin{semiverbatim}\%\%var, \%\%var.esclave1, \%\%var.esclave2\end{semiverbatim}\begin{semiverbatim}\%end for\end{semiverbatim}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Langague de template Creole}
\begin{itemize}
\item Test existance : \begin{semiverbatim}\%if \%\%is\_defined('variable') code if \%end if\end{semiverbatim}
\item valeur vide : \begin{semiverbatim}\%if \%\%is\_empty(\%\%variable) code if \%end if\end{semiverbatim}
\item nom de variable dans une variable : \begin{semiverbatim}\%set \%\%var='adresse\_ip\_eth0' \%\%getVar(\%\%var)\end{semiverbatim}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique 1}
\begin{itemize}
\item Configuration de la "M line : M:<ircd\_domaine>::<ircd\_libelle>:<ircd\_port>:000A" ;
\item configurer les "K line : K:<ircd\_banned\_hostname:ircd\_banned\_comment:*:0:".
\end{itemize}
\end{frame}

View File

@ -0,0 +1,58 @@
\begin{frame}
\frametitle{Pratique 2}
\begin{itemize}
\item Templatisé le fichier /etc/ircd/ircd.motd ;
\item test l'existance de la variable web\_url et fait un message personnalisé si existe ;
\item créer une variable ircd\_motd\_message avec trois valeurs : "message 1", "message 2" et "personnalisé" ;
\item faire deux messages différents pour "message 1" et "message 2" ;
\item créer une variable ircd\_motd\_personnalise visible si ircd\_motd\_message est "personnalisé" ;
\item valider que ircd\_libelle soit différent de ircd\_motd\_message.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Les fonctions personnalisées}
\begin{itemize}
\item Ajouter une fonction utiliser dans un dictionnaire : /usr/share/creole/funcs/<nom\_fichier>.py.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire une fonction personnalisée qui retourner un texte ;
\item créer une variable qui utilise cette fonction ;
\item utiliser cette variable dans le template ircd.motd ;
\item utiliser la fonction directement dans le template ircd.motd ;
\item tester.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Redéfinition}
\begin{itemize}
\item Permet de redéfinir des attributs et caractéristiques :
\begin{itemize}
\item service
\item variable
\end{itemize}
\item remove\_check : supprimer les "check" déjà définit de la variable.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Redéfinir le texte de la variable web\_url ;
\item passer la variable activer\_clam en mode expert.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Existance d'une variable}
\begin{itemize}
\item Créer la variable si elle n'existe pas encore avec une valeur par défaut ;
\item exemple : 'activer\_clam' dans 23\_proxy.xml ;
\item attention la variable ne peut pas être créé après.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{itemize}
\item Personnalisation du serveur
\begin{itemize}
\item Patch
\item Dictionnaires locaux
\item Template Creole
\end{itemize}
\item Application Zéphir
\begin{itemize}
\item Personnalisation d'un serveur
\item Variante
\item Script Zéphir
\end{itemize}
\end{itemize}

View File

@ -0,0 +1 @@
1 jour.

View File

@ -0,0 +1 @@
L'appropriation des connaissances est contrôlée par des travaux pratiques durant la formation.

View File

@ -0,0 +1,4 @@
\begin{itemize}
\item une salle de formation équipée d'ordinateurs avec infrasctructure de démonstration pour les travaux pratiques ;
\item un formateur avec l'expérience de l'installation et de la maintenance des solutions présentées.
\end{itemize}

View File

@ -0,0 +1 @@
Le participant à la formation est autonome pour l'installation, la personnalisation, l'administration des serveurs, l'utilisation de Zéphir et la recherche d'informations en vue de résoudre les incidents.

View File

@ -0,0 +1 @@
Familiarité avec le système d'exploitation GNU/Linux et le shell.

View File

@ -0,0 +1,56 @@
\documentclass[a4paper,11pt]{report}
\input{styles/preambule}
\renewcommand{\maketitle}{
\begin{center}
\includegraphics[scale=0.3]{"inc/logo"}
\end{center}
\vspace{0.5cm}
\begin{flushleft}
\textbf{\Huge \cadolesfont\textcolor{CadolesBlue}{\@title}}
\end{flushleft}
\begin{center}
\color{CadolesBlue}\TitleRule
\end{center}
\begin{flushright}
\vspace{-1.5ex}
\textbf{\huge \cadolesfont\textcolor{DarkGrey}{\formation}}
\end{flushright}
\vspace{1.5cm}
}
% TITRE DU DOCUMENT !
\title{Programme de Formation}
\newcommand{\departement}{Cadoles Formations}
\newcommand{\numeroversion}{0.0.1}
\newcommand{\adresse}{2 bis, Cours Fleury }
\newcommand{\codepostal}{21000 }
\newcommand{\ville}{Dijon }
\newcommand{\telephone}{Tél : 03 73 27 02 86 }
\newcommand{\fax}{Fax : 09 72 29 61 11}
\newcommand{\siteweb}{Site : http://www.cadoles.com/}
\newcommand{\formateur}{Emmanuel Garette}
\newcommand{\formation}{Amon-Sphynx}
\newcommand{\dossier}{modules_EOLE_envole/programme/amon-sphynx}
\author{Philippe Caseiro}
%\date{}
\begin{document}
\maketitle
\section{Public visé}
\input{dossier/public.tex}
\section{Pré-requis}
\input{dossier/prerequis.tex}
\section{Objectifs de la formation}
\input{dossier/objectifs.tex}
\section{Contenu de la formation}
\input{dossier/contenu.tex}
\section{Moyens pédagogiques, techniques et d'encadrement}
\input{dossier/moyens.tex}
\section{Évaluation des acquis}
\input{dossier/evaluation.tex}
\end{document}

View File

@ -0,0 +1 @@
La formation vise toute personne ayant en charge des tâches d'administration sur des serveurs équipés des modules EOLE.

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Fichier/répertoire dans la sauvegarde}
\begin{itemize}
\item Prévoir les extractions ;
\item fichier/répertoire spécifié dans /etc/bareos/bareosfichiers.d/.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,30 @@
\begin{frame}
\frametitle{Schedule}
\begin{itemize}
\item Créé pour éviter les conflicts entre mise à jour/sauvegarde ;
\item permet de distinger les tâches avant sauvegarde/après sauvegarde ;
\item principe :
\begin{itemize}
\item extration avant sauvegarde,
\item suppression de fichier/mise à jour/ ... après la sauvegarde.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Schedule}
\begin{itemize}
\item Script principalement bash ;
\item enregistrer dans /usr/share/eole/schedule/scripts ;
\item au format "run-part" ;
\item dictionnaire d'activation dans /usr/share/eole/creole/extra/schedule/.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire un Schedule qui stop IRCD avant la sauvegarde ;
\item faire un script qui démarre IRCD après la sauvegarde.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,19 @@
\begin{frame}
\frametitle{Console EAD}
\begin{itemize}
\item Permet de rendre des scripts accessible dans l'EAD ;
\item pas d'option possible ;
\item dans l'EAD : Système/Console ;
\item /usr/share/ead2/backend/actions/cmd\_xxx.py : code de la commande ;
\item /usr/share/ead2/backend/config/cmds/xxx.cmd : enregistrement de la commande ;
\item /usr/share/ead2/backend/config/actions/actions\_xxx.cfg : enregistrement de l'action ;
\item /usr/share/ead2/backend/config/perms/perm\_xxx.ini : association de rôle.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire un script avec "ls /tmp".
\end{itemize}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Faire un script posttemplate qui créé le répertoire /tmp/repertoire ;
\item si le répertoire existe, proposer de le supprimer à l'instance ;
\item redémarrer le service "cron".
\end{itemize}
\end{frame}

View File

@ -0,0 +1,39 @@
\begin{frame}
\frametitle{Script instance ou reconfigure}
\begin{itemize}
\item Utilité :
\begin{itemize}
\item tout ce qui n'est pas possible via les dictionnaires,
\item création de répertoire/changement de droit,
\item copie de fichier, suppression de fichier, déplacement de fichier,
\item création de base,
\item ... ;
\end{itemize}
\item principe :
\begin{itemize}
\item même script exécuter à l'instance et reconfigure,
\item ne doit pas poser de question au reconfigure !
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Script instance ou reconfigure}
\begin{itemize}
\item Emplacement des scripts :
\begin{itemize}
\item /usr/share/eole/preservice/ : avant l'arrêt des services,
\item /usr/share/eole/pretemplate/ : avant la templatisation,
\item /usr/share/eole/posttemplate/ : entre la templatisation et redémarrage des services,
\item /usr/share/eole/postservice/ : après redémarrage des services ;
\end{itemize}
\item compatible run-part :
\begin{itemize}
\item pas d'extension,
\item exécutable,
\item script bash, python, ... il faut le préciser avec un shebang (\#!/bin/bash),
\item premier argument : instance|reconfigure,
\item doivent toujours retourner le code de sortie "0" sauf si problème.
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Attribut SSO}
\begin{itemize}
\item étendre les données disponibles en définissant des attributs calculés
\item créer des filtres définissant quels attributs seront disponibles ;
\item décrire des URL afin de différencier les applications et leur appliquer un filtre
\end{itemize}
\end{frame}

View File

@ -0,0 +1,58 @@
\begin{frame}
\frametitle{Personnalisation d'un serveur}
\begin{itemize}
\item Liste des fichiers sauvegardés : dans la page d'état du serveur cliquer sur "voir les fichiers personnalisés" ;
\item pour les dictionnaires locaux :
\begin{itemize}
\item dans la partie "module" du Zéphir, cliquer sur "Dictionnaires personnalisés",
\item activer les modules dans la page "voir les fichiers personnalisés" de la page d'état.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Ajouter les fichiers personnalisés dans l'application Zéphir pour Scribe ;
\item ajouter la dépendance pour les paquets ;
\item envoyer la configuration.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Variante}
\begin{itemize}
\item Par défaut chaque module est dans la variante "standard" ;
\item création des templates, patchs et dicos éventuels ;
\item déplacement dans /usr/share/eole/creole/patch/variante et /usr/share/eole/creole/dicos/variante ;
\item fichiers ou paquets pas référencés : /usr/share/zephir/zephir\_conf/fichiers\_variante ;
\item dans /usr/share/zephir/scripts : ./creation\_variante ;
\item mettre à jour une variante : ./maj\_variante.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Créer une variante depuis le serveur ;
\item vérifier que le serveur est bien dans la variante ;
\item ajouter les dictionnaires et le template dans la variante (ce n'est plus automatique) ;
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Variante : valeur par défaut}
\begin{itemize}
\item Configuration identique applicable à plusieurs serveurs ;
\item attention uniquement valeur par défaut ;
\item changer les valeurs des serveurs existants via les groupes ;
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Modifier les valeurs par défaut de la variante ;
\item dans la page d'état du serveur "regénérer" la configuration est valider les options par défaut (ne pas enregistrer cette configuration).
\end{itemize}
\end{frame}

View File

@ -0,0 +1,19 @@
\begin{frame}
\frametitle{Exécuter un script Zéphir}
\begin{itemize}
\item Exécution sur un serveur ou un groupe de serveurs ;
\item les scripts doivent être dans /usr/share/zephir/scripts/ ;
\item ils doivent avoir l'extension .zephir ;
\item ne pas spécifier l'extension lors de l'exécuxion ;
\item fonctionseole.init\_proc : permet de vérifier si l'action est bloqué ;
\item fonctionseole.zephir(<etat>, <message>, <type>) : log envoyer au Zéphir ;
\item les scripts sont lancés en tant que uucp, si besoin utiliser sudo\_script('monscript.zephir').
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Pratique}
\begin{itemize}
\item Créer un script personnalisé permettant un supprimer un fichier dont le nom est en paramètre.
\end{itemize}
\end{frame}