# sre

# Introduction

Ce site répertorie les connaissances utiles au métier de SRE : Linux, Git, automatisation, réseaux, observabilité, Kubernetes... C'est ma base de connaissances personnelle, pensée comme un mémo.

J'écris ces articles en français parce que c'est plus naturel pour moi. C'est aussi une façon de réviser certaines notions, d'en approfondir d'autres et surtout de remettre à plat des choses que j'aurais pu oublier.

J'ai commencé par définir le sommaire et créer les pages. Je les compléterai au fur et à mesure. L'avancement de chaque page est indiqué par un code couleur :

* 🟢 Terminé
* 🟠 En cours
* 🔴 Pas encore commencé

# Linux

# 🔴 Commandes de base

Les commandes pour naviguer dans l'arborescence, manipuler des fichiers, consulter l'aide, l'historique...

1. ls
2. cd
3. pwd
4. cp
5. mv
6. rm
7. mkdir
8. touch
9. cat
10. less
11. head
12. tail
13. wc
14. echo
15. which
16. type
17. man
18. help
19. --help
20. alias
21. history
22. watch
23. timeout
24. flock

# 🔴 Éditeurs de texte

Les éditeurs de texte nano et vim pour lire et modifier rapidement un fichier depuis un terminal Linux.

1. nano
2. vim

# 🔴 Système de fichiers

Les fondamentaux du système de fichiers : arborescence, liens symboliques et physiques, inodes, stat...

1. fhs
   - /proc
   - /dev
2. types de fichiers
3. symlink
4. hardlink
5. inodes
6. stat

# 🔴 Manipulation de texte

Les outils en ligne de commande pour lire, filtrer, transformer, rechercher, comparer, trier du texte...

1. pipes
2. redirections
3. /dev/null
4. tee
5. grep
6. regex
7. sed
8. awk
9. sort
10. uniq
11. cut
12. tr
13. diff
14. xargs
15. find
    - find -exec (vs xargs)
16. jq

# 🔴 Bash

Les bases du scripting bash : variables, arguments, structures de contrôle, fonctions, bonnes pratiques...

1. shebang
2. variables
3. quoting
4. variables d'environnement
   - PATH
5. variables spéciales
6. arguments de script
   - $1
   - shift
   - getopts
7. expansion de paramètres
   - ${var:-défaut}
8. tableaux
9. exit codes
10. conditions
11. boucles
12. fonctions
13. substitution de commande
14. here-doc
15. set -euo pipefail
16. trap
17. shellcheck
18. fichiers d'init
    - .bashrc
    - .profile
    - shell login vs non-login

# 🔴 Utilisateurs & permissions

Les utilisateurs, les groupes, les permissions d'accès aux fichiers et répertoires, les droits sudo...

1. utilisateurs
2. useradd
3. usermod
4. groupes
5. groupadd
6. /etc/passwd
7. /etc/shadow
8. /etc/group
9. id
10. passwd
11. su
12. chmod
13. chown
14. umask
15. setuid
16. setgid
17. sticky bit
18. sudo
19. acl
20. attributs
    - chattr
21. who
22. w
23. last

# 🔴 Processus

Le suivi, le contrôle et le débogage des processus d'un système Linux, de leur lancement à leur arrêt...

1. processus
2. ps
3. top
4. htop
5. états
   - R
   - S
   - D
   - Z
6. signaux
7. kill
   - pgrep
   - pkill
8. jobs
9. nohup
10. tmux
11. priorités
    - nice
12. lsof
13. file descriptors
    - /proc/<pid>/fd
    - ulimit -n
    - /etc/security/limits.conf
    - LimitNOFILE= (unit systemd)
14. /proc/<pid>
15. strace
16. cgroups
17. namespaces

# 🔴 Systemd & services

La gestion des services avec systemd : unités, timers, tâches planifiées, redémarrage automatique, dépannage...

1. systemctl
2. unit files
3. drop-ins
   - systemctl edit
4. Restart=
5. targets
6. timers
7. cron
8. crontab
9. systemd-analyze

# 🔴 Logs

Les logs système : où les trouver, comment les consulter, les filtrer, comment gérer leur rotation...

1. /var/log
2. journald
3. journalctl
4. rsyslog
5. logrotate
6. niveaux de sévérité
7. dmesg

# 🔴 Ressources & performance

Le suivi de l'utilisation du CPU, de la mémoire et du disque pour diagnostiquer un système sous tension...

1. uptime
2. load average
3. cpu
4. ram
5. free
6. swap
7. oom killer
8. vmstat
9. iostat
10. sar
11. iowait
12. perf

# 🔴 Stockage & disques

Le stockage : partitionnement, montage, fstab, systèmes de fichiers, LVM, extension de volumes, RAID...

1. lsblk
2. fdisk
3. systèmes de fichiers
4. ext4
5. xfs
6. mount
7. fstab
8. uuid
9. blkid
10. df
11. du
12. inodes saturés
    - df -i
13. lvm
14. extension d'un volume
    - lvextend
    - resize2fs
    - xfs_growfs
15. fichiers supprimés qui occupent de l'espace
    - lsof +L1
16. raid
17. luks

# 🔴 Réseau

Le diagnostic réseau, de la simple connectivité à la résolution DNS : ports, connexions, certificats TLS...

1. ip
2. ss
3. ping
4. traceroute
5. mtr
6. curl
7. dig
8. dns
9. /etc/nsswitch.conf
10. /etc/hosts
11. /etc/resolv.conf
12. systemd-resolved
    - resolvectl
13. ports
14. tcp
15. udp
16. cidr
17. nc
18. tcpdump
19. openssl s_client
20. certificats
    - expiration

# 🔴 SSH

SSH : connexion, authentification par clés, tunnels, accès via bastion, bonnes pratiques de configuration...

1. ssh
2. clés ssh
3. authorized_keys
4. ~/.ssh/config
   - ProxyJump
5. ssh-agent
6. tunnels
7. scp
8. sshd_config

# 🔴 Pare-feu & sécurité de base

Configurer un pare-feu et appliquer les premiers réflexes de durcissement sur un serveur Linux exposé.

1. firewall
2. iptables
3. nftables
4. ufw
5. moindre privilège
6. durcissement ssh
7. mises à jour de sécurité
8. services inutiles
9. apparmor

# 🔴 Gestion des paquets

Les paquets sous Debian et Ubuntu avec apt : installation, mises à jour, dépôts, gel de versions, GPG...

1. apt
2. dpkg
3. dépôts
4. gpg
5. pinning
   - apt-mark hold

# 🔴 Archivage & compression

L'archivage, la compression et la synchronisation de fichiers entre plusieurs machines : tar, gzip, rsync.

1. tar
2. gzip
3. rsync

# 🔴 Démarrage & noyau

Identifier un serveur (distribution, noyau, matériel) et comprendre son démarrage : boot, GRUB, rescue...

1. /etc/os-release
2. hostnamectl
3. lscpu
4. uname
5. séquence de boot
6. grub
7. mode rescue
8. lsmod
9. sysctl

# 🔴 Heure & NTP

La gestion de l'heure système et sa synchronisation avec un serveur NTP via chrony ou systemd-timesyncd.

1. date
2. timedatectl
3. fuseau horaire
4. chrony
5. systemd-timesyncd

# 🔴 Dépannage & diagnostic

Une méthode et des scénarios types pour diagnostiquer un incident Linux, de la détection à la résolution.

1. méthode
   - reproduire
   - isoler
   - corriger
2. service qui ne démarre pas
3. serveur lent
4. disque plein
5. plus de mémoire
6. problème réseau

# Git

placeholder

# Automatisation

# 🔴 SaltStack

placeholder

# 🔴 Ansible

placeholder

# 🔴 StackStorm

placeholder