Exercices Ansible Linux
Portée et buts des exercices
La portée de ces exercices est celle du RHCSA.
Les outils essentiels :
- 1.3. Utiliser des expressions grep et régulières pour analyser du texte
- 1.6. Archiver, compresser, décompacter et décompresser des fichiers, à l’aide de tar, star, gzip et bzip2
- 1.7. Créer et éditer des fichiers texte
- 1.8. Créer, supprimer, copier et déplacer des fichiers et des répertoires
- 1.9. Créer des liens physiques et symboliques
- 1.10. Répertorier, définir et modifier des autorisations ugo/rwx standard
- 3.10. Transférer en toute sécurité des fichiers entre des systèmes
Gérer des groupes et utilisateurs système
- 8.1. Créer, supprimer et modifier des comptes utilisateur locaux
- 8.2. Modifier les mots de passe et ajuster la durée de validité des mots de passe pour les comptes utilisateur locaux
- 8.3. Créer, supprimer et modifier des groupes locaux et des appartenances de groupe
- 8.4. Configurer l’accès super-utilisateur
- 5.4. Créer et configurer des répertoires Set-GID pour la collaboration
- 9.2. Créer et utiliser des access control lists sur les fichiers
- 9.3. Configurer l’authentification basée sur une clé pour SSH
Le but de ces exercices est de concevoir des projets Ansible basés sur trois composants minimum contenu dans un dossier sous forme de fichiers :
- un fichier d’inventaire
- un fichier de configuration
- du code Ansible
Le code Ansible peut se présenter sous différentes formes :
- de script Bash appelant des tâches ad-hoc
- de livre de jeu composé de tâches
- de livre de jeu qui inclut ou qui importe des fichiers de tâches
- de livre de jeu qui appelle des rôles conçus sur les livres de jeu précédents
L’inventaire peut être conçu sous différentes formes aussi :
- de fichier unique
- d’inventaire organisé par convention
- de script dynamique
- en ajout dynamique d’hôtes
La gestion des secrets est aussi une contrainte des exercices.
Scénario Utilisateur et groupe
Gérer des utilisateurs et des groupes
En tant que gestionnaire d’une infrastructure, il vous est demandé de concevoir un projet Ansible qui :
- crée un utilisateur “lambda” pour un client (un webmaster qui a besoin d’un accès à la ressource) et un groupe du même nom, avec l’UID et le GID compris entre 3000 et 3999.
- génère une clé privée dans son profil
- sudoer pour les commandes “systemctl * httpd”
Partons du principe que l’OS cible est un Centos 8.
Modules à disposition :
package
user
group
lineinfile
authorized_key
fetch
file
archive
-
mail
avec comme serveur de messageriesmtp.gmail.com:587
Construction des données :
- Données du clients (fichier : nom, adresse)
- Données de la ressource (inventaire, nom d’hôte, paramètres de connexion, approvisionnement)
- Données des tâches (jeu / rôle, substitution, paramètres par défaut)
- Données dynamiques (adresse IP, capacités de la machine mise à disposition, …)
Optimisations :
- Multi-OS
- Conversion en “role”
- Protection Ansible-Vault
- Intégration à un approvisionnement Terraform
Transmettre les accès
- envoie un courriel avec les informations de connexion à l’adresse du client associé à l’hôte
- envoie la clé privée en formats “pem” (openssh) et/ou ppk (putty) en attachment, en format zip
- place l’adresse du formateur en CC: pour livraison finale de l’exercice
Droits de partage
- Créer un utilisateur alpha et beta avec comme groupe principal leur nom.
- Une politique de mot de passe : une obligation de le changer à la prochaine connexion avec un âge maximum et une période d’inactivité de 30 jours et d’une longueur minimale de 12 caractères (chercher sur “Password Quality Checking”).
- Créer avec un dossier appartenant au groupe “omega”.
- Le dossier est partagé par deux utilisateurs “alpha” et “beta” appartenant au groupe secondaire “omega”.
- Ce dossier partagé est accessible via leur dossier d’accueil en tant que lien symbolique.
- Ces utilisateurs peuvent lire le contenu du dossier partagé et ajouter ou modifier des fichiers. Fixer le “sticky bit” et le “SGID” sur ce dossier en démontrant leur utilité.
- En options :
- Retirer à ces utilisateurs les droits d’accès à une console graphique.
- Désactiver le compte de “beta” (plusieurs solutions)
Audit des utilisateurs
…
Services Web
LAMP + application (Wordpress, Drupal) + HTTPS
- Apache HTTPD avec générateur statique + configuration proxy
- Varnish
- PHP
- MySQL
- Memcached
#requirements.yml
---
roles:
- name: firewall
- name: repo-epel
- name: varnish
- name: apache
- name: php
- name: php-mysql
- name: php-memcached
- name: mysql
- name: memcached