# ESTIAM-Theory
# WorkShop-Linux-1
## System and Services
- ### System Start :
- boot
- firmware initialization
- execution of a boot loader
- loading and startup of a Linux kernel image
- execution of various :
- startup scripts :
- init-style
- daemons :
- systemd
- upstart
- examples of bootloaders :
- GRUB
- LILO
- SYSLINUX
- Loadlin
- grub *grand unified bootloader*
- [wiki](https://fr.wikipedia.org/wiki/GNU_GRUB)
- kernel
- free & open-source
- monolithic
- linux API kernel
- System Call Interface of the Linux kernel
- subroutines in the GNU C Library
---
- ### Reboot after a crash
- boot in rescue mode
- > Find the line that starts with word “linux” and add the following line at the end of that line (To reach the end, just press CTRL+e or use END key or LEFT/RIGHT arrows in your keyboard):
- > systemd.unit=rescue.target
- > 
- [sysVinit](https://wiki.debian.org/fr/SysVInit)
- > Tout les scripts exécutés lors de l'initialisation du système sont situés dans :
- /etc/init.d.
- /etc/rc?.d (? = S, 0..6) contiennent des liens symboliques vers ces scripts.
- Ces scripts sont nommés de la manière suivante :
- S pour "S"tart/début
- K pour "K"ill/arrêt
- [upStart](https://doc.ubuntu-fr.org/upstart)
---
- runlevels :
- > Run Levels in Linux. A run level is a state of init and the whole system that defines what system services are operating. Run levels are identified by numbers. Some system administrators use run levels to define which subsystems are working, e.g., whether X is running, whether the network is operational, and so on.
- services :
- determine which services are started at boot
- > service --status-all
- > chkconfig --list | grep '3:on'
- manage :
- systemctl :
- status
- enable
- disable
- start
- stop
---
- opening session mechanisms :
- PAM, Pluggable Authentification Modules *Authenticate Users
- Name Service Switch, manage sources who are feeding the list of thoses types of data, *who can be* :
- users
- domains name
- alias email
- port number corelation with services
---
- shutdown
---
- [basic administration](https://www.linode.com/docs/tools-reference/linux-system-administration-basics/)
---
- ### manage users and groups
- list groups:
- > groupmod <HIT TAB 3 TIMES>
- add user to group
- > sudo adduser USERNAME GROUPNAME
- verify
- > id USERNAME
- uid=1000(USERNAME) gid=1001(USERNAME) groups=1001(USERNAME),998(wheel),991(lp),3(sys),90(network),98(power),1000(autologin),966(libvirt)
---
- [linux-permissions](https://doc.ubuntu-fr.org/permissions)
---
- [shadow-password](http://www.math.univ-toulouse.fr/~grundman/linux/HOWTO/mini/Shadow-Password-2.html)
---
- [pam-auth](https://artisan.karma-lab.net/petite-introduction-a-pam)
---
- [config-users-account](https://www.it-connect.fr/le-repertoire-etcskel-sous-linux%EF%BB%BF/)
---
Configuration du système : "/etc/sysconfig" et "/etc/default".
- /etc/sysconfig
- [system-configuration](http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-fr-4/ch-sysconfig.html)
- /etc/default
- > Basically, /etc/default contains some parameters that the end user or administrator is likely to change, rather than embedding the values in the actual boot scripts. In this way, changes will persist even if you upgrade the package and the boot script is replaced.
- > In Debian, /etc/default/ is a directory of mostly empty files. The way it is meant to work is that each /etc/init.d/test script first sources /etc/default/test before starting/stopping the test service. The purpose of the file is to provide extra options for starting the service, or override certain aspects of the service's startup.
---
- [cron](https://doc.ubuntu-fr.org/cron)
---
- pratical-work :
- create-server
- configure ssh
- activate service
- generate ssh key
- limit
- create user account for ssh
- connect to another pc virtual machine
---
Gestion des disques
---
Les disques Linux : les disques SATA, SCSI, SAS, virtuels.
---
Les unités de stockage USB.
---
Les partitions primaires et la partition étendue d'un disque.
---
L'ajout d'un disque, partitionnement avec fdisk.
---
Gestion du swap primaire et secondaire.
---
LVM : sécurité et évolutivité, mise en œuvre.
---
Les méta-disques RAID.
---
Travaux pratiques : Mise en oeuvre d'un Volume Group.
---
Performances et gestion des logs
---
La gestion des performances : les ressources à surveiller.
---
Surveiller le système avec les bonnes commandes (top, free, vmstat...).
---
Les traces : l'audit du système, méthodes et usages.
---
Acquisition, centralisation et rotation des logs.
---
Les rapports logwatch.
---
Travaux pratiques : Surveillance des ressources. Manipulation avec top, vmstat, iostat.
---
Intégration dans le réseau existant, la sécurité
---
Les interfaces réseau : listage, chargement du pilote, et nommage.
---
Configuration manuelle (network, ifcfg-eth0...), fichiers de configuration IPv4 et IPv6.
---
Principe de configuration cliente en réseau et résolution de noms.
---
Configuration des "clients" : passerelles, DNS...
---
Mesurer et tester les performances du réseau.
---
NetFilter : le filtrage de paquets réseau.
---
Philosophie de Netfilter et syntaxe de iptables.
---
Piloter des services réseau avec le super-serveur Xinetd.
---
Travaux pratiques : Intégration dans le réseau existant, installation de drivers réseaux. Mesurer et tester les performances du réseau.
---
De la virtualisation à Docker
---
Les différents types de virtualisation.
---
La conteneurisation : LXC, namespaces, control-groups.
---
Le positionnement de Docker.
---
Docker versus virtualisation.
---
Présentation de Docker
---
L'architecture de Docker.
---
Disponibilité et installation de Docker sur différentes plateformes (Windows, Mac et Linux).
---
Création d'une machine virtuelle pour maquettage.
---
La ligne de commande et l'environnement.
---
Travaux pratiques : Créer une machine virtuelle pour réaliser un maquettage.
---
Mise en œuvre en ligne de commande
---
Mise en place d'un premier conteneur.
---
Le Docker hub : ressources centralisées.
---
Mise en commun de stockage interconteneur.
---
Mise en commun de port TCP interconteneur.
---
Publication de ports réseau.
---
Le mode interactif.
---
Travaux pratiques : Configurer un conteneur en ligne de commande.
---
Création de conteneur personnalisé
---
Produire l'image de l'état d'un conteneur.
---
Qu'est-ce qu'un fichier Dockerfile ?
---
Automatiser la création d'une image.
---
Mise en œuvre d'un conteneur.
---
Conteneur hébergeant plusieurs services : supervisor.
---
Travaux pratiques : Créer un conteneur personnalisé.
---
Mettre en œuvre une application multiconteneur
---
Utilisation Docker Compose.
---
Création d'un fichier YML de configuration.
---
Déployer plusieurs conteneurs simultanément.
---
Lier tous les conteneurs de l'application.
---
Travaux pratiques : Mettre en œuvre une application multiconteneur.
---
Interfaces d'administration
---
L'API Docker et les Web Services.
---
Interface d'administration en mode Web.
---
Héberger son propre registre : Docker Registry, Gitlab-CE...
---
Travaux pratiques : Construire et utiliser son propre registre.
---
Administrer des conteneurs en production
---
Automatiser le démarrage des conteneurs au boot.
---
Gérer les ressources affectées aux conteneurs.
---
Gestion des logs des conteneurs.
---
Sauvegardes : quels outils et quelle stratégie ?
---
Travaux pratiques : Administrer les conteneurs.
---
Orchestration et clustérisation
---
Présentation de Docker Machine.
---
L'orchestrateur Swarm : nodes, services, secrets, configs.
---
Déploiement de services et stacks dans un Swarm.
---
Reverse-proxy et load-balancer pour Web Services en cluster (Traefik...).
---
Travaux pratiques : Création d'un cluster Swarm. Gestion des nœuds dans le cluster. Publication et mise à l'échelle d'un service dans le cluster.
---