tuto2: Update for 2024
This commit is contained in:
parent
fe69b319cc
commit
9cd77a5152
@ -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
|
||||||
|
@ -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,
|
||||||
|
2
tutorial/ansible/.gitignore
vendored
2
tutorial/ansible/.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
tutorial.pdf
|
tutorial.pdf
|
||||||
|
tutorial-2.pdf
|
||||||
|
tutorial-ansible.pdf
|
||||||
|
@ -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
|
||||||
|
@ -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 :
|
||||||
|
@ -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 à
|
||||||
|
21
tutorial/ansible/tutorial-2.md
Normal file
21
tutorial/ansible/tutorial-2.md
Normal 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
|
||||||
|
**mercredi 29 mars 2023 à 23 h 42**. 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).
|
||||||
|
...
|
@ -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}
|
||||||
|
@ -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
|
||||||
|
@ -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">
|
||||||
```
|
```
|
||||||
|
@ -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
|
||||||
|
@ -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" \
|
||||||
|
Reference in New Issue
Block a user