Guide du navigateur: Configuration initiale de l’environnement

[.Remarque]##

Note: il s'agit d'une version préliminaire du contenu du guide du navigateur, une offre des ingénieurs des solutions DigitalOcean. L'objectif du livre est d'aider les clients commerciaux à planifier leurs besoins en infrastructure, à fournir des exemples pratiques en cours de route et à inclure des nuances techniques et le «pourquoi» qui permet de prendre certaines décisions mieux que d'autres.

Le livre et le code qui l'accompagne seront accessibles au public dans un référentiel GitHub. Comme il s'agit d'une version anticipée, le livre n'est pas encore terminé et le référentiel n'est pas encore public, mais restez à l'écoute!

C'est la première partie pratique du livre.

Dans un premier temps, nous passerons en revue les outils que nous allons utiliser, leur association et leur utilité potentielle lorsque vous commencez à créer et à gérer votre infrastructure sur DigitalOcean. Après cela, nous allons configurer un seul Droplet que nous utiliserons en tant que contrôleur pour exécuter et utiliser le reste de nos outils.

Notre ceinture à outils

Nous utiliserons principalementTerraform,Ansible,terraform-inventory etGit.

Terraform

Terraform est un outil open-source qui vous permet de décrire facilement votre infrastructure sous forme de code. Cela signifie que vous pouvez contrôler les versions de vos ressources de la même manière que si vous écriviez un programme, ce qui vous permet de revenir à un état de fonctionnement en cas d'erreur.

Terraform utilise une syntaxe déclarative (HCL) conçue pour être facile à comprendre pour les humains et les ordinateurs. HCL vous permet de planifier la révision de vos modifications et gère automatiquement les dépendances d'infrastructure pour vous.

Nous utiliserons Terraform pourcreate notre infrastructure - c'est-à-dire pour créer des gouttelettes, des adresses IP flottantes, des pare-feu, des volumes de stockage en bloc et des équilibreurs de charge DigitalOcean - mais nous ne l'utiliserons pas pour ceux Ressources. C’est là que Ansible entre en scène.

Si vous souhaitez en savoir plus sur Terraform, nous vous recommandons quelques ressources:

Ansible

Ansible est un outilconfiguration management qui vous permet de gérer systématiquement les modifications d'un système de manière à maintenir son intégrité au fil du temps. La bibliothèque de modules standard d’Ansible est très étendue et son architecture vous permet également de créer vos propres plugins.

Les playbooks Ansibles sont des fichiers YAML qui définissent l'automatisation que vous souhaitez gérer. Comme Terraform, vous pouvez contrôler la version de vos playbooks. Contrairement à Terraform, un changement de configuration d'une ressource ne nécessite pas la destruction et la recréation de cette ressource. Ansible pousse les configurations vers votre infrastructure.

Ansible utilise des connexions SSH, vous n’avez donc pas besoin d’installer un agent sur les nœuds cibles pour l’utiliser. Cependant, cela signifie que Ansible doit savoir à quels terminaux se connecter, ce qui est généralement défini avec un fichier d'inventaire. Parce que nous utilisons Terraform pour le déploiement et que l'état de votre infrastructure est conservé dans un fichier, nous allons utiliser terraform-inventory pour alimenter de manière dynamique la liste des machines cibles d'Ansible.

Des playbooks compatibles appellent les modules pour apporter des modifications à la configuration ou exécuter des commandes. Il existe de nombreux modules intégrés à Ansible pour contrôler les fournisseurs de logiciels ou cloud les plus répandus, notamment DigitalOcean. Lorsque vous travaillez dans la ligne de commande, la commandeansible-doc est un moyen simple de consulter les options et les détails des modules. Un exemple seraitansible-doc -l pour lister les modules ou appeler un module spécifique pour voir la documentation,ansible-doc digital_ocean. Les Playbooks peuvent être des packages sous forme de rôles facilitant le partage. Le référentiel public principal des rôles estAnsible Galaxy. Les exemples de code de ce livre utilisent plusieurs rôles pour appliquer des configurations.

Il est à noter que Ansible n'est pas en train de faire respecter l'état. L'exécution d'un livre de lecture n'exécutera que les commandes qu'il contient. Apporter des modifications directement aux serveurs gérés par Ansible peut avoir des conséquences inattendues.

Si vous souhaitez en savoir plus sur Ansible, nous vous recommandons quelques ressources. Red Hat est propriétaire du projet Ansible et propose des options de formation. Cela inclut une excellente classe d'introduction gratuite, ainsi que des classes plus avancées:

inventaire terraform

terraform-inventory est un script d'inventaire dynamique qui extrait les informations sur les ressources du fichier d'état de Terraform et les génère d'une manière qu'Ansible peut utiliser pour cibler des hôtes spécifiques lors de l'exécution de playbooks. Cela devient un peu plus compliqué que cela, mais le point clé est queterraform-inventory vous permet d'utiliser plus facilement Terraform et Ansible ensemble.

Git

Nous utiliserons Git comme notre système de contrôle de version. Vous n’avez pas besoin d’une connaissance approfondie de Git en particulier, mais de la compréhension decommitting changes, tracking, and cloning. Parce que nous pouvons contrôler les versions de nos fichiers Terraform et Ansible, nous pouvons exécuter des tests sur différentes versions de notre infrastructure en spécifiant une version d'un module Terraform ou d'un rôle Ansible.

Le référentiel de ce livre est hébergé surGitHub, mais vous pouvez utiliser n'importe quel service d'hébergement Git pour vos propres déploiements, tel que GitHub,GitLab ouBitbucket.

Outils optionnels

L'utilitaire CLI DigitalOcean,doctl, est souvent utile pour accéder rapidement à votre compte via l'API pour créer ou récupérer des informations sur les ressources. Vous pouvez trouver des instructions pour configurerdoctl dansthe project README et des informations d'utilisation complètes dans sesofficial documentation.

Configuration de la gouttelette de contrôleur

Notre contrôleur est le serveur que nous utiliserons pour exécuter nos outils. Nous allons utiliser un droplet Ubuntu 18.04 x64 (Bionic Beaver), que nous configurerons pour installer tous les outils nécessaires à la création du droplet.

Note: si vous êtes plus à l'aise avec un autre système d'exploitation (comme macOS sur votre ordinateur local), vous pouvez le faire à la place tant qu'il répond àAnsible’s system requirements.

Pour commencer, vous aurez besoin de:

Lorsque vous sélectionnez l'option de données utilisateur, un champ de texte s'ouvrira. User data sont des données arbitraires qu'un utilisateur peut fournir à un Droplet au moment de la création. Les données utilisateur sont utilisées par CloudInit, généralement lors du premier démarrage d'un serveur cloud, pour effectuer des tâches ou exécuter des scripts en tant qu'utilisateur root.

Nous utiliserons un script cloud-config pour installer Python 2.7,pip (un gestionnaire de packages Python), Git,zip, Terraform,terraform-inventory et Ansible.

Note: Vous pouvez également installer ce logiciel manuellement si vous préférez. Terraform etterraform-inventory sont des binaires Go qui doivent être placés dans vos$PATH. Nous vous recommandons d'installer Ansible avec Pip au lieu d'un gestionnaire de paquets système comme APT car il reste à jour et vous permet de l'installer dans unvirtualenv.

#cloud-config
# Source:  https://git.io/nav-guide-cloud-config

package_upgrade: true

packages:
  - python
  - python-pip
  - git
  - zip
  - jq

runcmd:
  - [curl, -o, /tmp/terraform.zip, "https://releases.hashicorp.com/terraform/0.11.7/terraform_0.11.7_linux_amd64.zip"]
  - [unzip, -d, /usr/local/bin/, /tmp/terraform.zip]
  - [curl, -L, -o, /tmp/terraform-inventory.zip, "https://github.com/adammck/terraform-inventory/releases/download/v0.7-pre/terraform-inventory_v0.7-pre_linux_amd64.zip"]
  - [unzip, -d, /usr/local/bin/, /tmp/terraform-inventory.zip]
  - [pip, install, -U, pip, ansible]
  - [git, clone, "https://github.com/digtialocean/navigators-guide.git"]

De là, cliquez surCreate. Droplet sera rapidement opérationnel, mais les commandes de ses données utilisateur prendront un peu de temps pour être exécuté. Vous pouvezlog into the Droplet et regarder/var/log/cloud-init-output.log pour vérifier son état.

La dernière étape consiste à créer une clé SSH pour le contrôleur Droplet. Nous le placerons plus tard sur chacun des nœuds de notre infrastructure. Vous pouvez exécuter cette procédure lorsque vous êtes connecté à votre serveur pour créer une clé et la commenter avec le nom d’hôte de votre Droplet:

ssh-keygen -t rsa -C $(hostname -f)

Vous pourrez voir la paire de clés publique et privée dans/home/your_username/.ssh/.

Et après?

Votre contrôleur Droplet est configuré, ce qui signifie que vous pouvez commencer à utiliser les outils. Dans le chapitre suivant, nous allons vous montrer comment utiliser ces outils pour créer une infrastructure hautement disponible. Ce faisant, vous constaterez la différence entre Ansible et Terraform.