# Variáveis no Ansible: Aprenda a tirar o máximo proveito dessa funcionalidade

Olá, entusiastas do **Ansible**!

Embora eu geralmente não me apegue a ferramentas devido a experiências passadas, o **Ansible** é uma exceção notável. A economia de tempo que essa ferramenta poderosa me proporcionou é imensurável, e posso afirmar que devo a ela boa parte dos meus momentos produtivos e tempo de vida. 😅

Hoje vamos explorar o uso das variáveis no **Ansible** para tornar os nossos playbooks mais flexíveis e dinâmicos.

### **Começando com Variáveis Básicas**

Inicialmente, vamos entender a definição básica de uma variável no contexto do **Ansible**. O exemplo abaixo ilustra um playbook simples que define uma variável para criar um usuário.

```yaml
---
- hosts: your_target
  vars:
    username: user
  tasks:
    - name: Criando um novo usuário
      user:
        name: "{{ username }}"
        state: present
```

Neste trecho, *username* é definido como *user* e é usado para criar um novo usuário em todos os hosts definidos em *your\_target*.

### **Expandindo com Variáveis Externas**

Mas e se quisermos modificar o *username* sem alterar o playbook? As variáveis externas entram em cena para proporcionar essa flexibilidade:

```bash
ansible-playbook -i your_inventory_file playbook.yml -e "username=newuser"
```

Aqui, o valor de *username* é sobrescrito para *newuser* durante essa execução específica do playbook, proporcionando um alto grau de reusabilidade para nossos scripts.

### **Explorando Fatos do Ansible**

**Fatos** ou **Facts** no Ansible são informações sobre os hosts remotos que o Ansible adquire antes de executar tarefas. Eles podem ser usados para implementar lógicas condicionais nos playbooks. Confira o exemplo a seguir:

```yaml
---
- hosts: your_target
  tasks:
    - name: Exibindo o hostname
      debug:
        msg: "O hostname é {{ ansible_hostname }}"
```

O valor `{{ ansible_hostname }}` é um **fato** que exibirá o nome do host durante a execução do playbook.

### **Utilizando Registros**

O Ansible permite armazenar os resultados de uma tarefa em uma variável para usar em tarefas futuras. Vamos ver como isso funciona:

```yaml
---
- hosts: your_target
  tasks:
    - name: Criando usuário
      user:
        name: another_user
        state: present
      register: user_creation_result

    - name: Exibindo resultado da criação do usuário
      debug:
        msg: "A saída da tarefa anterior é: {{ user_creation_result }}"
```

O output da tarefa de criação do usuário é armazenado na variável *user\_creation\_result* e pode ser usado em tarefas subsequentes.

Este post é dedicado a guiá-lo na utilização de variáveis no **Ansible**, garantindo que você esteja bem preparado para acompanhar minhas próximas publicações, que explorarão cenários mais práticos.

Referências:

[https://docs.ansible.com/ansible/latest/playbook\_guide/playbooks\_variables.html](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html)  
[https://spacelift.io/blog/ansible-variables](https://spacelift.io/blog/ansible-variables)
