Introducció
En aquest tema, explorarem les variables i els fets en Ansible. Les variables permeten emmagatzemar dades que poden ser utilitzades en els playbooks, mentre que els fets són informació recollida sobre els sistemes gestionats per Ansible. Comprendre com utilitzar variables i fets és essencial per escriure playbooks flexibles i reutilitzables.
Continguts
Què són les Variables?
Les variables en Ansible són elements que permeten emmagatzemar dades que poden ser utilitzades al llarg dels playbooks. Les variables poden contenir diferents tipus de dades, com ara cadenes de text, números, llistes i diccionaris.
Tipus de Variables
Ansible permet definir variables en diversos llocs:
- Variables de Playbook: Definides directament en el playbook.
- Variables d'Inventari: Definides en els fitxers d'inventari.
- Variables de Rol: Definides dins dels rols.
- Variables de Línia de Comanda: Passades a través de la línia de comanda.
- Variables de Fets: Recollides automàticament per Ansible.
Definint Variables
En el Playbook
--- - name: Exemple de Playbook amb Variables hosts: all vars: nom_usuari: "admin" port: 8080 tasks: - name: Mostra el nom d'usuari debug: msg: "El nom d'usuari és {{ nom_usuari }}"
En el Fitxer d'Inventari
[webservers] server1 ansible_host=192.168.1.10 ansible_user=admin server2 ansible_host=192.168.1.11 ansible_user=admin
En un Fitxer de Variables
Utilitzant Variables
Les variables es poden utilitzar en els playbooks mitjançant la sintaxi {{ variable_name }}
.
- name: Exemple d'ús de variables hosts: all vars: nom_usuari: "admin" tasks: - name: Mostra el nom d'usuari debug: msg: "El nom d'usuari és {{ nom_usuari }}"
Què són els Fets?
Els fets són informació recollida automàticament per Ansible sobre els sistemes gestionats. Aquests inclouen dades com ara el sistema operatiu, la memòria, les adreces IP, etc.
Recollint Fets
Ansible recull fets automàticament abans d'executar les tasques. Això es pot controlar amb el paràmetre gather_facts
.
- name: Exemple de recollida de fets hosts: all gather_facts: yes tasks: - name: Mostra el sistema operatiu debug: msg: "El sistema operatiu és {{ ansible_os_family }}"
Utilitzant Fets
Els fets es poden utilitzar de la mateixa manera que les variables.
- name: Exemple d'ús de fets hosts: all gather_facts: yes tasks: - name: Mostra la memòria total debug: msg: "La memòria total és {{ ansible_memtotal_mb }} MB"
Exercicis Pràctics
Exercici 1: Definint i Utilitzant Variables
- Crea un playbook que defineixi una variable
nom_usuari
i una variableport
. - Afegeix una tasca que mostri aquestes variables utilitzant el mòdul
debug
.
Solució
--- - name: Exercici 1: Definint i Utilitzant Variables hosts: all vars: nom_usuari: "admin" port: 8080 tasks: - name: Mostra el nom d'usuari debug: msg: "El nom d'usuari és {{ nom_usuari }}" - name: Mostra el port debug: msg: "El port és {{ port }}"
Exercici 2: Utilitzant Fets
- Crea un playbook que reculli fets i mostri el sistema operatiu i la memòria total del sistema.
Solució
--- - name: Exercici 2: Utilitzant Fets hosts: all gather_facts: yes tasks: - name: Mostra el sistema operatiu debug: msg: "El sistema operatiu és {{ ansible_os_family }}" - name: Mostra la memòria total debug: msg: "La memòria total és {{ ansible_memtotal_mb }} MB"
Conclusió
En aquest tema, hem après què són les variables i els fets en Ansible, com definir-los i utilitzar-los en els playbooks. Les variables permeten emmagatzemar dades reutilitzables, mentre que els fets proporcionen informació detallada sobre els sistemes gestionats. Aquests conceptes són fonamentals per escriure playbooks eficients i flexibles. En el proper tema, explorarem els condicionals i els bucles en Ansible.
Ansible: De Principiant a Avançat
Mòdul 1: Introducció a Ansible
Mòdul 2: Conceptes bàsics d'Ansible
Mòdul 3: Playbooks
- Introducció als Playbooks
- Escrivint el teu primer Playbook
- Estructura del Playbook
- Variables i Fets
- Condicionals i Bucles
Mòdul 4: Rols
Mòdul 5: Tècniques Avançades de Playbook
Mòdul 6: Ansible Galaxy
Mòdul 7: Ansible Tower
- Introducció a Ansible Tower
- Instal·lant Ansible Tower
- Utilitzant Ansible Tower
- Gestionant Projectes i Inventaris