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 messagerie smtp.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