Première partie - Terraform avec OpenStack
OK, donc c’est partit !
On va commencer avec Terraform. C’est simple, installe Terraform dans ton PATH.
Vérifie que la partie OpenStack est bien configurée.
Clone mon entrepôt Git sur ta machine :
$ git clone https://github.com/nledez/consul-laboratory.git
$ cd consul-laboratory
$ ls
README.md provision.yml terraform.tfvars-example
inventory.ini-example public-cloud-ovh.auto.tfvars-example variable.tf
main.tf requirements.yml
provider.tf scripts
Copie les fichiers d’exemple :
$ cp public-cloud-ovh.auto.tfvars-example public-cloud-ovh.auto.tfvars
$ cp terraform.tfvars-example terraform.tfvars
Maintenant, connecte-toi au manager OVH :
Comme je l’avais dit dans l’article précédent, il faut un projet public cloud avec le Vrack de connecté :
Clique sur Openstack :
Ensuite sur ajouter un utilisateur :
L’utilisateur est crée :
Note bien le mot de passe. C’est le seul moment ou il est affiché. Ensuite, impossible de le retrouver, il faudrait en générer un nouveau (juste le mot de passe).
On va maintenant créer un fichier openrc.sh
qui va contenir les paramètres openstack :
On choisi le datacenter :
On met le fichier avec les autres :
$ mv ~/Download/openrc.sh openrc.sh
# on charge les variables d'environnement (à chaque nouveau shell):
$ source openrc.sh
$ vi -p openrc.sh public-cloud-ovh.auto.tfvars
On va remplir les fichiers :
public-cloud-ovh.auto.tfvars :
"user_name" = "z9gQ4eJEhG7z"
"tenant_name" = "5898292172448309"
"password" = "AeG6gpgpEjmV9MU52H3eneP6ub74Tt3k"
User name c’est la partie de gauche dans le manager OVH. Le password, c’est la partie de droite qui va être cachée.
Le tenant_name correspond à la variable OS_TENANT_NAME
dans le fichier openrc.sh
Et moi, je met ça dans le openrc.sh :
export OS_PASSWORD="AeG6gpgpEjmV9MU52H3eneP6ub74Tt3k"
Bon, il ne faut surtout pas mettre ça sur Github et ne pas partager le fichier.
Ensuite, lance :
# Initialisation des "plugins" Terraform :
$ terraform init
# affiche le plan Terraform :
$ terraform plan
# applique les changements :
$ terraform apply
On va vérifier qu’Ansible arrive bien à générer un inventory automatiquement :
$ terraform-inventory --list terraform.tfstate | jq
{
"consul": [
"54.37.21.101",
"54.37.21.139",
"54.37.21.129"
],
"consul-client": [
"54.37.21.107"
],
"consul-client.0": [
"54.37.21.107"
],
"consul.0": [
"54.37.21.101"
],
"consul.1": [
"54.37.21.139"
],
"consul.2": [
"54.37.21.129"
],
"type_openstack_compute_instance_v2": [
"54.37.21.107",
"54.37.21.101",
"54.37.21.139",
"54.37.21.129"
]
}
Bien sûr pour que cela fonctionne, il faut installer terraform-inventory.
Maintenant test un ping des vm en acceptant les clées SSH :
$ export ANSIBLE_NOCOWS=1
$ export ANSIBLE_REMOTE_USER=ubuntu
$ export ANSIBLE_HOSTS=$(which terraform-inventory)
$ ansible --ssh-extra-args='-o StrictHostKeyChecking=no' all -m ping
# maintenant cela doit fonctionner sans le ssh-extra-args :
$ ansible all -m ping
Il parait que dans certains cas, la ligne avec le StrictHostKeyChecking=no
n’est pas indispensable. Ansible pourrait le faire tout seul. Sauf que chez moi non (et chez toi ?).
C’est maintenant la fin de cet article. Tu es peut-être triste. Mais moi fatigué. Je ferais donc la suite un autre jour :)
Je ne vais pas te laisser là quand même. Si tu veux détruire les VM pour économiser un peu de sous avant la prochaine :
$ terraform destroy
Et puis tu peux voir le screen cast sur Youtube.
Alors, je suis déçu par la qualité de cette première :
- Image crado
- Son super bas
Promis la prochaine sera meilleure !