DigitalOcean est l'un des fournisseurs de machines virtuelles cloud les plus faciles à utiliser. Si vous avez besoin d'un environnement informatique rapidement provisionné, les machines virtuelles DigitalOcean deviennent généralement disponibles en moins de 60 secondes. Au lieu d'utiliser l'interface utilisateur (UI), il est souvent préférable d'automatiser.
Terraform est une infrastructure en tant que langage de code qui vous permet d'utiliser des fournisseurs, tels que DigitalOcean, pour provisionner des ressources sans utiliser l'interface utilisateur de DigitalOcen. Dans cet article, nous explorons comment utiliser Terraform pour provisionner un DigitalOcean Droplet (machine virtuelle).
Installation de Terraform
Terraform est disponible pour une multitude de plates-formes, Windows et Linux. La méthode la plus simple consiste à télécharger l'exécutable à partir du lien ci-dessous et à placer l'exécutable dans un chemin système pour permettre de le référencer de n'importe où.
https://www.terraform.io/downloads.html
Créer des clés API à partir de DigitalOcean
Pour que Terraform communique avec DigitalOcean, nous devons générer des clés API à utiliser avec le fournisseur DigitalOcean. Les étapes suivantes expliquent comment créer une nouvelle clé API spécifiquement à utiliser avec Terraform. Vous pouvez utiliser d'autres clés API, mais il est recommandé de ne pas réutiliser les clés, lorsque vous le pouvez, pour désactiver facilement l'accès si nécessaire.
- Connectez-vous au panneau de contrôle DigitalOcean.
- Accédez à la section API.
- Cliquez sur "Générer un nouveau jeton".
- Entrez un nom de jeton et accordez au jeton les privilèges de lecture et d'écriture.
- Copiez la clé API car elle ne vous sera plus affichée, nous l'utiliserons ensuite pour Terraform.
Commencer
La première étape de toute configuration Terraform consiste à initialiser une nouvelle configuration. Tout d'abord, créez un répertoire pour héberger notre configuration Terraform.
mkdir digitalocean-terraform
cd digitalocean-terraform
Ensuite, nous devons créer un digitalocean.tfvars
fichier que nous utiliserons pour conserver notre clé API que nous avons précédemment générée. Il s'agit d'une meilleure pratique, afin de ne pas coder en dur les informations d'identification. Lorsque vous utilisez le contrôle de version, ce qui est recommandé, vous pouvez ignorer tout .tfvars
fichiers, ou des fichiers spécifiques, pour vous assurer que ces informations d'identification ne sont pas stockées dans l'historique du contrôle de version.
touchez digitalocean.tfvars
Dans le digitalocean.tfvars
, nous allons créer une variable simple nommée api_token
. Cela sera utilisé plus tard dans nos scripts Terraform.
api_token = 12345123213412425
Création du fichier de ressources Droplet
Maintenant que nous avons configuré la configuration Terraform et DigitalOcean, créons notre fichier de configuration Terraform. Créer le fichier digitalocean.tf
et utilisez le code standard ci-dessous pour commencer. Pour permettre à notre configuration d'utiliser le fournisseur et les informations d'identification, nous devons lui indiquer où obtenir ces données.
variable "api_token" {
default = ""
}
fournisseur "digitalocean" {
jeton = var.api_token
}
Maintenant que notre script est configuré, nous pouvons exécuter terraform init
code, et il va maintenant créer nos métadonnées Terraform et installer les fournisseurs. Vous remarquerez que la sortie de la commande montre le fournisseur en cours de téléchargement pour utilisation. De plus, nous avons demandé à notre fournisseur d'utiliser les informations d'identification précédemment spécifiées dans le .tfvars
fichier.
Remplir les commandes Droplet
Dans ce cas, nous souhaitons provisionner une ressource de gouttelettes simple. Nous allons utiliser quelques paramètres. Nous voulons utiliser leur plan disponible le moins cher, dans le NYC1
centre de données, et ajoutez quelques options qui rendront le Droplet plus flexible à l'avenir.
- Image de gouttelettes:
ubuntu-18.04-x64
- Région:
NYC1
- Taille:
s1-vcpu1-1 Go
Maintenant que nous avons nos attributs de base, construisons une configuration Terraform pour ce droplet.
ressource "digitalocean_droplet" "web" {
image = "ubuntu-18-04-x64"
name = "test-web-vm"
region = "nyc1"
taille = "s-1vcpu-1gb"
surveillance = vrai
ipv6 = vrai
private_networking = vrai
}
Les commandes supplémentaires que nous ajoutons ici concernent la surveillance, l'ipv6 et le réseau privé. La surveillance signifie que vous disposerez de mesures, telles que le processeur et la mémoire, à partir de la console cloud DigitalOcean. Vous pouvez ensuite définir des alertes sur ces métriques, c'est donc très utile pour l'avenir. IPv6 signifie que votre droplet sera accessible à partir d'IPv6, ce qui contribue à pérenniser vos gouttelettes. Enfin, le réseautage privé signifie que votre gouttelette recevra un 10.x.x.x
adresse accessible par d'autres gouttelettes mais pas par Internet public.
Il existe une autre capacité très utile, à savoir les données utilisateur. Pour Linux, cela vous permet d'exécuter certaines commandes sur l'approvisionnement de la VM, telles que la mise à jour des packages. Nous pouvons inclure ce droit dans la configuration Terraform, en ajoutant cet attribut sur.
ressource "digitalocean_droplet" "web" {
image = "ubuntu-18-04-x64"
name = "test-web-vm"
region = "nyc1"
taille = "s-1vcpu-1gb"
surveillance = vrai
ipv6 = vrai
private_networking = vrai
user_data = "# cloud-config npackage_update: true npackage_upgrade: true"
}
Si vous commencez à faire beaucoup avec données d'utilisateur
, vous pouvez stocker les données dans un fichier YAML, puis les inclure dans la déclaration de ressource.
fichier ("user-data.yml")
Déployer le droplet
Maintenant que notre configuration Terraform est prête, déployons le droplet en exécutant le code suivant.
terraform apply -var-file = "digitalocean.tfvars
Vous remarquerez peut-être également un nouveau .tfstate
le fichier est créé. Cela capture l'état actuel que Terraform connaît pour votre environnement. Si vous tentez de déployer à nouveau cette configuration de droplet, Terraform ne le fera pas, car il sait déjà que le droplet a été créé. Si vous supprimez ce fichier, Terraform ne reconnaîtra pas que la ressource existe et tentera de la créer à nouveau.
Emballer
Comme vous pouvez le voir dans cet article, créer une ressource dans DigitalOcean via Terraform est simple et rapide. Il existe de nombreuses autres ressources que vous pouvez fournir à l'aide du fournisseur DigitalOcean.
En utilisant cette configuration comme code, vous pouvez provisionner des environnements entiers rapidement et facilement dans DigitalOcean à l'aide de Terraform. Par exemple, si vous avez besoin d'un tout nouvel environnement de développement et que vous l'avez déjà mappé dans une configuration Terraform à l'aide d'une simple commande de déploiement, vous pouvez avoir un tout nouvel environnement de développement prêt à l'emploi.
La combinaison de Terraform et de DigitalOcean permet une combinaison puissante qui non seulement protège votre infrastructure, permet le contrôle de version, mais renforce la cohérence et la sécurité.