16 Commits

42 changed files with 941 additions and 996 deletions

View File

@ -1,2 +0,0 @@
*.pdf
*.zip

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

View File

@ -1,8 +1,3 @@
---
marp: true
---
<style> <style>
pre { font-size: 0.5em !important; } pre { font-size: 0.5em !important; }
table { font-size: 0.6em !important; } table { font-size: 0.6em !important; }
@ -406,8 +401,6 @@ export default class Clock extends React.Component {
Les événements du DOM sont interceptés par le passage de "callbacks" sur les propriétés `on<Event>` des composants. Les événements du DOM sont interceptés par le passage de "callbacks" sur les propriétés `on<Event>` des composants.
---
```jsx ```jsx
// my-app/src/components/counter.js // my-app/src/components/counter.js
@ -538,8 +531,8 @@ https://reactjs.org/docs/react-component.html
### Séquence de montage ### Séquence de montage
1. `constructor(nextProps, currentState)` 1. `constructor(props)`
2. `static getDerivedStateFromProps(nextProps, currentState)` 2. `componentWillMount()`
3. `render()` 3. `render()`
4. `componentDidMount()` 4. `componentDidMount()`
@ -547,11 +540,11 @@ https://reactjs.org/docs/react-component.html
### Séquence de mise à jour ### Séquence de mise à jour
1. `static getDerivedStateFromProps(nextProps, currentState)` 1. `componentWillReceiveProps(nextProps)`
2. `shouldComponentUpdate(nextProps, nextState)` 2. `shouldComponentUpdate(nextProps, nextState)`
3. `render()` 3. `componentWillUpdate(nextProps, nextState)`
4. `getSnapshotBeforeUpdate(prevProps, prevState)` 4. `render()`
5. `componentDidUpdate(prevProps, prevState, snapshot)` 5. `componentDidUpdate(prevProps, prevState)`
--- ---
@ -845,10 +838,10 @@ https://redux.js.org/
--- ---
![bg right:75% contain](./img/redux_flow.png?1)
## Flot des données ## Flot des données
![center 100%](./img/redux_flow.png?1)
--- ---
## `store`, `actions` et `reducers` ## `store`, `actions` et `reducers`
@ -912,7 +905,7 @@ export default const rootReducer = (state, action) => {
--- ---
## Création du `store` ## Création du `store`
```javascript ```
// store.js // store.js
import { createStore } from 'redux' import { createStore } from 'redux'
@ -928,8 +921,9 @@ export function configureStore(initialState = { products: [] }) {
--- ---
## Tester ## Tester
```js ```
// store.test.js // store.test.js
/* globals test, expect, jest */ /* globals test, expect, jest */
import { addProduct, removeProduct } from './actions' import { addProduct, removeProduct } from './actions'
import { configureStore } from './store' import { configureStore } from './store'
@ -1105,146 +1099,6 @@ export default connect(mapStateToProps)(App)
--- ---
## Redux-Saga
ou comment gérer les **"effets de bord"**
---
![bg right:75% contain](./img/reduxsaga_flow.png?1)
## Flot des données
---
### Cas d'usage
React-Redux permet d'intégrer au sein du "flux de travail" Redux la gestion des opérations asynchrones.
**Exemple** _Appels à des API distantes, opérations liées au passage du temps, messages websockets..._
Notamment, il offre une gestion de la **synchronisation d'opérations asynchrones** i.e. je dois attendre que l'opération A et l'opération B soient terminées pour effectuer l'opération C.
---
### Installation de la dépendance
```bash
npm install --save redux-saga
```
---
### Ajout du middleware
```js
// src/store/store.js
import { createStore, applyMiddleware, combineReducers, compose } from 'redux'
import myReducer from '../reducers/my'
import rootSaga from '../sagas/root'
import createSagaMiddleware from 'redux-saga'
const sagaMiddleware = createSagaMiddleware()
const rootReducer = combineReducers({
my: myReducer,
});
export function configureStore(initialState = {}) {
const store = createStore(
rootReducer,
initialState,
compose(
applyMiddleware(sagaMiddleware)
)
)
sagaMiddleware.run(rootSaga);
return store;
}
```
---
## Création de la saga "racine"
_Avec une saga "factice" d'authentification_
```js
// src/sagas/root.js
import { all, takeLatest } from 'redux-saga/effects';
import { LOGIN_REQUEST } from '../actions/auth';
import { loginSaga } from './auth';
export default function* rootSaga() {
yield all([
takeLatest(LOGIN_REQUEST, loginSaga),
]);
}
```
---
## Définition des actions
```js
// src/actions/auth.js
export const LOGIN_REQUEST = 'LOGIN_REQUEST'
export const LOGIN_SUCCESS = 'LOGIN_SUCCESS';
export const LOGIN_FAILURE = 'LOGIN_FAILURE';
export function login(username, password) {
return { type: LOGIN_REQUEST, username, password }
}
export function loginFailure(username, error) {
return { type: LOGIN_FAILURE, username, error }
}
export function loginSuccess(username) {
return { type: LOGIN_SUCCESS, username }
}
```
---
## Création de ma saga d'authentification
```js
// src/sagas/auth.js
import { call, put } from 'redux-saga/effects';
import { loginFailure, loginSuccess } from '../actions/auth';
export default function* loginSaga(action) {
let result;
try {
result = yield call(doLogin, action.username, action.password);
} catch(err) {
yield put(loginFailure(action.username, err));
}
if ('error' in result) {
yield put(loginFailure(action.username, result.error));
return
}
yield put(loginSuccess(action.username));
}
function doLogin(username, password) {
return fetch('http://my-backend.org/login', {
method: 'POST',
body: JSON.stringify({
Username: username,
Password: password
}),
mode: 'cors',
credentials: 'include'
}).then(res => res.json())
}
```
---
## Mise en application ## Mise en application
--- ---

View File

@ -1,182 +0,0 @@
# Logomotion 2017 - Formations
## Sessions prévues
- Remise à niveau Symfony pour 3 personnes - 2 jours
- Introduction aux frameworks javascript pour le développement web - 1 jour
- Formation framework web (ex: Angular 2) - 3 jours
- Sécurité des applications web - 2 jours
- Démarche audit de sécurité des applications web - 2 jours
## Plans de formation
### Remise à niveau Symfony
#### Jour 1: Rappels des fonctionnalités
- Les principales nouveautés de Symfony 3
- Structure d'un projet, générateurs et "bundles"
- Notion de bundles
- Configuration d'un bundle
- Creation & utilisation des commandes
- Le générateur
- Le routage et les contrôleurs
- Filtrage des verbes HTTP
- Routage vers les actions de contrôleurs
- Authentification et autorisation
- Firewall & ACL
- Gestion des rôles utilisateur
- Méthode d'authentification personnalisée
- Les vues et le moteur de templating Twig
- Syntaxe Twig
- Notion d'héritage
- Gestion de la sécurité
- Étendre Twig
- Les formulaires
- Création et traitement de formulaires
- Validation des données
- Les évènements
- L'ORM Doctrine et le modèle de données
- Concept d'ORM
- Entité & Dépôt
- Les évènements
- Mise en production
- Gestion des environnements
- Cache applicatif
#### Jour 2: Mise en application
Le 2ème jour est dédié à la mise en pratique des concepts vus pendant le jour précédent.
Un cahier des charges d'une application prévue pour exploiter l'ensemble des éléments traités par la formation sera proposé aux apprenants.
Le formateur les accompagnera durant l'ensemble des travaux.
### Introduction aux frameworks javascript pour le développement web
#### Jour 1: Frontend
- Angular 2 (3 heures)
- Présentation générale et historique
- Structuration d'un projet et générateurs
- Concepts principaux
- Travaux pratiques
- React/Redux (3 heures)
- Présentation générale et historique
- Concepts généraux de React
- L'architecture "Flux" et Redux
- Travaux pratiques
#### Jour 2: Backend
- ExpressJS (3 heures)
- Présentation générale et historique
- Routage
- Intégration de moteurs de templates
- Gestion des formulaires
- Travaux pratiques
- Sails (3 heures)
- Présentation générale et historique
- Structuration d'un projet et générateurs
- Concepts principaux
- Travaux pratiques
### Formation framework web (plan généraliste)
### Jour 1: Concepts principaux et prise en main
- Présentation du framework et historique
- Structure d'un projet et générateurs
- Gestion du routage applicatif
- Modèle de données
- "Templating" et modèle de données
### Jour 2: Fonctionnalités avancées et communauté
- Création et gestion des "composants" et mutualisation
- Tests unitaires et fonctionnels
- Gestion de l'authentification
- Gestion de l'autorisation
- Mise en production
### Jour 3: Mise en application
Le 3ème jour est dédié à la mise en pratique des concepts vus pendant les deux jours précédents.
Un cahier des charges d'une application prévue pour exploiter l'ensemble des éléments traités par la formation sera proposé aux apprenants. Le formateur les accompagnera durant l'ensemble des travaux.
La réalisation nécessitera l'implémentation de fonctionnalités récurrentes dans le domaine applicatif web, notamment:
- Routage applicatif
- Authentification
- Gestion des autorisations
- Opérations CRUD sur des entités métier
- Téléversement de fichiers
- Communication AJAX/Websockets
### Sécurité des applications web
#### Jour 1: Sécurité de l'applicatif
- Présentation du collectif OWASP (15 minutes)
- Le "top 10" des failles des applicatifs Web (4 heures)
- Injections
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Authentification faillible et mauvaise gestion de la session
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Cross Site Scripting (XSS)
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Mauvaise contrôle des accès
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Problèmes de configuration
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Fuite d'informations sensibles
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Cross Site Request Forgery (CSRF)
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Mauvaise politique de maintenance des composants techniques
- Contexte et scénarios d'exploitation
- Techniques de mitigation
- Supervision applicative (2 heures 30)
- Installation et configuration de Prometheus
- Métrologie de l'applicatif et des processus métiers
- Création d'alertes
#### Jour 2: Sécurité de l'infrastructure
- Configuration des serveurs HTTP - Apache2 et Nginx (3 heures)
- Prévention de la fuite d'informations
- Configuration des connexion SSL/TLS
- Supervision et détection d'intrusion (3 heures)
- Supervision du systèmes avec Monit
- Installation
- Configuration et usage
- Détection et prévention des intrusions
- Apache2 - mod_security
- fail2ban - NIDS simplifié
### Démarche audit de sécurité des applications web
#### Jour 1: Principes et concepts de l'audit de sécurité
- Les différents types d'audit (30m)
- "Black Box"
- "Grey Box"
- "White Box"
- La démarche en mode "white box" avec le référentiel OWASP (5 heures 30)
- Identification du périmètre
- Récupération des informations d'amorçage de l'action
- Verrouillage de l'environnement
- Audit
- Création du rapport
- Accompagnement post-audit
#### Jour 2: Étude de cas
Mise en application des éléments vu le jour précédent sur une application Web sélectionnée pour illustrer les différentes problématiques de la procédure d'audit (6 heures)

View File

@ -1,33 +0,0 @@
# Formation "Conception, implémentation et sécurisation d'API pour les applications multi plateformes"
## Durée prévue
2 jours
## Plan de formation
### Jour 1: Découvertes des concepts théoriques
- Mutualisation de l'infrastructure pour les applications multi-plateformes
- Enjeux et problématiques
- Comprendre l'impact des spécificités de chaque plateforme
- Web
- Mobile
- Bureau
- Service applicatif
- Points d'attention
- Cycle de développement et déploiement
- Authentification
- Autorisation
- Modèle de données et sérialisation
- Cache et stockage local
- Gestion des spécificités des plateformes
- Synchronisation des données entre les plateformes
### Jour 2: Mise en pratique
La journée suivante est dédiée à la mise en pratique des concepts vus pendant le jour précédent.
Deux squelettes (web, mobile) d'une même application seront fournis aux apprenants. Ceux ci devront utiliser les concepts et mettre en application les bonnes pratiques vues le jour précédent pour concevoir et implémenter une API sécurisée répondant au cahier des charges fourni par le formateur.
Le formateur accompagnera les apprenants durant l'ensemble des travaux.

View File

@ -1,45 +0,0 @@
# Formation "Intégration et déploiement continue"
## Durée prévue
1.5 jours
## Plan de formation
### Jour 1: Découverte des pratiques d'intégration et déploiement continu
- Comprendre les enjeux
- Cycle de développement et processus d'intégration
- Apports et contraintes pour les équipes
- Intégration / Déploiement continu: quelles différences ?
- Anatomie d'un processus d'intégration
- Notions d'évènement et "pipeline"
- Évènements déclencheurs
- Étapes clés
- Retour d'information
- Automatisation du processus
- Analyse de l'existant et migration progressive
- Problématique de la fréquence de construction et temps global d'exécution
- Reproducibilité
- Conception du processus d'intégration continue
- Modularisation et enjeux de la gestion des dépendances
- Parallélisation et cascade de processus
- Infrastructure d'intégration et déploiement continu
- L'outil de gestion des sources
- Le serveur d'intégration continue
- Livrables et plateformes de diffusion
- Environnements de déploiement et approvisionnement
- Exemple: Gitlab et Gitlab CI
- Mise en place d'une instance virtualisée
- Conception et implémentation d'un pipeline
- Déploiement automatisé avec Docker
### Jour 2: Mise en pratique
La demi journée suivante est dédiée à la mise en pratique des concepts vus pendant le jour précédent.
Les apprenants doivent concevoir et implémenter un pipeline d'intégration continue correspondant à un cahier des charges fourni par le formateur.
Une infrastructure virtualisée d'intégration continue est fournie par le formateur.
Le formateur les accompagne durant l'ensemble des travaux.

View File

@ -1,32 +0,0 @@
# Formation "React/Redux - Perfectionnement"
## Durée prévue
5 jours
## Plan de formation
### Jour 1: Rappels et découverte des fonctionnalités avancées
- Présentation générale et historique
- Concepts généraux de React
- L'architecture "Flux" et Redux
- Routage côté client
- Concepts avancés
- Les "hooks" React
- Gestion des "effets de bord" avec Redux Saga
- Modèles d'authentification
- Communication client/serveur
- API REST
- GraphQL
- Websocket
- Gestion des thèmes
- Rendu côté serveur
### Jour 2 à 5: Mise en pratique
Les jours 2 à 5 sont dédiés la réalisation d'un projet court mais couvrant l'ensemble des concepts avancés présentés pendant la première journée.
Le formateur founit un squelette applicatif ainsi que le cahier des charges décrivant les objectifs de réalisation.
Le formateur accompagne les apprenants durant l'ensemble des travaux.

View File

@ -1,224 +0,0 @@
\documentclass{beamer}
%\usertheme{Madrid}
\setbeamercovered{transparent}
\setcounter{tocdepth}{2}
\usepackage[french]{babel}
%\usepackage[utf8,utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xunicode} %Unicode extras!
\usepackage{xltxtra} %Fixes
\setmainfont{CaviarDreams}
\usepackage{multicol}
%\usepackage{colortbtl}
\usepackage{graphicx}
\usepackage{verbatim} % Pour l'insertion de fichier en mode verbatim
\usepackage{ucs}
\usepackage{tabto}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{hyperxmp}
\hypersetup{%
colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone,
pdftitle={Tronc commun 1},
pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu},
pdfauthor={Emmanuel Garette},
pdflang={fr-FR},
pdfcopyright={Copyright © 2011-2014 Cadoles}, % Nécessite XeTeX
pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/},
}
%\usecolortheme{crane}
\definecolor{UniBlue}{RGB}{83,121,180}
\definecolor{CleanWhite}{RGB}{255,255,255}
\definecolor{DirtyWhite}{RGB}{105,105,105}
\setbeamercolor{title}{fg=UniBlue}
\setbeamercolor{frametitle}{fg=CleanWhite}
\setbeamercolor{structure}{fg=UniBlue}
\newcommand{\eolesmall}{
\begin{minipage}[c]{0.10\textwidth}
\includegraphics[width=1cm]{beamer-skel/img/logo-eole.png}
\end{minipage}
}
\newcommand{\eolebig}{\includegraphics[width=2cm]{beamer-skel/img/logo-eole.png}}
\newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}}
%\setmonofont[Scale=0.86]{Andale Mono}
%\usepackage{colortab}
\newcommand{\commande}[1]{\texttt{#1}}
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner01.png}}
\title[]{Formation personnalisée}
\subtitle{Communauté de communes du Pays du Mont-Blanc}
\author[Equipe Auteur]{Vincent Febvre}
\institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}}
\date{{\small \today}}
\subject{Talks}
\AtBeginSection[]
{
\begin{frame}<beamer>
\frametitle{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-7},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={8-14},currentsection,hideothersubsections]
\end{column}
\end{columns}
% \tableofcontents[currentsection,currentsubsection]
\end{frame}
}
\AtBeginSubsection[]
{
\begin{frame}<beamer>
\frametitle{}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-8},currentsection,currentsubsection,hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={9-16},currentsection,currentsubsection,hideothersubsections]
\end{column}
\end{columns}
% \tableofcontents[currentsection,currentsubsection]
\end{frame}
}
\logo{
% \includegraphics[width=1cm]{beamer-skel/img/logo-ecologie.png}~
\hspace{120pt}
\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~
\hspace{113pt}
\includegraphics[width=1cm]{beamer-skel/img/logo_en.jpg}~
}
\begin{document}
% Page de titre
\begin{frame}
\titlepage
\end{frame}
\section{Introduction}
\include{modules_EOLE_envole/commun/00-intro}
\include{modules_EOLE_envole/commun/01-nouveaute23}
\include{modules_EOLE_envole/commun/01-nouveaute24}
\section{Panorama des modules}
\include{modules_EOLE_envole/amon/00-description}
\include{modules_EOLE_envole/sphynx/00-description}
\include{modules_EOLE_envole/scribe/00-description}
\include{modules_EOLE_envole/horus/00-description}
\include{modules_EOLE_envole/amonecole/00-description}
\include{modules_EOLE_envole/tronc-commun-1/00-panorama-module}
\section{Les quatre phases}
\include{modules_EOLE_envole/commun/02-quatre_phases}
\include{modules_EOLE_envole/scribe/00-virtualbox}
\include{modules_EOLE_envole/commun/02-quatre_phases-pratique}
%\include{modules_EOLE_envole/tronc-commun-1/01-config-texte}
\section{Administration commune}
\include{modules_EOLE_envole/commun/02-instance-reconfigure}
\include{modules_EOLE_envole/commun/03-mise-a-jour}
\include{modules_EOLE_envole/commun/04-diagnose}
\include{modules_EOLE_envole/commun/04-diagnose-pratique}
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs}
%\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs-pratique}
\include{modules_EOLE_envole/tronc-commun-1/06-firewall}
\include{modules_EOLE_envole/tronc-commun-1/06-schedule}
\include{modules_EOLE_envole/tronc-commun-1/06-zpratique}
\include{modules_EOLE_envole/tronc-commun-1/07-onduleur}
\include{modules_EOLE_envole/tronc-commun-1/07-onduleur-pratique}
\include{modules_EOLE_envole/tronc-commun-1/08-trouver}
\section{Interfaces d'administration EOLE}
\include{modules_EOLE_envole/tronc-commun-1/30-ead}
\include{modules_EOLE_envole/tronc-commun-1/31-interface-semi-graphique}
\section{Application Zéphir 1}
\include{modules_EOLE_envole/tronc-commun-1/10-application-zephir}
\section{Scribe fonctionnement}
\include{modules_EOLE_envole/scribe/10-machine_conf_reseau}
\include{modules_EOLE_envole/scribe/11-integration-scribe}
%\include{modules_EOLE_envole/horus/11-integration-horus}
\include{modules_EOLE_envole/scribe/12-machine-ead}
%\include{modules_EOLE_envole/horus/02-machine-ead}
%\include{modules_EOLE_envole/scribe/12-machine-diagnostic}
%\include{modules_EOLE_envole/scribe/13-profil}
%\include{modules_EOLE_envole/scribe/14-esu}
%\include{modules_EOLE_envole/scribe/14-esu-diagnostic}
%\include{modules_EOLE_envole/horus/14-esu}
\include{modules_EOLE_envole/scribe/15-script-scribe}
%\include{modules_EOLE_envole/horus/15-script-horus}
\include{modules_EOLE_envole/scribe/10-windows-distance}
%\include{modules_EOLE_envole/scribe/16-imprimante}
\include{modules_EOLE_envole/scribe/17-corbeille}
\include{modules_EOLE_envole/scribe/18-virus}
\include{modules_EOLE_envole/scribe/19-ftp}
\section{Module Amon}
\subsection{Fonctions de base d'Amon}
\include{modules_EOLE_envole/amon/01-base}
\subsection{Era}
\include{modules_EOLE_envole/amon/02-era}
\subsection{Proxy}
\include{modules_EOLE_envole/amon/06-proxy}
\include{modules_EOLE_envole/amon/04-cntlm}
\subsection{Filtrage web}
\include{modules_EOLE_envole/amon/03-filtrage}
\subsection{Reverse Proxy}
\include{modules_EOLE_envole/amon/05-reverseproxy}
\section{Sauvegarde}
\include{modules_EOLE_envole/scribe/20-sauvegarde}
\section{GNU/Linux}
\include{modules_EOLE_envole/tronc-commun-1/20-gnu_linux}
\include{modules_EOLE_envole/tronc-commun-1/20-tcpdump-tshark}
\include{modules_EOLE_envole/tronc-commun-1/21-lire-ecrire}
\include{modules_EOLE_envole/tronc-commun-1/22-commande-distance}
\section{Application Zéphir 2}
\include{modules_EOLE_envole/tronc-commun-1/11-application-zephir2}
%FIXME a revoir !
\include{modules_EOLE_envole/tronc-commun-1/99-migration-zephir}
\section{Communications}
\include{modules_EOLE_envole/scribe/30-communication}
\section{Les services web}
%\include{modules_EOLE_envole/tronc-commun-1/30-ead}
\include{modules_EOLE_envole/envole/01-ajout}
\include{modules_EOLE_envole/envole/02-applications}
\include{modules_EOLE_envole/envole/02-posh}
\subject{Talks}
\begin{frame}
\frametitle{Licence}
Cette œuvre est mise à disposition sous licence \href{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}{\textsc{cc-by-nc-sa-2.0}}
\begin{itemize}
\item Attribution
\item Pas dUtilisation Commerciale
\item Partage dans les Mêmes Conditions 2.0
\item France
\end{itemize}
Pour voir une copie de cette licence, visitez
\href{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}
ou écrivez à Creative Commons, 444 Castro Street, Suite 900,
Mountain View, California, 94041, USA.
\end{frame}
\end{document}

View File

@ -1,220 +0,0 @@
\documentclass{beamer}
%\usertheme{Madrid}
\setbeamercovered{transparent}
\setcounter{tocdepth}{2}
\usepackage[french]{babel}
%\usepackage[utf8,utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xunicode} %Unicode extras!
\usepackage{xltxtra} %Fixes
\setmainfont{CaviarDreams}
\usepackage{multicol}
%\usepackage{colortbtl}
\usepackage{graphicx}
\usepackage{verbatim} % Pour l'insertion de fichier en mode verbatim
\usepackage{ucs}
\usepackage{tabto}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{hyperxmp}
\hypersetup{%
colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone,
pdftitle={Tronc commun 2},
pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu},
pdfauthor={Philippe Caseiro},
pdflang={fr-FR},
pdfcopyright={Copyright © 2013 Cadoles}, % Nécessite XeTeX
pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/},
}
%\usecolortheme{crane}
\definecolor{UniBlue}{RGB}{83,121,180}
\definecolor{CleanWhite}{RGB}{255,255,255}
\setbeamercolor{title}{fg=UniBlue}
\setbeamercolor{frametitle}{fg=CleanWhite}
\setbeamercolor{structure}{fg=UniBlue}
\newcommand{\eolesmall}{
\begin{minipage}[c]{0.10\textwidth}
\includegraphics[width=1cm]{beamer-skel/img/logo-eole.png}
\end{minipage}
}
\newcommand{\eolebig}{\includegraphics[width=2cm]{beamer-skel/img/logo-eole.png}}
\newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}}
%\setmonofont[Scale=0.86]{Andale Mono}
%\usepackage{colortab}
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner01.png}}
\title[]{Formation personnalisée}
\subtitle{Académie de la Martinique}
\author[Equipe Auteur]{Philippe Caseiro}
\institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}}
\date{{\small \today}}
\subject{Talks}
\AtBeginSubsection[]
{
\begin{frame}<beamer>
\frametitle{}
\tableofcontents[currentsection,currentsubsection]
\end{frame}
}
\logo{
% \includegraphics[width=1cm]{beamer-skel/img/logo-ecologie.png}~
\hspace{120pt}
\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~
\hspace{113pt}
\includegraphics[width=1cm]{beamer-skel/img/logo_en.jpg}~
}
\begin{document}
% Page de titre
\begin{frame}
\titlepage
\end{frame}
\section{Introduction}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
%Intro
\include{modules_EOLE_envole/commun/00-intro}
\include{modules_EOLE_envole/commun/01-nouveaute23}
%méta-paquet EOLE description
\include{modules_EOLE_envole/amon/00-description}
\include{modules_EOLE_envole/sphynx/00-description}
\include{modules_EOLE_envole/scribe/00-description}
\include{modules_EOLE_envole/horus/00-description}
\include{modules_EOLE_envole/tronc-commun-1/00-panorama-module}
%méta-paquet EOLE install
\begin{frame}
\frametitle{Les différents méta-paquets EOLE}
\begin{itemize}
\item amon-pkg ;
\item scribe-pkg ;
\item amonecole-pkg ;
\item horus-pkg ;
\item seshat-pkg ;
\item sphynx-pkg ;
\item zephir-pkg.
\end{itemize}
\end{frame}
%Les conteneurs intro (voir suite dans personnalisation creole
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs}
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs-pratique}
\section{Personnalisation du serveur}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-2/01-personnalisation-creole}
\include{modules_EOLE_envole/tronc-commun-2/01-personnalisation-creole2}
%\section{Application Zéphir}
%\begin{frame}{Plan}
% \begin{columns}[t]
% \begin{column}{5cm}
% \tableofcontents[sections={1-6},currentsection, hideothersubsections]
% \end{column}
% \begin{column}{5cm}
% \tableofcontents[sections={7-12},currentsection,hideothersubsections]
% \end{column}
% \end{columns}
%\end{frame}
%\include{modules_EOLE_envole/tronc-commun-2/02-zephir}
%\include{modules_EOLE_envole/tronc-commun-2/03-zephir_script}
\section{API Python}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-2/20-api}
\section{API Bash}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-2/30-api_bash}
\section{Administration avancée}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-2/04-diagnose}
\include{modules_EOLE_envole/tronc-commun-2/05-script-instance-reconfigure}
\include{modules_EOLE_envole/tronc-commun-2/06-montage-conteneur}
\include{modules_EOLE_envole/tronc-commun-2/07-eole-firewall}
\include{modules_EOLE_envole/tronc-commun-2/08-schedule}
\include{modules_EOLE_envole/tronc-commun-2/09-host}
\include{modules_EOLE_envole/tronc-commun-2/11-mysql}
\include{modules_EOLE_envole/tronc-commun-2/12-interface}
\include{modules_EOLE_envole/tronc-commun-2/13-disknod}
\include{modules_EOLE_envole/tronc-commun-2/14-sso}
\include{modules_EOLE_envole/tronc-commun-2/15-script-ead}
\include{modules_EOLE_envole/tronc-commun-2/16-sauvegarde}
\include{modules_EOLE_envole/tronc-commun-2/17-conteneur_groupe_conteneur}
\include{modules_EOLE_envole/tronc-commun-2/18-cert}
\include{modules_EOLE_envole/scribe/31-scripts-user-scribe}
\subject{Talks}
\begin{frame}
\frametitle{Licence}
Cette œuvre est mise à disposition sous licence \href{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}{\textsc{cc-by-nc-sa-2.0}}
\begin{itemize}
\item Attribution
\item Pas dUtilisation Commerciale
\item Partage dans les Mêmes Conditions 2.0
\item France
\end{itemize}
Pour voir une copie de cette licence, visitez
\href{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}
ou écrivez à Creative Commons, 444 Castro Street, Suite 900,
Mountain View, California, 94041, USA.
\end{frame}
\end{document}

View File

@ -20,20 +20,21 @@
\usepackage{hyperxmp} \usepackage{hyperxmp}
\hypersetup{% \hypersetup{%
colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone, colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone,
pdftitle={Amon Sphynx}, pdftitle={Tronc commun 1},
pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu}, pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu},
pdfauthor={Emmanuel Garette}, pdfauthor={Emmanuel Garette},
pdflang={fr-FR}, pdflang={fr-FR},
pdfcopyright={Copyright © 2011-2014 Cadoles}, % Nécessite XeTeX pdfcopyright={Copyright © 2011-2016 Cadoles},
pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}, pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/},
} }
%\usecolortheme{crane} %\usecolortheme{crane}
\definecolor{UniBlue}{RGB}{83,121,180} \definecolor{UniBlue}{RGB}{83,121,180}
\definecolor{CadolesBlue}{RGB}{7,142,181}
\definecolor{CleanWhite}{RGB}{255,255,255} \definecolor{CleanWhite}{RGB}{255,255,255}
\setbeamercolor{title}{fg=UniBlue} \definecolor{DirtyWhite}{RGB}{105,105,105}
\setbeamercolor{frametitle}{fg=CleanWhite} \setbeamercolor{title}{fg=CadolesBlue}
\setbeamercolor{structure}{fg=UniBlue} \setbeamercolor{frametitle}{fg=CadolesBlue}
\setbeamercolor{structure}{fg=CadolesBlue}
\newcommand{\eolesmall}{ \newcommand{\eolesmall}{
\begin{minipage}[c]{0.10\textwidth} \begin{minipage}[c]{0.10\textwidth}
\includegraphics[width=1cm]{beamer-skel/img/logo-eole.png} \includegraphics[width=1cm]{beamer-skel/img/logo-eole.png}
@ -43,13 +44,13 @@
\newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}} \newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}}
%\setmonofont[Scale=0.86]{Andale Mono} %\setmonofont[Scale=0.86]{Andale Mono}
%\usepackage{colortab} %\usepackage{colortab}
\newcommand{\commande}[1]{\texttt{#1}}
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner01.png}} \setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner02.png}}
\title[]{Formation EOLE} \title[]{Formation EOLE}
\subtitle{Versailles} \subtitle{Formation personnalisée architecture MSE avancée}
\author[Equipe Auteur]{Emmanuel Garette} \author[Equipe Auteur]{Cadoles Formation}
\institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}} \institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}}
@ -66,19 +67,18 @@
} }
\logo{ \logo{
% \includegraphics[width=1cm]{beamer-skel/img/logo-ecologie.png}~ %\includegraphics[width=1cm]{beamer-skel/img/logo_en.png}~
\hspace{120pt} %\hspace{120pt}
\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~ \includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~
\hspace{113pt} %\hspace{113pt}
\includegraphics[width=1cm]{beamer-skel/img/logo_en.jpg}~ %\includegraphics[width=1cm]{beamer-skel/img/logo_en.png}~
} }
\begin{document} \begin{document}
% Page de titre
% Page de titre \begin{frame}
\begin{frame} \titlepage
\titlepage \end{frame}
\end{frame}
\section{Introduction} \section{Introduction}
\begin{frame}{Plan} \begin{frame}{Plan}
@ -91,28 +91,15 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/commun/00-intro} \include{modules_EOLE_envole/commun/00-intro}
\include{modules_EOLE_envole/commun/01-nouveaute23} %\include{modules_EOLE_envole/commun/01-nouveaute23}
\include{modules_EOLE_envole/commun/01-nouveaute24} %\include{modules_EOLE_envole/commun/01-nouveaute24}
\section{Panorama des modules} %\include{modules_EOLE_envole/commun/01-nouveaute25}
\begin{frame}{Plan} %\include{modules_EOLE_envole/commun/01-nouveaute26}
\begin{columns}[t] \include{modules_EOLE_envole/commun/01-nouveaute27}
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/amon/00-description}
\include{modules_EOLE_envole/sphynx/00-description}
\include{modules_EOLE_envole/scribe/00-description}
\include{modules_EOLE_envole/horus/00-description}
\include{modules_EOLE_envole/amonecole/00-description}
\include{modules_EOLE_envole/tronc-commun-1/00-panorama-module}
\section{Les quatre phases} \section{Rappel fonctionnement plateforme MSE}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
\begin{column}{5cm} \begin{column}{5cm}
@ -123,12 +110,14 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/commun/02-quatre_phases} \include{mse/00-fonctionnement-mse}
\include{modules_EOLE_envole/scribe/00-virtualbox} \include{mse/01-services-et-repartition}
\include{modules_EOLE_envole/commun/02-quatre_phases-pratique} \include{mse/02-reseaux}
\include{modules_EOLE_envole/tronc-commun-1/01-config-texte} \include{mse/03-architecture-de-production}
\include{mse/04-serveur-supervision}
\include{mse/05-zephir-mse}
\section{Administration commune} \section{Architecture détaillée}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
\begin{column}{5cm} \begin{column}{5cm}
@ -139,20 +128,18 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/commun/02-instance-reconfigure} \include{mse/details/01-dns}
\include{modules_EOLE_envole/commun/03-mise-a-jour} \include{mse/details/01-dns-2}
\include{modules_EOLE_envole/commun/04-diagnose} \include{mse/details/02-redis}
\include{modules_EOLE_envole/commun/04-diagnose-pratique} \include{mse/details/03-mariadb}
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs} \include{mse/details/04-nfs-drbd}
%\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs-pratique} \include{mse/details/05-ldap}
\include{modules_EOLE_envole/tronc-commun-1/06-firewall} \include{mse/details/06-OpenNebula}
\include{modules_EOLE_envole/tronc-commun-1/06-schedule} \include{mse/details/06-OpenNebula-HA}
\include{modules_EOLE_envole/tronc-commun-1/06-zpratique} \include{mse/details/06-OpenNebula-Sunstone}
%\include{modules_EOLE_envole/tronc-commun-1/07-onduleur} \include{mse/details/06-OpenNebula-Gluster}
%\include{modules_EOLE_envole/tronc-commun-1/07-onduleur-pratique}
\include{modules_EOLE_envole/tronc-commun-1/08-trouver}
\section{GNU/Linux} \section{Personnalisation du serveur EOLE}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
\begin{column}{5cm} \begin{column}{5cm}
@ -163,13 +150,10 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/tronc-commun-1/20-gnu_linux} \include{modules_EOLE_envole/tronc-commun-2/01-personnalisation-creole}
\include{modules_EOLE_envole/tronc-commun-1/20-tcpdump-tshark} \include{modules_EOLE_envole/tronc-commun-2/01-personnalisation-creole2}
\include{modules_EOLE_envole/tronc-commun-1/20-ziptraf}
\include{modules_EOLE_envole/tronc-commun-1/21-lire-ecrire}
\include{modules_EOLE_envole/tronc-commun-1/22-commande-distance}
\section{Sauvegarde} \section{Application Zéphir}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
\begin{column}{5cm} \begin{column}{5cm}
@ -180,9 +164,10 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/scribe/20-sauvegarde} \include{modules_EOLE_envole/tronc-commun-2/02-zephir}
%\include{modules_EOLE_envole/tronc-commun-2/03-zephir_script}
\section{Poste de travail} \section{Procédure d'urgence}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
\begin{column}{5cm} \begin{column}{5cm}
@ -193,9 +178,48 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/scribe/10-windows-distance} \include{mse/procedure/01-bdd}
\include{modules_EOLE_envole/scribe/12-machine-diagnostic} \include{mse/procedure/02-ldap}
\include{modules_EOLE_envole/scribe/14-esu-diagnostic} \include{mse/procedure/03-one-glusterfs}
\include{mse/procedure/03-one-glusterfs-2}
\include{mse/procedure/03-one-glusterfs-3}
\include{mse/procedure/03-one-glusterfs-4}
\include{mse/procedure/03-one-glusterfs-5}
\section{Le serveur de supervision}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{mse/details/10-comptes-utilisateurs}
\include{mse/details/11-journaux}
\include{mse/details/12-sauvegardes}
\include{mse/details/13-monitoring-alertes}
\section{Les Mises à jours de la plateforme}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
% FIXME
%slide a faire
% - procéder : ouverture de ticket, mise en accord entre le CNOUS et Cadoles pour une coupure potentielle, planning des maj fait jusque fin 2021 qui donne la nature des MAJ, les machines impactés et la dates estimées de la MAJ
% - balabla zephir (juste un rappel zéphir a été vu en long en large et en travers lors de la première session)
% - Ansible (montrer les playbook, les découpages, et la procédure de MAJ via ansible
\subject{Talks} \subject{Talks}
\begin{frame} \begin{frame}

View File

@ -20,19 +20,21 @@
\usepackage{hyperxmp} \usepackage{hyperxmp}
\hypersetup{% \hypersetup{%
colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone, colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone,
pdftitle={Formation interne TC1}, pdftitle={Tronc commun 1},
pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu}, pdfkeywords={distribution, GNU, linux, eole, éducation, nationale, ubuntu},
pdfauthor={Emmanuel Garette}, pdfauthor={Emmanuel Garette},
pdflang={fr-FR}, pdflang={fr-FR},
pdfcopyright={Copyright © 2011-2014 Cadoles}, % Nécessite XeTeX pdfcopyright={Copyright © 2011-2016 Cadoles},
pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}, pdflicenseurl={http://creativecommons.org/licenses/by-nc-sa/2.0/fr/},
} }
%\usecolortheme{crane} %\usecolortheme{crane}
\definecolor{UniBlue}{RGB}{83,121,180} \definecolor{UniBlue}{RGB}{83,121,180}
\definecolor{CadolesBlue}{RGB}{7,142,181}
\definecolor{CleanWhite}{RGB}{255,255,255} \definecolor{CleanWhite}{RGB}{255,255,255}
\setbeamercolor{title}{fg=UniBlue} \definecolor{DirtyWhite}{RGB}{105,105,105}
\setbeamercolor{frametitle}{fg=CleanWhite} \setbeamercolor{title}{fg=CadolesBlue}
\setbeamercolor{structure}{fg=UniBlue} \setbeamercolor{frametitle}{fg=CadolesBlue}
\setbeamercolor{structure}{fg=CadolesBlue}
\newcommand{\eolesmall}{ \newcommand{\eolesmall}{
\begin{minipage}[c]{0.10\textwidth} \begin{minipage}[c]{0.10\textwidth}
\includegraphics[width=1cm]{beamer-skel/img/logo-eole.png} \includegraphics[width=1cm]{beamer-skel/img/logo-eole.png}
@ -42,13 +44,13 @@
\newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}} \newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}}
%\setmonofont[Scale=0.86]{Andale Mono} %\setmonofont[Scale=0.86]{Andale Mono}
%\usepackage{colortab} %\usepackage{colortab}
\newcommand{\commande}[1]{\texttt{#1}}
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner02.png}}
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner01.png}} \title[]{Formation EOLE}
\subtitle{Formation personnalisée Tronc-commun-1 \& architecture MSE}
\title[]{Formation interne tronc commun 1} \author[Equipe Auteur]{Cadoles Formation}
\subtitle{Formation interne}
\author[Equipe Auteur]{Vincent FEBVRE}
\institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}} \institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}}
@ -65,11 +67,11 @@
} }
\logo{ \logo{
% \includegraphics[width=1cm]{beamer-skel/img/logo-ecologie.png}~ %\includegraphics[width=1cm]{beamer-skel/img/logo_en.png}~
\hspace{120pt} %\hspace{120pt}
\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~ \includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~
\hspace{113pt} %\hspace{113pt}
\includegraphics[width=1cm]{beamer-skel/img/logo_en.jpg}~ %\includegraphics[width=1cm]{beamer-skel/img/logo_en.png}~
} }
\begin{document} \begin{document}
@ -89,12 +91,30 @@
\end{column} \end{column}
\end{columns} \end{columns}
\end{frame} \end{frame}
\include{modules_EOLE_envole/commun/00-intro} \include{modules_EOLE_envole/commun/00-intro}
\include{modules_EOLE_envole/commun/01-nouveaute23} %\include{modules_EOLE_envole/commun/01-nouveaute23}
%\include{modules_EOLE_envole/commun/01-nouveaute24}
%\include{modules_EOLE_envole/commun/01-nouveaute25}
\include{modules_EOLE_envole/commun/01-nouveaute26}
\include{modules_EOLE_envole/commun/01-nouveaute27}
\section{Panorama des modules}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/amon/00-description} \include{modules_EOLE_envole/amon/00-description}
\include{modules_EOLE_envole/sphynx/00-description} \include{modules_EOLE_envole/sphynx/00-description}
\include{modules_EOLE_envole/scribe/00-description} \include{modules_EOLE_envole/scribe/00-description}
\include{modules_EOLE_envole/horus/00-description} \include{modules_EOLE_envole/horus/00-description}
\include{modules_EOLE_envole/amonecole/00-description}
\include{modules_EOLE_envole/tronc-commun-1/00-panorama-module} \include{modules_EOLE_envole/tronc-commun-1/00-panorama-module}
\section{Les quatre phases} \section{Les quatre phases}
@ -110,8 +130,9 @@
\end{frame} \end{frame}
\include{modules_EOLE_envole/commun/02-quatre_phases} \include{modules_EOLE_envole/commun/02-quatre_phases}
\include{modules_EOLE_envole/scribe/00-virtualbox} \include{modules_EOLE_envole/scribe/00-virtualbox}
\include{modules_EOLE_envole/commun/02-gen_config}
\include{modules_EOLE_envole/commun/02-quatre_phases-pratique} \include{modules_EOLE_envole/commun/02-quatre_phases-pratique}
\include{modules_EOLE_envole/tronc-commun-1/01-config-texte} %\include{modules_EOLE_envole/tronc-commun-1/01-config-texte}
\section{Administration commune} \section{Administration commune}
\begin{frame}{Plan} \begin{frame}{Plan}
@ -129,13 +150,14 @@
\include{modules_EOLE_envole/commun/04-diagnose} \include{modules_EOLE_envole/commun/04-diagnose}
\include{modules_EOLE_envole/commun/04-diagnose-pratique} \include{modules_EOLE_envole/commun/04-diagnose-pratique}
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs} \include{modules_EOLE_envole/tronc-commun-1/05-conteneurs}
\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs-pratique} %\include{modules_EOLE_envole/tronc-commun-1/05-conteneurs-pratique}
\include{modules_EOLE_envole/tronc-commun-1/06-firewall} \include{modules_EOLE_envole/tronc-commun-1/06-firewall}
\include{modules_EOLE_envole/tronc-commun-1/06-schedule} \include{modules_EOLE_envole/tronc-commun-1/06-schedule}
\include{modules_EOLE_envole/tronc-commun-1/06-zpratique} \include{modules_EOLE_envole/tronc-commun-1/06-zpratique}
\include{modules_EOLE_envole/tronc-commun-1/07-onduleur} \include{modules_EOLE_envole/tronc-commun-1/07-onduleur}
\include{modules_EOLE_envole/tronc-commun-1/07-onduleur-pratique} \include{modules_EOLE_envole/tronc-commun-1/07-onduleur-pratique}
\include{modules_EOLE_envole/tronc-commun-1/08-trouver} \include{modules_EOLE_envole/tronc-commun-1/08-trouver}
\include{modules_EOLE_envole/commun/08-info_internet}
\section{Interfaces d'administration EOLE} \section{Interfaces d'administration EOLE}
\begin{frame}{Plan} \begin{frame}{Plan}
@ -151,21 +173,6 @@
\include{modules_EOLE_envole/tronc-commun-1/30-ead} \include{modules_EOLE_envole/tronc-commun-1/30-ead}
\include{modules_EOLE_envole/tronc-commun-1/31-interface-semi-graphique} \include{modules_EOLE_envole/tronc-commun-1/31-interface-semi-graphique}
\section{GNU/Linux}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-1/20-gnu_linux}
\include{modules_EOLE_envole/tronc-commun-1/21-lire-ecrire}
\include{modules_EOLE_envole/tronc-commun-1/22-commande-distance}
\section{Application Zéphir 1} \section{Application Zéphir 1}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
@ -179,6 +186,22 @@
\end{frame} \end{frame}
\include{modules_EOLE_envole/tronc-commun-1/10-application-zephir} \include{modules_EOLE_envole/tronc-commun-1/10-application-zephir}
\section{GNU/Linux}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{modules_EOLE_envole/tronc-commun-1/20-gnu_linux}
\include{modules_EOLE_envole/tronc-commun-1/20-tcpdump-tshark}
\include{modules_EOLE_envole/tronc-commun-1/21-lire-ecrire}
\include{modules_EOLE_envole/tronc-commun-1/22-commande-distance}
\section{Application Zéphir 2} \section{Application Zéphir 2}
\begin{frame}{Plan} \begin{frame}{Plan}
\begin{columns}[t] \begin{columns}[t]
@ -192,6 +215,27 @@
\end{frame} \end{frame}
\include{modules_EOLE_envole/tronc-commun-1/11-application-zephir2} \include{modules_EOLE_envole/tronc-commun-1/11-application-zephir2}
\section{Fonctionnement plateforme MSE}
\begin{frame}{Plan}
\begin{columns}[t]
\begin{column}{5cm}
\tableofcontents[sections={1-6},currentsection, hideothersubsections]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={7-12},currentsection,hideothersubsections]
\end{column}
\end{columns}
\end{frame}
\include{mse/00-fonctionnement-mse}
\include{mse/01-services-et-repartition}
\include{mse/02-reseaux}
\include{mse/03-architecture-de-production}
\include{mse/04-serveur-supervision}
\include{mse/05-zephir-mse}
%FIXME a revoir !
%\include{modules_EOLE_envole/tronc-commun-1/99-migration-zephir}
\subject{Talks} \subject{Talks}
\begin{frame} \begin{frame}
\frametitle{Licence} \frametitle{Licence}

View File

@ -23,7 +23,6 @@
\begin{frame} \begin{frame}
\frametitle{Modules supplémentaires disponibles en 2.7.1} \frametitle{Modules supplémentaires disponibles en 2.7.1}
\framesubtitle{Un peu de science-fiction}
\begin{itemize} \begin{itemize}
\item Eclair \item Eclair
\item Horus (HorusAD) \item Horus (HorusAD)

View File

@ -0,0 +1,57 @@
\begin{frame}
\frametitle{Fonctionnement général}
\begin{itemize}
\item<1> Plateforme avec une forte résilience ;
\item<1-2> Séparation en 3 activités :
\begin{itemize}
\invisible<1>{\item portail (étudiants et administrateurs) ;}
\invisible<1>{\item services web partenaire (AGLAE, ParcoursSup, CitéU ...) ;}
\invisible<1>{\item fournisseur d'identité.}
\end{itemize}
\item<1> Utilisation des données sur 3 ressources différentes ;
\item<1> Composition d'une entité ;
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fonctionnement général}
\begin{itemize}
\item Utilisation des données sur 3 ressources différentes :
\begin{itemize}
\item une base de donnée ;
\item un annuaire LDAP ;
\item un espace NFS.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fonctionnement général}
\begin{itemize}
\item Une entité MSE se compose de :
\begin{itemize}
\item 1 répartiteur de charge ;
\item 1 file d'attente ;
\item 12 portails ;
\item 1 serveur de base de données ;
\item 1 serveur d'annuaire ;
\item 1 serveur de cache ;
\item 2 serveurs DNS ;
\item 2 serveurs fournisseur d'identité ;
\item 2 serveurs fournisseur de service.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Répartition des services}
\begin{itemize}
\item Hébergement sur le réseau NUO ;
\item Se compose de 12 serveurs physiques répartis comme suit :
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Répartition des services}
\includegraphics[width=10cm]{mse/img/repartition_serveurs.png}
\end{frame}

View File

@ -0,0 +1,75 @@
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Répartiteurs de charge HAProxy :
\begin{itemize}
\item 2 machines physiques mse-haproxy-a et mse-haproxy-b ;
\item VIP (Virtual IP) entre les deux serveurs afin de bénéficier d'une tolérance de panne ;
\item solution fiable et robuste ;
\item assure le routage de traffic HTTP vers les portails et les SP.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Portails et WebServices
\begin{itemize}
\item consommation essentiellement de mémoire vive ;
\item une session représente 15 Mo de mémoire ;
\item 24 portails déployés pour assumer une charge importante ;
\item 23 portails avec 16 Go de RAM et 1 portail avec 20 Go (mse-p-portal-01) ;
\item 24 portails répartis sur 4 Worker (serveur de virtualisation) nommés :
\begin{itemize}
\item mse-p-worker-a1 ;
\item mse-p-worker-a2 ;
\item mse-p-worker-b1 ;
\item mse-p-worker-b2.
\end{itemize}
\item portails uniques accueillant FrontOffice, BackOffice et Webservices.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Base de données
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Fichiers
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Passerelle SMTP
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Service Provider
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Service IDP
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Services et répartition}
\begin{itemize}
\item Service LDAP
\end{itemize}
\end{frame}

23
mse/02-reseaux.tex Normal file
View File

@ -0,0 +1,23 @@
\begin{frame}
\frametitle{Les réseaux}
\begin{itemize}
\item Un réseau 10Gb/s dit NUO ;
\begin{itemize}
\item réseau principal pour l'applicatif ;
\item transit traffic HTTP/HTTPS nécessaire aux portails.
\end{itemize}
\item Un réseau 10Gb/s dit BDD ;
\begin{itemize}
\item réseau dédié exclusivement à la communication entre l'applicatif et les BDD ;
\end{itemize}
\item Un réseau 10Gb/s dit Réplication.
\begin{itemize}
\item réseau dédié :
\begin{itemize}
\item à la mise en grappe des machines ;
\item aux réplications ;
\item aux espaces de stockage partagés.
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,4 @@
\begin{frame}
\frametitle{L'architecture de production}
\includegraphics[width=10cm,height=8cm]{mse/img/archi-full.png}
\end{frame}

View File

@ -0,0 +1,71 @@
\begin{frame}
\frametitle{Le Serveur de supervision}
\begin{itemize}
\item mse-p-supervision est accessible depuis NUO en ssh sur le port 22 et 888 en externe ;
\item accessibilité aux autres machines simplifiée (ssh + nomMachineDestination) ;
\item Il regroupe plusieurs services :
\begin{itemize}
\item la gestion des comptes utilisateurs ;
\item les journaux des différents services/applicatifs ;
\item le système de sauvegarde ;
\item le monitoring et les alertes.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Les comptes utilisateurs}
\begin{itemize}
\item Créés via des playbook Ansible ;
\item Accréditation en fonction des besoins ;
\item comptes nominatifs privilégiés afin de respecter les préconnisations de l'ANSI et les recommandations RGPD.
\item procédure de changement de mot de passe.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Les journaux}
\begin{itemize}
\item Remontée automatique sur le serveur de supervision ;
\item Transfert en quasi temps réel ;
\item Accessible au utilisateur via "/var/log/rsyslog/remote/nom\_machine" ;
\item Journaux conservés pendant 1 an et 4 jours pour Haproxy et IDP (permet l'identification d'un utilisateur).
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Les sauvegardes}
\begin{itemize}
\item utilisation des mécanismes de sauvegardes et de restauration EOLE avec BareOS ;
\item sauvegardes envoyées sur le directeur (mse-p-supervision) ;
\item le directeur fait office de stockage ;
\item contiennent les configurations des serveurs, les données applicatives (BDD, LDAP, ...) ;
\item la BDD est sauvegardée via l'outil de sauvegarde de MariaDB (optimisé pour ces actions) ;
\item extraction des services également en local :
\begin{itemize}
\item le ldiff de l'annuaire OpenLDAP se situe sur la machine mse-p-ldap-a ;
\item les extractions des fichiers de base de données sur mse-p-bdd-a2.
\end{itemize}
\item archivage à plus long terme sur un NAS situé à Grenoble.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Monitoring et alertes}
\begin{itemize}
\item collecte et archive des statistiques via Promethéus ;
\item Grafana est utilisé pour la mise en forme des statistiques (DashBoard) ;
\item interface accessible via l'url http://mse-supervision.nuonet.fr:3000 ;
\item accès à l'interface via des comptes nominatifs ;
\item interface unique pour la surveillance de la PROD et de la PréPROD ;
\item alerte directement par courriel via l'outils AlertManager ;
\item les alertes pour le moment disponibles :
\begin{itemize}
\item espace disque est supérieur à 80\% d'occupation ;
\item mémoire dépasse le seuil de 80\% d'utilisation ;
\item utilisation trop élevée du CPU ;
\item température trop élevée des CPU.
\end{itemize}
\item Possibilité de créer d'autres alertes personnalisées.
\end{itemize}
\end{frame}

19
mse/05-zephir-mse.tex Normal file
View File

@ -0,0 +1,19 @@
\begin{frame}
\frametitle{Le Serveur de déploiement Zéphir}
\begin{itemize}
\item utilité de Zéphir dans le contexte MSE :
\begin{itemize}
\item facilite le déploiement des configurations ;
\item surveillance des modules EOLE ;
\item gestion centralisée de configuration ;
\item l'adaptation sous forme de variantes ;
\item la gestion par groupes ;
\item la préparation de la migration ;
\item la surveillance des serveurs inscrits ;
\item l'envoi de fichiers et exécution d'actions à distance.
\end{itemize}
\item serveurs physiques et virtuels sont enregistrés sur le serveur Zéphir ;
\item installation des paquets additionnels (non présents sur une Eolebase 2.7.0 dans notre cas) se fait également via ce serveur ;
\item Zéphir est une machine virtuelle hébergée par le CROUS de Dijon ;
\end{itemize}
\end{frame}

22
mse/details/01-dns-2.tex Normal file
View File

@ -0,0 +1,22 @@
\begin{frame}
\frametitle{Les serveurs DNS}
\begin{itemize}
\item Utilités des serveurs DNS :
\begin{itemize}
\item permettre de résoudre bdd.lan ;
\item permettre de résoudre replication.lan ;
\item exemple : ldap.replication.lan
\end{itemize}
\item Répartition :
\begin{itemize}
\item mse-p-dns-a1 et mse-p-dns-a2 destinés aux VMs hébergées sur worker-a* ;
\item mse-p-dns-b1 et mse-p-dns-b2 destinés aux VMs hébergées sur worker-b* ;
\end{itemize}
\item Pas de différence de configuration entre toutes les VMs des différents hyperviseurs :
\begin{itemize}
\item par exemple :
 \item une machine qui interroge ldap.replication.lan depuis un worker-a* arrive sur mse-p-ldap-a ;
 \item une machine qui interroge ldap.replication.lan depuis un worker-b* arrive sur mse-p-ldap-b ;
\end{itemize}
\end{itemize}
\end{frame}

18
mse/details/01-dns.tex Normal file
View File

@ -0,0 +1,18 @@
\begin{frame}
\frametitle{Les serveurs DNS}
\begin{itemize}
\item serveurs physiques et virtuels ont une adresse IP sur le réseau NUO et disposent donc d'un nom de domaine en nom\_machine.in.nuonet.fr distribué par le serveur DNS du CROUS.
\item Mise en place des serveurs DNS en machines virtuelles pour :
\begin{itemize}
\item faciliter le fonctionnement interne des machines sur le réseau BDD ;
\item faciliter le fonctionnement interne des machines sur le réseau Réplication ;
\end{itemize}
\item Chaque hyperviseur héberge un serveur DNS ;
\begin{itemize}
\item mse-p-dns-a1 (DNS primaire) ;
\item mse-p-dns-a2 (DNS secondaire) ;
\item mse-p-dns-b1 (DNS primaire) ;
\item mse-p-dns-b2 (DNS secondaire) ;
\end{itemize}
\end{itemize}
\end{frame}

25
mse/details/02-redis.tex Normal file
View File

@ -0,0 +1,25 @@
\begin{frame}
\frametitle{Les serveurs Redis}
\begin{itemize}
\item Serveurs de cache utilisés par les portails et la file d'attente.
\begin{itemize}
\item Stockage des tickets de sessions
\item Stockage des données de comptage
\end{itemize}
\item Chaque entitée héberge un serveur Redis ;
\begin{itemize}
\item mse-p-redis-a (primaire) ;
\item mse-p-redis-b (secondaire) ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Redis commandes utiles}
\begin{itemize}
\item systemctl status redis
\item systemctl stop redis
\item systemctl start redis
\item redis-cli
\end{itemize}
\end{frame}

View File

@ -0,0 +1,28 @@
\begin{frame}
\frametitle{La Grappe BDD}
\begin{itemize}
\item 3 Serveurs serveurs physiques.
\item 2 machines virtuelles.
\begin{itemize}
\item Stockage des données sur les serveurs physiques
\item Les machines virtuelles sont des arbitres.
\end{itemize}
\item Chaque entitée héberge un arbitre mariadb ;
\begin{itemize}
\item mse-p-arb-a;
\item mse-p-arb-b;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{MariaDB commandes utiles}
\begin{itemize}
\item systemctl status mariadb
\item systemctl stop mariadb ( !!! Procédure longue +5min)
\item systemctl start mariadb ( !!! Procédure longue +5min)
\item mysql
\item mariadbPwd (commande EOLE)
\item mysql -u root -p -e "SHOW STATUS LIKE 'wsrep\_cluster\_size'" ( taille de la grappe)
\end{itemize}
\end{frame}

View File

@ -0,0 +1,46 @@
\begin{frame}
\frametitle{Le serveur NFS}
\begin{itemize}
\item Serveurs de partage de fichiers.
\begin{itemize}
\item Stockage des données dans un volume DRBD répliqué sur 2 serveurs
\end{itemize}
\item Chaque entitée héberge un volume DRBD ;
\begin{itemize}
\item mse-p-bdd-a1 (primaire) ;
\item mse-p-bdd-b1 (secondaire) ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Commandes DRBD}
\begin{itemize}
\item systemctl status/stop/start drbd
\item cat /proc/drbd
\item drbdadm
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Le service NFS}
\begin{itemize}
\item systemctl status/stop/start nfs-kernel-server
\item exportfs
\item mount/umount
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Basclue des service NFS/DRBD}
\begin{itemize}
\item /usr/share/eole/sbin/bascule_nfs
\begin{itemize}
\item Sur le primaire : /usr/share/eole/sbin/bascule_nfs BACKUP BACKUP BACKUP
\item Sur le secondaire : /usr/share/eole/sbin/bascule_nfs MASTER MASTER MASTER
\item Sur le secondaire : systemctl restart nfs-kernel-server
\end{itemize}
\item Le volume est monté sur le secondaire
\item exportfs list l'export NFS
\end{itemize}
\end{frame}

20
mse/details/05-ldap.tex Normal file
View File

@ -0,0 +1,20 @@
\begin{frame}
\frametitle{Le service LDAP}
\begin{itemize}
\item Serveurs physiques d'annuaire.
\item Chaque entitée dispose d'un serveur LDAP ;
\begin{itemize}
\item mse-p-ldap-a (master) ;
\item mse-p-ldap-b (master) ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Commandes OpenLDAP}
\begin{itemize}
\item systemctl status/stop/start slapd
\item ldapsearch
\item ldapvi
\end{itemize}
\end{frame}

View File

@ -0,0 +1,11 @@
\begin{frame}
\frametitle{OpenNebula et Glusterfs}
\begin{itemize}
\item 3 Datastores hébergés dans un volume glusterfs;
\begin{itemize}
\item datastore "system" : Stockage des images des machines virtuelles en fonctionnement ;
\item datastore "images" : Stockage des images disque ;
\item datastore "iso" : Stockage des images de CDROM/DVD (iso) ;
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,25 @@
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item Vocabulaire OpenNebula HA :
\begin{itemize}
\item Zone: Regroupement de serveurs OpenNebula;
\item Cluster: Regroupement de d'hyperviseurs (hosts);
\item Hosts: Serveur hyperviseurs de virtualisation;
\item Leader: Noeud maitre de la grappe à l'instant T;
\item follower: Noeud membre de la grappe à l'instant T;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item OpenNebula HA les commandes utiles:
\begin{itemize}
\item onezone
\item onehost
\item onecluster
\end{itemize}
\end{itemize}
\end{frame}

View File

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{OpenNebula Sunstone}
\begin{itemize}
\item Interace Web à OpenNebula ;
\item ... suivez le guide.
\end{itemize}
\end{frame}

View File

@ -0,0 +1,68 @@
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item 4 serveurs physiques;
\item Chaque entitée dispose de 2 noeuds de virtualisation;
\begin{itemize}
\item mse-p-worker-a1 (master) ;
\item mse-p-worker-a2 (master) ;
\item mse-p-worker-b1 (master) ;
\item mse-p-worker-b2 (node) ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item Chaque noeud utilise les logiciels suivants :
\begin{itemize}
\item KVM (Hyperviseur);
\item libVirt (Interface à l'hyperviseur) ;
\item OpenVswitch (Switch virtuel) ;
\item OpenNebula (Orchestrateur) ;
\item OpenNebula-Sunstone (Interface Web à l'orchestrateur) ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item Vocabulaire OpenNebula :
\begin{itemize}
\item Zone: Regroupement de serveurs OpenNebula;
\item Cluster: Regroupement de d'hyperviseurs (hosts);
\item Hosts: Serveur hyperviseurs de virtualisation;
\item Datastore: Espace de stockage des images;
\item Image : Image disque ou Image ISO;
\item Templates : Modèles de machines virtuelles
\item VM : Machine virtuelle (Instance de modèle de VM)
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item Attentions aux Images :
\begin{itemize}
\item Persitantes;
\item Non persitantes;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{La grappe de virtulisaiton}
\begin{itemize}
\item OpenNebula les commandes utiles:
\begin{itemize}
\item systemctl status/start/stop opennebula | opennebula-sunstone
\item onevm
\item onehost
\item onevnet
\item oneimage
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,20 @@
\begin{frame}
\frametitle{Gestion des comptes utilisateurs}
\begin{itemize}
\item Comptes crées par des recettes "ansible".
\item Les recettes sont dans le dépôt "mse-ansible" (forge Cadoles).
\item Liste des comptes dans "group_vars/<ENVIRONEMENT>"
\begin{itemize}
\item production.yml
\item pre-prod.yml
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Gestion des comptes utilisateurs}
\begin{itemize}
\item https://forge.cadoles.com/CNOUS/mse-ansible
\item https://forge.cadoles.com/CNOUS/mse-ansible/src/branch/MajWorkers
\end{itemize}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Les sauvegardes MSE}
\begin{itemize}
\item Nous ne sauvegardons que ce qui est utile.
\begin{itemize}
\item Les bases de données MSE (métier et infra);
\item L'annuaire LDAP;
\item Les journaux;
\end{itemize}
\end{itemize}
\end{frame}
\include{modules_EOLE_envole/scribe/20-sauvegarde}

View File

@ -0,0 +1,21 @@
\begin{frame}
\frametitle{Le monitoring}
\begin{itemize}
\item Prometheus collecte les indicateurs
\begin{itemize}
\item http://mse-p-supervision.in.nuonet.fr:9090/graph
\end{itemize}
\item Grafana les mets en forme et les rends lisibles.
\begin{itemize}
\item http://mse-p-supervision.in.nuonet.fr:3000
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Le monitoring}
\begin{itemize}
\item Configuration de prometheus dans "gen\_config"
\item Les tableaux de bords Grafana sont crées directement dans l'interface.
\end{itemize}
\end{frame}

BIN
mse/img/archi-full.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

37
mse/procedure/01-bdd.tex Normal file
View File

@ -0,0 +1,37 @@
\begin{frame}
\frametitle{Procédures d'urgence BDD}
\begin{itemize}
\item Relancer les BDD dans l'ordre ;
\begin{itemize}
\item mse-p-bdd-a1 ;
\item mse-p-bdd-b1 ;
\item mse-p-bdd-a2 ;
\item mse-p-arb-a ;
\item mse-p-arb-b ;
\end{itemize}
\item Attention aux temps de démarrage des démons (=~5 minutes)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Procédures d'urgence BDD}
\begin{itemize}
\item État point de montage DRBD ;
\begin{itemize}
\item /dev/drbd0 monté dans /srv/nfs sur mse-p-bdd-a1 ;
\item /dev/drbd0 n'est pas monté dans /srv/nfs sur mse-p-bdd-b1 ;
\end{itemize}
\item État de santé de DRBD.
\begin{itemize}
\item service drbd status ou cat /proc/drbd ;
\item sur mse-p-bdd-a1 :
\begin{itemize}
\item La ressource 0 doit être Primary/Secondary UpToDate/UpToDate ;
\end{itemize}
\item sur mse-p-bdd-b1 :
\begin{itemize}
\item La ressource 0 doit être Secondary/Primary UpToDate/UpToDate ;
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}

37
mse/procedure/02-ldap.tex Normal file
View File

@ -0,0 +1,37 @@
\begin{frame}
\frametitle{Procédures d'urgence LDAP}
\begin{itemize}
\item Problème LDAP observé ;
\begin{itemize}
\item Chercher quelle machine de la grappe ne sert plus le service LDAP ;
\item Chercher dans les journaux la cause potentiel de l'arrêt du service ;
\item Corriger le dysfonctionnement, activer le mode debug en cas de besoin ;
\item Vérifier l'état des VIP ;
\item Vérifier le nombre de comptes présent dans chaque annuaire ;
\item Relancer le service.
\end{itemize}
\item Réplication automatique au lancement du service.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Procédures d'urgence LDAP}
\begin{itemize}
\item Relancer les LDAP dans l'ordre ;
\begin{itemize}
\item mse-p-ldap-a ;
\item mse-p-ldap-b ;
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Procédures d'urgence LDAP}
\begin{itemize}
\item Vérifier qui est le "master" ;
\begin{itemize}
\item ip a;
\end{itemize}
\item Le master détiens la VIP ;
\end{itemize}
\end{frame}

View File

@ -0,0 +1,17 @@
\begin{frame}
\frametitle{Procédures d'urgence ONE/Glusterfs}
\begin{itemize}
\item Depuis l'interface Sunstone de la VIP (http://10.253.30.84:9000).
\item VIP == Leader ;
\item Grappe MariaDB et LDAP opérationnels
\begin{itemize}
\item Ordre de démarrage des VMs :
\begin{itemize}
\item MSE-P-DNS-A1 ;
\item MSE-P-DNS-A2 ;
\item MSE-P-DNS-B1 ;
\item MSE-P-DNS-B2 ;
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Procédures d'urgence ONE/Glusterfs}
\begin{itemize}
\item Ordre de démarrage des VMs :
\begin{itemize}
\item MSE-P-ARB-A ;
\item MSE-P-ARB-B ;
\item MSE-P-IDP-A1 ;
\item MSE-P-IDP-A2 ;
\item MSE-P-IDP-B1 ;
\item MSE-P-IDP-B2 ;
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,21 @@
\begin{frame}
\frametitle{Procédures d'urgence ONE/Glusterfs}
\begin{itemize}
\item Ordre de démarrage des VMs :
\begin{itemize}
\item MSE-P-SP-A1 ;
\item MSE-P-SP-A2 ;
\item MSE-P-SP-B1 ;
\item MSE-P-SP-B2 ;
\item MSE-P-REDIS-A ;
\item MSE-P-REDIS-B ;
\item MSE-P-Portal-01 ;
\item MSE-P-Portal-02 à MSE-P-Portal-24.
\end{itemize}
\item Se connecter sur portal-01 :
\begin{itemize}
\item Vérifier que https://idp.messervices.etudiant.gouv.fr réponde correctement ;
\item Exécuter la commande reconfigure pour la mise à niveau des portals ;
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,43 @@
\begin{frame}
\frametitle{Commandes utiles ONE/Glusterfs}
\begin{itemize}
\item s'assurer de la cohérence du cluster GlusterFS ;
\begin{itemize}
\item gluster volume heal <nomVolume> info
\item pour MSE : gluster volume heal datastore0 info
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Commandes utiles ONE/Glusterfs}
\begin{itemize}
\item Obtenir des information sur le fichier en split-brain :
\begin{itemize}
\item gluster volume heal datastore0 info split-brain
\end{itemize}
\item identifier le fichier pour lequel les opérations échouent
\item fermer les aplications du ficher en question si ce sont des VMs , mettre la vm hors tension
\item choisir la bonne copie :
\begin{itemize}
\item getfattr -d -m. -e hex <chemin-fichier-sur-brique>
\item Réinitialisez l'attribut étendu approprié sur la ou les briques contenant la «mauvaise copie» des données / métadonnées du fichier à l'aide de la commande setfattr.
\item setfattr -n <nom-attribut> -v <valeur-attribut> <chemin-fichier-sur-brick>
\item Déclenchez l'auto-réparation sur le fichier
\item ls -l <chemin-fichier-on-gluster-mount>
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Commandes utiles ONE/Glusterfs}
\begin{itemize}
\item split-brain point de montage :
\begin{itemize}
\item gluster volume info datastore0
\end{itemize}
\item si Number of bricks est différent de bricks, redémarrer le service glusterfs sur la bricks non monté
\item systemctl status glusterd.service
\item systemctl start glusterd.service
\end{itemize}
\end{frame}

View File

@ -0,0 +1,17 @@
\begin{frame}
\frametitle{Procédures d'urgence ONE/Glusterfs}
\begin{itemize}
\item s'assurer de la cohérence du cluster GlusterFS ;
\item déterminer quel nœud est le plus à jour ;
\item forcer la réplication sur les nœuds en retard ;
\item déterminer qui était le leader des 4 nœuds OpenNebula ;
\item vérifier l'intégrité des bases de données locales de ONE.
\item lorsque GlusterFS est opérationnel et les bases de données vérifiées :
\begin{itemize}
\item service opennebula sur le leader présumé avant l'interruption ;
\item vérifier la présence de la VIP sur le leader présumé ;
\item service opennebula-sunstone sur le leader présumé avant l'interruption ;
\item service opennebula sur les followers.
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -30,6 +30,7 @@
%\usepackage{color} %\usepackage{color}
\usepackage[svgnames,table]{xcolor} \usepackage[svgnames,table]{xcolor}
\usepackage{listings} \usepackage{listings}
\usepackage{lstlisting}
\usepackage{graphicx} \usepackage{graphicx}
\usepackage{hyperref} \usepackage{hyperref}
\usepackage{titlesec} \usepackage{titlesec}