Ansible permet d’indutrialiser le déploiement de logiciels et de configurations en automatisant le tout, une fois que la VM est en ligne et accessible en ssh. Saviez-vous qu’il pouvait également vous permettre de créer l’infrastructure elle-même (VM, VPS, Services…), rendant ainsi votre infrastructure réellement As-A-Code de bout en bout ? Et ce, grâce aux nombreux modules que propose Ansible.

Voici un exemple utilisant Lightsail pour déployer un VPS AWS.

Tout d’abord, vous devez avoir Ansible d’installé sur votre machine, ainsi que vos credentials AWS dans un fichier ~/aws/credentials. Le module Ansible Lightsail utilise Boto3 en arrière-plan, d’où l’appel de credentials similaire. D’ailleurs, vérifiez que boto ainsi que boto3 soient installés sur le host qui jouera le playbook.

Avant de commencer, choisissez la région et la zone de votre futur VPS, puis créez une keypair lightsail nommée « ansible-keypair ». Enfin, téléchargez-la.

Nous voici prêts à commencer. Voici le playbook que nous allons jouer:

---
- hosts: localhost
  tasks: 
    - name: "Create lightsail instance"
      lightsail:
        state: present
        name: ansible01
        region: eu-west-1
        zone: eu-west-1a
        blueprint_id: ubuntu_16_04
        bundle_id: nano_1_0
        key_pair_name: ansible_keypair
        wait_timeout: 1500
      register: ansible01

    - name: "Get public IP"
      debug:
        msg: IP is "{{ ansible01.instance.public_ip_address }}

Explications.

name, region et zone, je pense que vous avez compris seuls. Le blueprint_id est l’OS choisi pour l’instance, parmi ceux proposés par Lightsail. Le bundle_id est quant à lui le type de l’instance. key_pair_name, c’est la clef qui sera utilisée pour se connecter à la machine.

Utilisez la commande suivante pour jouer le playbook:

$ ansible-playbook playbook.yml

La task « Get public IP » utilise en fait la variable enregistrée à la tâche précédente, via l’instruction register pour récupérer la clé que l’on veut. Le playbook est idempotente, c’est à dire que si vous le jouez deux fois de suite, il verra que la VM existe déjà et ne changera rien, ni ne tombera en erreur.

Votre instance est créée.

Cet article traite un cas one-shot, mais rien ne vous empêche de télécharger la clef créée dans le dossier ssh/ de votre projet, puis de configurer ce dernier (via le fichier ssh/config et l’ansible.cfg) pour que le projet utilise cette clef, modifiez ensuite le env/inventory.ini pour y ajouter votre VM… Le début de votre IAAC est prêt 🙂

En cadeau, un playbook pour détruire l’instance:

---
- hosts: localhost
  tasks: 
    - name: "Delete lightsail instance"
      lightsail:
        state: absent
        name: ansible01
        region: eu-west-1

Lien : Doc Ansible du module Lightsail.

Catégories : ansibleaws

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *