tuto2: Update for 2024

This commit is contained in:
nemunaire 2023-02-28 15:10:35 +01:00
parent fe69b319cc
commit 9cd77a5152
12 changed files with 114 additions and 29 deletions

View File

@ -128,7 +128,7 @@ steps:
- tar xf /tmp/FantasqueSansMono-Normal.tar.gz -C /usr/share/fonts/fantasque-sans-mono OTF/ TTF/ --strip-component=1 - tar xf /tmp/FantasqueSansMono-Normal.tar.gz -C /usr/share/fonts/fantasque-sans-mono OTF/ TTF/ --strip-component=1
- mkdir dist - mkdir dist
- make -C tutorial/ansible - make -C tutorial/ansible
- mv tutorial/ansible/tutorial.pdf dist/tutorial-2-${DRONE_TAG##srs20??-tutorial2-}.pdf - mv tutorial/ansible/tutorial-2.pdf dist/tutorial-2-${DRONE_TAG##srs20??-tutorial2-}.pdf
- name: deploy subject - name: deploy subject
image: appleboy/drone-scp image: appleboy/drone-scp

View File

@ -24,6 +24,30 @@
\path[fill=black,draw=none] (interior.south west) rectangle node[white]{\huge\bfseries\texttt >\_} ([xshift=10mm]interior.north west); \path[fill=black,draw=none] (interior.south west) rectangle node[white]{\huge\bfseries\texttt >\_} ([xshift=10mm]interior.north west);
},#1} },#1}
\usetikzlibrary{calc}
\newtcolorbox{exercicebox}[1][parbox=false]{breakable,enhanced,
before=\hspace{.7em},after=\hspace{.5em},
tile,left=2mm,right=12mm,top=.5em,bottom=.5em,
frame code={\path[draw=Gold!85!gray,sharp corners,line width=2.5pt] (frame.north west) -- (frame.north) -- (frame.north east);}
sharp corners,
colback=white,
underlay={%
\path[fill=Gold!85!gray,draw=none] (interior.south east) rectangle node[white]{\begin{tikzpicture}
\draw[fill=white,even odd rule]
let
\n{dpt} = {360/7}
in
(0,0) circle (1.2mm) %
({\n{dpt}*(0.5)}:2.5mm) \foreach \x in {1,...,7}{ %
arc ({\n{dpt}*(\x-0.5)}:{\n{dpt}*(\x-0.25)}:2.5mm) %
--++(\x*\n{dpt}:1.5mm) %
arc ({\n{dpt}*(\x-0.25)}:{\n{dpt}*(\x+0.25)}:2.5mm) %
--++(\x*\n{dpt}:-1.5mm) %
arc ({\n{dpt}*(\x+0.25)}:{\n{dpt}*(\x+0.5)}:2.5mm)--%
({\n{dpt}*(\x+0.5)}:2.5mm)
};\end{tikzpicture}} ([xshift=-10mm]interior.north east);
},#1}
\newtcolorbox{questionbox}[1][]{breakable,enhanced, \newtcolorbox{questionbox}[1][]{breakable,enhanced,
before skip balanced=2mm,after skip balanced=3mm, before skip balanced=2mm,after skip balanced=3mm,
tile,left=11mm,right=2mm,top=1mm,bottom=1mm, tile,left=11mm,right=2mm,top=1mm,bottom=1mm,

View File

@ -1 +1,3 @@
tutorial.pdf tutorial.pdf
tutorial-2.pdf
tutorial-ansible.pdf

View File

@ -1,12 +1,15 @@
include ../pandoc-opts.mk include ../pandoc-opts.mk
SOURCES = tutorial.md setup.md maatma.md what.md vitrine.md ansible.md nameserver.md deploiement-svc.md rendu.md SOURCES_2 = tutorial-2.md setup.md maatma.md what.md vitrine.md nameserver.md
SOURCES_ANSIBLE = tutorial.md ansible.md deploiement-svc.md rendu.md
all: tutorial.pdf all: tutorial-2.pdf tutorial-ansible.pdf
tutorial.pdf: ${SOURCES} tutorial-2.pdf: ${SOURCES_2}
pandoc ${PANDOCOPTS} -o $@ $+
tutorial-ansible.pdf: ${SOURCES_ANSIBLE}
pandoc ${PANDOCOPTS} -o $@ $+ pandoc ${PANDOCOPTS} -o $@ $+
clean:: clean::
rm tutorial.pdf rm tutorial-2.pdf tutorial-ansible.pdf

View File

@ -77,9 +77,9 @@ pouvez l'ignorer pour le moment.
Notez que vous ne disposez pas d'IPv4 publique (c'est-à-dire routable sur Notez que vous ne disposez pas d'IPv4 publique (c'est-à-dire routable sur
Internet), vous disposez seulement d'une IPv6 publique. L'ensemble de vos Internet), vous disposez seulement d'une IPv6 publique. L'ensemble de vos
services sont cependant accessibles également en IPv4, car Maatma centralise services sont cependant accessibles également en IPv4, car Maatma centralise
les requêtes faites en IPv4 et les distribue entre vos IPv6, lorsque le les requêtes faites en IPv4 et les distribue entre vos IPv6, **lorsque le
protocole permet de faire cette distribution. Par exemple, HTTP et HTTPS le protocole permet de faire cette distribution**. Par exemple, HTTP et HTTPS le
permette, mais pas SSH. Vous ne pourrez donc pas vous connecter en SSH via permettent, mais pas SSH. Vous ne pourrez donc pas vous connecter en SSH via
l'IPv4 de Maatma. l'IPv4 de Maatma.
Voici un schéma reprenant ces explications : Voici un schéma reprenant ces explications :

View File

@ -12,8 +12,9 @@ possédant les caractéristiques suivantes :
permettant d'aller sur Internet. permettant d'aller sur Internet.
Le choix de la technologie de virtualisation est laissé à votre Le choix de la technologie de virtualisation est laissé à votre
appréciation. L'ISO est réputée supportée par *Hyper-V* (Windows), *qemu*/*KVM* appréciation. L'ISO est réputée supporter *Hyper-V* (Windows), *qemu*/*KVM*
(macOS, Linux, Windows) et VMware (macOS, Windows).\ (macOS, Linux, Windows), *Virtualization.Framework* (macOS) et VMware (macOS,
Windows).\
L'hyperviseur qui vous laissera le plus de liberté (et avec lequel vous pourrez L'hyperviseur qui vous laissera le plus de liberté (et avec lequel vous pourrez
apprendre le plus de choses !) est sans doute *qemu*, sous Linux ; vous pouvez apprendre le plus de choses !) est sans doute *qemu*, sous Linux ; vous pouvez
@ -46,7 +47,7 @@ Gérer le réseau de son hyperviseur
Cette section est là pour vous donner un aperçu du fonctionnement de votre Cette section est là pour vous donner un aperçu du fonctionnement de votre
installation, pour que plus jamais, vous ne puissiez vous demander «On la met installation, pour que plus jamais, vous ne puissiez vous demander «On la met
en NAT ou en Bridge la VM? », sans vraiment savoir de quoi vous parler. en NAT ou en Bridge la VM? », sans vraiment savoir de quoi vous parlez.
On vous encourage évidemment à comprendre les éléments présentés et à tester On vous encourage évidemment à comprendre les éléments présentés et à tester
par vous-même avec `qemu`, mais tous les hyperviseurs fonctionnent de la même par vous-même avec `qemu`, mais tous les hyperviseurs fonctionnent de la même
@ -86,7 +87,7 @@ nombre d'interfaces physiques existantes.
Concrètement, l'opération est assez fastidieuse à réaliser à la main, car cela Concrètement, l'opération est assez fastidieuse à réaliser à la main, car cela
demande de détacher le périphérique (via demande de détacher le périphérique (via
<span lang="en-US">`/sys/bus/pci/devices/0000:03:00.0/driver/unbind`</span>, <span lang="en-US">`/sys/bus/pci/devices/0000:03:00.0/driver/unbind`</span>,
par exemple pour une carte `enp0s3`) ; avant de l'assigner à notre machine par exemple pour une carte `enp0s3`), avant de l'assigner à notre machine
virtuelle : virtuelle :
<div lang="en-US"> <div lang="en-US">
@ -189,8 +190,8 @@ machine hôte sur ce réseau virtuel.
Il est tout à fait possible d'ajouter une interface réseau physique à un pont, Il est tout à fait possible d'ajouter une interface réseau physique à un pont,
et c'est sans doute la méthode la plus simple pour que les machines virtuelles et c'est sans doute la méthode la plus simple pour que les machines virtuelles
puissent accéder à internet : si le réseau local de la machine hôte fournie des puissent accéder à Internet (si le réseau local de la machine hôte fournit des
adresses IP par DHCP à toute machine rejoignant le réseau. adresses IP par DHCP à toute machine rejoignant le réseau).
Lorsque le pont existe, `qemu` peut créer l'interface virtuelle et l'assigner à Lorsque le pont existe, `qemu` peut créer l'interface virtuelle et l'assigner à

View File

@ -0,0 +1,21 @@
---
title: Administration Linux avancée -- TP n^o^ 2
subtitle: "Maatma : l'hébergeur DIY"
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
institute: EPITA
date: Jeudi 2 mars 2023
abstract: |
Durant ce deuxième TP, nous allons préparer un serveur pour réponde à des
services classiques d'Internet. Nous appréhenderons le fonctionnement des
noms de domaine et des certificats TLS, au travers de Maatma, votre
hébergeur.
\vspace{1em}
Ce TP est la partie découverte du 1er projet qui sera à rendre pour le
**mercredi29mars 2023 à 23h42**. Nous verrons au prochain TP comment
automatiser toutes les étapes d'aujourd'hui grâce à Ansible. Vous serez notés
d'une part sur votre avancement dans les étapes de ce TP, et également sur la
qualité du rendu de l'automatisation de ces mêmes étapes, via Ansible (que
l'on verra au prochain TP).
...

View File

@ -3,9 +3,9 @@ title: Administration Linux avancée -- TP n^o^ 2
subtitle: "Maatma : l'hébergeur DIY" subtitle: "Maatma : l'hébergeur DIY"
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps} author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
institute: EPITA institute: EPITA
date: Mercredi 9 mars 2022 date: Jeudi 16 mars 2023
abstract: | abstract: |
Durant ce deuxième TP, nous allons apprendre à déployer des services sur un Durant ce troisième TP, nous allons apprendre à déployer des services sur un
serveur, de manière industrielle ! serveur, de manière industrielle !
\vspace{1em} \vspace{1em}

View File

@ -14,7 +14,7 @@ Internet, et renforcez cela au moyen d'un pare-feu (`iptables` ou
Faites le tour des configurations afin de vous assurer qu'elles sont Faites le tour des configurations afin de vous assurer qu'elles sont
suffisamment durcies. Pensez à noter vos changements, vous devrez les suffisamment durcies. Pensez à noter vos changements, vous devrez les
reporter dans un fichiers au chapitre suivant ! reporter dans un fichier au prochain TP !
À ce stade, vous devez suivre les recommandations de l'ANSSI que vous À ce stade, vous devez suivre les recommandations de l'ANSSI que vous
jugez adaptées à votre déploiement : jugez adaptées à votre déploiement :
@ -26,13 +26,21 @@ Ma première vitrine
Sur le domaine `login-x.adlin2024.example.tld`, déployez une vitrine Sur le domaine `login-x.adlin2024.example.tld`, déployez une vitrine
d'entreprise basique. Vous n'allez pas déployer tout un Wordpress, mais un d'entreprise basique. Vous n'allez pas déployer tout un Wordpress, mais un
simple lot de pages HTML ... générées avec Hugo. simple lot de pages HTML ... générées avec Hugo.
::::: {.exercice}
Vous aurez pour cela besoin d'un serveur web, dont le choix est laissé à votre Vous aurez pour cela besoin d'un serveur web, dont le choix est laissé à votre
discrétion. discrétion.
:::::
::::: {.exercice}
Vous pouvez utiliser les services de [Let's Encrypt](https://letsencrypt.org/) Vous pouvez utiliser les services de [Let's Encrypt](https://letsencrypt.org/)
pour obtenir un certificat TLS.\ pour obtenir un certificat TLS.
:::::
::::: {.warning} ::::: {.warning}
@ -40,8 +48,8 @@ Compte tenu [des limitations
imposées](https://letsencrypt.org/docs/rate-limits/), vous ne pourrez pas tous imposées](https://letsencrypt.org/docs/rate-limits/), vous ne pourrez pas tous
en créer un aujourd'hui, mais n'hésitez pas à retenter un peu plus tard dans la en créer un aujourd'hui, mais n'hésitez pas à retenter un peu plus tard dans la
semaine. Vous pouvez également obtenir vos certificats depuis de nombreux semaine. Vous pouvez également obtenir vos certificats depuis de nombreux
autres services gratuits similaire : [ZeroSSL](https://zerossl.com/), autres services gratuits similaires : [ZeroSSL](https://zerossl.com/),
[buypass](https://www.buypass.com/), ...\ [buypass](https://www.buypass.com/), ...\
D'ailleurs, si vous disposez de votre propre nom de domaine et que vous D'ailleurs, si vous disposez de votre propre nom de domaine et que vous
souhaitez l'utiliser pour ce TP, vous pouvez suivre les instructions dans souhaitez l'utiliser pour ce TP, vous pouvez suivre les instructions dans

View File

@ -9,6 +9,8 @@ Accéder à la machine virtuelle
Une fois la machine virtuelle démarrée, vous pouvez vous y connecter en `root` Une fois la machine virtuelle démarrée, vous pouvez vous y connecter en `root`
avec le mot de passe `adlin2024`. avec le mot de passe `adlin2024`.
::::: {.more}
Vous pouvez également démarrer en mode *single user*, mais comme votre disque Vous pouvez également démarrer en mode *single user*, mais comme votre disque
n'est sans doute pas encore utilisable à ce stade, vous ne pourrez pas changer n'est sans doute pas encore utilisable à ce stade, vous ne pourrez pas changer
le mot de passe `root`. Vous pourrez néanmoins effectuer les étapes de le mot de passe `root`. Vous pourrez néanmoins effectuer les étapes de
@ -18,6 +20,8 @@ Lorsque vous avez accès à la ligne de commande du *bootloader*, vous pouvez
généralement ajouter l'option `init=/bin/sh` à la ligne de commande du noyau, généralement ajouter l'option `init=/bin/sh` à la ligne de commande du noyau,
afin de lancer un shell au lieu du système d'init habituel. afin de lancer un shell au lieu du système d'init habituel.
:::::
Se mettre à l'aise Se mettre à l'aise
------------------ ------------------
@ -56,9 +60,13 @@ de personnes susceptibles de s'y connecter pour l'administrer[^whysudo].
permet également de pouvoir retracer, via les journaux, qui a réalisé permet également de pouvoir retracer, via les journaux, qui a réalisé
quelles opérations. quelles opérations.
::::: {.exercice}
Utilisez `adduser(8)` pour vous créer votre propre compte, et au minimum Utilisez `adduser(8)` pour vous créer votre propre compte, et au minimum
`passwd(1)` pour lui définir un mot de passe. `passwd(1)` pour lui définir un mot de passe.
:::::
C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre
choix pour administrer votre machine virtuelle ! choix pour administrer votre machine virtuelle !
@ -81,16 +89,23 @@ d'administrateur. Utilisez :
administrateur ; administrateur ;
- `sudoedit` : pour éditer un fichier avec les droits administrateurs. - `sudoedit` : pour éditer un fichier avec les droits administrateurs.
Après avoir installé le paquet, vous devrez ajouter les utilisateurs autorisés ::::: {.exercice}
à se servir de `sudo` dans le groupe `sudo` ou `wheel` (en fonction des
distributions). Vous pouvez également définir des conditions plus précise en Après avoir installé le paquet `sudo`, vous devrez ajouter les utilisateurs
éditant le fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour autorisés à se servir de `sudo` dans le groupe `sudo` ou `wheel` (en fonction
éditer ce fichier).\ des distributions).
:::::
Vous pouvez également définir des conditions plus précises en éditant le
fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour éditer ce
fichier).\
::::: {.code} ::::: {.code}
**Super astuce !** votre terminal rit encore de vous, affichant `Permission **Super astuce !** si vous oubliez de préfixer votre commande par `sudo`, vous
Denied` car vous avez oublié de préfixer votre commande par `sudo` ? essayez : allez obtenir une erreur `Permission Denied`. Vous n'êtes pas obligés de
recopier la commande, utilisez :
<div lang="en-US"> <div lang="en-US">
``` ```

View File

@ -21,6 +21,17 @@ function Div(el)
el.content, el.content,
pandoc.RawBlock("latex", "\\end{codebox}")) pandoc.RawBlock("latex", "\\end{codebox}"))
elseif el.classes[1] == "exercice"
then
-- insert element in front
table.insert(
el.content, 1,
pandoc.RawBlock("latex", "\\noindent\\begin{exercicebox}"))
-- insert element at the back
table.insert(
el.content,
pandoc.RawBlock("latex", "\\end{exercicebox}"))
elseif el.classes[1] == "question" elseif el.classes[1] == "question"
then then
-- insert element in front -- insert element in front

View File

@ -6,7 +6,7 @@ PANDOCOPTS = --pdf-engine=lualatex \
-M fontsize=12pt \ -M fontsize=12pt \
-M papersize=a4 \ -M papersize=a4 \
-M mainfont="Linux Libertine" \ -M mainfont="Linux Libertine" \
-M monofont="FantasqueSansMono" \ -M monofont="Inconsolata" \
-M sansfont="Linux Biolinum" \ -M sansfont="Linux Biolinum" \
-M colorlinks=true \ -M colorlinks=true \
-M linkcolor="black" \ -M linkcolor="black" \