Cours 8.1 Flashcards
What’s an environment?
An environment (or infrastructure) is a set
of computing resources sufficient to execute a
software system, including all of the supporting
software, data sets, network communications, and
defined external entities necessary to execute
the software system.
What’s cloud computing?
Cloud computing is a model for
enabling ubiquitous, convenient, ondemand
network access to a shared pool of
configurable computing resources (e.g., networks,
servers, storage, applications, and services) that
can be rapidly provisioned and released with
minimal management effort or service
provider interaction.
Quelles sont les activités de gestion de l’environnement (Rapport avec DevOps)?
- Concevoir les environnements
- Maintenir les environnements
- Déboger les environnements
- Surveiller les environnements
- Tester les environnements
- Installer les environnements
- Sécuriser les environnements
- Gérer des incidents d’opération
- Mettre à jour les environnements
Quels sont les enjeux pour l’implémentation des opérations de gestion d’environnement?
- Garantir la cohérence entre différents environnements
- Mise à jour massive de tous les environnements
- Configuration manuelle d’un environnement est fastidieuse et sujette aux erreurs
- Documenter l’environnement et les changements faits
- Traçabilité du développement à l’environnement et vice-versa
- Fiabilité des environnements
Qu’est-ce qu’“infrastructure as code”?
Infrastructure-as-code is the approach to defining computing and network infrastructure through source code that can then be treated just like any software system. Such code can be kept in source control to allow auditability and reproducible builds, subject to testing practices, and the full discipline of Continuous Delivery. [Martin Fowler]
Comment garantir la cohésion des versions des dépendances installées?
fichier Gemfile.lock est généré et contient les noms et les versions exacts installés. Ce fichier permet de “geler” (lock) les versions installées et utiliser les mêmes versions dans tous les environnements MÊME PRINCIPE QUE LE PACKAGELOCK.JSON
Que requier la décision de geler les dépendances?
La décision de geler ou pas une dépendance requiert la collaboration entre les Dev et les Ops étant donné que c’est une tâche délicate.
(De plus on attend avant de mettre à jour l’environnement vers les dernières versions d’une dépendance, de plus haut le risque que des APIs essentiels auront changé et requerront des changements intrusifs dans le code source.)
Quelles sont les caractéristiques essentielles des langages IaC?
- Abstraction des serveurs dans des groupes virtuels (définition faite dans fichier séparé “inventory”)
- Modèle “push” : Ansible fait ses actions via ssh d’une machine centrale.
- Modèle “pull” requiert des agents sur chaque machine contrôlé qui téléchargent régulièrement des mises-à-jour.
- Programmation déclarative: On veut que la dernière version de HTTP soit installée du répertoire yum = état désiré. -> Ansible sait comment obtenir cet état si pas actuel.
- Indempotent: L’effet d’exécuter une tâche ou play une fois == l’effect de l’exécuter 2, 3, 4 … fois.
- Pas indempotent : chaque exécution change le contenu de /srv/dmesg
Quelles sont d’autres caractéristiques importantes d’Ansible?
• 3 types de spécifications:
1. scripts (“playbooks” en Ansible)
2. fichiers de données à déployer ou manipuler par les scripts
3. des fichiers template (Jinja2 en Ansible) pour customiser des
fichiers
• collection automatique de “faits” sur les hosts au niveau matériel et
OS
• stockage encrypté des données confidentielles (Ansible Vault)
Que font les plateformes de gestion d’infrastructures?
• surveillent la consommation de ressources de chaque
conteneur ou machine virtuelle, ainsi que les ressources
physiquement ou virtuellement disponibles
• automatiquement créent plus d’instances des conteneurs ou
machines virtuelles basé sur des seuils de consommation, ou
par exemple pour certains types d’utilisateurs ou ressources
• également des instances peuvent être enlevées ou même
migrées vers d’autres serveurs
• peuvent automatiquement faire des releases en suivant les
stratégies de release préférées (blue-green, etc.)