Aller au contenu

Variables

Dans Ansible, vous pouvez définir des variables dans un fichier séparé et les inclure dans vos playbooks. Cela permet de séparer la logique de votre playbook des valeurs spécifiques des variables, ce qui facilite la gestion et la réutilisation des variables.

Voici comment vous pouvez définir des variables dans un fichier et les utiliser dans un playbook Ansible :

Étape 1 : Créer un fichier de variables

Créez un fichier YAML pour définir vos variables. Par exemple, créez un fichier nommé vars.yml :

# vars.yml
webserver_name: "MyWebServer"
webserver_port: 80
db_host: "localhost"
db_name: "mydatabase"
db_user: "dbuser"
db_password: "dbpassword"

Étape 2 : Inclure le fichier de variables dans votre playbook

Créez un playbook Ansible et incluez le fichier de variables en utilisant la directive vars_files. Par exemple, créez un fichier nommé site.yml :

---
- name: Deploy web application
  hosts: webservers
  become: yes
  vars_files:
    - vars.yml
  tasks:
    - name: Print webserver name
      debug:
        msg: "Webserver name is {{ webserver_name }}"

    - name: Print webserver port
      debug:
        msg: "Webserver port is {{ webserver_port }}"

    - name: Print database host
      debug:
        msg: "Database host is {{ db_host }}"

    - name: Print database name
      debug:
        msg: "Database name is {{ db_name }}"

    - name: Print database user
      debug:
        msg: "Database user is {{ db_user }}"

    - name: Print database password
      debug:
        msg: "Database password is {{ db_password }}"

Étape 3 : Exécuter le playbook

Exécutez le playbook avec la commande ansible-playbook :

ansible-playbook -i inventory.ini site.yml

Explications

  • vars_files : Cette directive permet d'inclure des fichiers de variables dans votre playbook. Vous pouvez spécifier plusieurs fichiers de variables si nécessaire.
  • {{ variable_name }} : Cette syntaxe est utilisée pour référencer les variables définies dans le fichier de variables.

Exemple complet

Voici un exemple complet avec un fichier d'inventaire, un fichier de variables, et un playbook :

Fichier d'inventaire (inventory.ini)

[webservers]
your_target_machine ansible_host=your_target_machine_ip ansible_user=your_username ansible_ssh_private_key_file=/path/to/your/private/key

Fichier de variables (vars.yml)

webserver_name: "MyWebServer"
webserver_port: 80
db_host: "localhost"
db_name: "mydatabase"
db_user: "dbuser"
db_password: "dbpassword"

Playbook (site.yml)

---
- name: Deploy web application
  hosts: webservers
  become: yes
  vars_files:
    - vars.yml
  tasks:
    - name: Print webserver name
      debug:
        msg: "Webserver name is {{ webserver_name }}"

    - name: Print webserver port
      debug:
        msg: "Webserver port is {{ webserver_port }}"

    - name: Print database host
      debug:
        msg: "Database host is {{ db_host }}"

    - name: Print database name
      debug:
        msg: "Database name is {{ db_name }}"

    - name: Print database user
      debug:
        msg: "Database user is {{ db_user }}"

    - name: Print database password
      debug:
        msg: "Database password is {{ db_password }}"

En suivant ces étapes, vous pouvez facilement gérer et réutiliser des variables dans vos playbooks Ansible.