Introducció
Ansible és una eina de gestió de configuració i automatització que permet als administradors de sistemes gestionar grans quantitats de servidors de manera eficient. La seva arquitectura és senzilla però potent, i es basa en alguns components clau que treballen junts per proporcionar una solució robusta i escalable.
Components Clau de l'Arquitectura d'Ansible
-
Controlador (Control Node)
- És la màquina des de la qual s'executen les ordres d'Ansible.
- Aquí és on s'instal·la Ansible i des d'on es gestionen els nodes remots.
- No requereix cap agent especial instal·lat en els nodes gestionats.
-
Nodes Gestionats (Managed Nodes)
- Són les màquines que Ansible gestiona.
- No necessiten tenir Ansible instal·lat; només cal que tinguin SSH habilitat i Python instal·lat (per defecte en la majoria de distribucions Linux).
-
Inventari (Inventory)
- És un fitxer que conté la llista de nodes gestionats.
- Pot ser un fitxer estàtic (per exemple, en format INI o YAML) o dinàmic (generat per un script o API).
-
Playbooks
- Són fitxers YAML que defineixen una sèrie de tasques que Ansible ha d'executar en els nodes gestionats.
- Permeten definir configuracions complexes de manera declarativa.
-
Mòduls
- Són unitats de codi que Ansible executa en els nodes gestionats.
- Hi ha mòduls per a gairebé qualsevol tasca, des de la gestió de paquets fins a la configuració de serveis.
-
Plugins
- Són extensions que amplien la funcionalitat d'Ansible.
- Inclouen plugins de connexió, plugins de cache, plugins de callback, entre d'altres.
-
Ansible Galaxy
- És un repositori públic de rols d'Ansible que permet compartir i reutilitzar configuracions.
Diagrama de l'Arquitectura d'Ansible
A continuació es mostra un diagrama simplificat de l'arquitectura d'Ansible:
+-------------------+ | Control Node | | | | +---------------+ | | | Playbooks | | | +---------------+ | | | Inventory | | | +---------------+ | | | Modules | | | +---------------+ | | | Plugins | | | +---------------+ | +---------|---------+ | | SSH | +---------v---------+ | Managed Node 1 | | | | +---------------+ | | | Python | | | +---------------+ | +-------------------+ | | SSH | +---------v---------+ | Managed Node 2 | | | | +---------------+ | | | Python | | | +---------------+ | +-------------------+
Flux de Treball d'Ansible
-
Definició de l'Inventari:
- Es crea un fitxer d'inventari que llista els nodes gestionats.
-
Especificació de les Tasques:
- Es defineixen les tasques a realitzar en els nodes gestionats mitjançant Playbooks.
-
Execució de les Tasques:
- Ansible s'executa des del Control Node, connectant-se als nodes gestionats via SSH.
- Les tasques definides en els Playbooks s'executen en els nodes gestionats utilitzant els mòduls corresponents.
-
Recollida de Resultats:
- Ansible recull els resultats de l'execució de les tasques i els mostra al Control Node.
Exemple Pràctic
A continuació es mostra un exemple pràctic d'un fitxer d'inventari i un Playbook senzill:
Fitxer d'Inventari (hosts
)
Playbook (site.yml
)
--- - name: Configurar servidors web hosts: webservers tasks: - name: Instal·lar Apache apt: name: apache2 state: present - name: Configurar servidors de base de dades hosts: dbservers tasks: - name: Instal·lar MySQL apt: name: mysql-server state: present
Exercici Pràctic
Objectiu: Crear un fitxer d'inventari i un Playbook que instal·li Nginx en un grup de servidors web.
Passos:
-
Crear el fitxer d'inventari:
- Crea un fitxer anomenat
hosts
amb el següent contingut:[webservers] web1.example.com web2.example.com
- Crea un fitxer anomenat
-
Crear el Playbook:
- Crea un fitxer anomenat
nginx.yml
amb el següent contingut:--- - name: Instal·lar Nginx en servidors web hosts: webservers tasks: - name: Instal·lar Nginx apt: name: nginx state: present
- Crea un fitxer anomenat
-
Executar el Playbook:
- Executa el Playbook amb la següent comanda:
ansible-playbook -i hosts nginx.yml
- Executa el Playbook amb la següent comanda:
Solució
Si has seguit els passos correctament, hauràs creat un fitxer d'inventari i un Playbook que instal·la Nginx en els servidors web especificats. Aquesta és una tasca bàsica però fonamental que demostra com Ansible pot simplificar la gestió de configuracions en múltiples servidors.
Conclusió
En aquesta secció, hem explorat l'arquitectura d'Ansible, incloent els seus components clau i el flux de treball típic. Hem vist com es defineixen els inventaris i els Playbooks, i hem practicat amb un exemple senzill. Amb aquesta base, estàs preparat per aprofundir en els conceptes bàsics d'Ansible en el següent mòdul.
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