Startpagina > Pakket- en systeembeheer > ansible

ansible: Beheer en automatisering van servers op afstand

Ansible is een open-source automatiseringsengine die wordt gebruikt voor diverse IT-automatiseringstaken, zoals softwareprovisioning, configuratiebeheer, applicatiedistributie en orkestratie. Het maakt verbinding met servers op afstand via SSH zonder dat er agents nodig zijn en voert taken uit met behulp van YAML-gebaseerde playbooks om taken te definiëren.

Overzicht

Ansible werkt op een agentloze manier, wat betekent dat er geen aparte software op de beheerde servers hoeft te worden geïnstalleerd. Het voert commando's uit via SSH-verbindingen en gebruikt Python-gebaseerde modules om verschillende taken uit te voeren. Het definieert beheerde hosts via een inventarisbestand en automatiseert taken met behulp van ad-hoc commando's of playbooks.

Belangrijkste kenmerken

  • Agentloze methode (geen agenten nodig op beheerde servers)
  • SSH-gebaseerde communicatie (gebruik van bestaande infrastructuur)
  • Gebruik van YAML playbooks (beknopte en leesbare automatiseringsscripts)
  • Diverse IT-automatisering zoals configuratiebeheer, applicatiedistributie, orkestratie

Belangrijkste opties

Ansible-commando's worden gebruikt om specifieke modules uit te voeren of ad-hoc commando's uit te voeren op hostgroepen die zijn gedefinieerd in een inventarisbestand.

Standaard uitvoeringsopties

Informatie en debugging

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`ansible` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

U kunt Ansible-commando's gebruiken om diverse taken op externe servers uit te voeren.

Verbindingscontrole van alle hosts (ping)

ansible all -m ping

Test de verbindingsmogelijkheid met alle hosts die in de inventaris zijn gedefinieerd.

Commando uitvoeren op webservergroep

ansible webservers -a "uptime"

Voert het 'uptime'-commando uit op hosts die behoren tot de 'webservers'-groep in de inventaris.

Pakket installeren op specifieke host (met sudo)

ansible node1 -b -m apt -a "name=nginx state=present"

Installeert het 'nginx'-pakket op de host 'node1'. Gebruikt de -b optie voor sudo-rechten.

Gebruik van aangepast inventarisbestand

ansible all -i my_inventory.ini -a "df -h"

Voert het 'df -h'-commando uit op alle hosts met behulp van het 'my_inventory.ini'-bestand in plaats van het standaard inventarisbestand.

Bestand kopiëren met gespecificeerde externe gebruiker

ansible webservers -u deploy_user -m copy -a "src=./index.html dest=/var/www/html/"

Kopieert het lokale 'index.html'-bestand naar de '/var/www/html/'-directory op de externe server, verbonden als de externe gebruiker 'deploy_user'.

Installatie

Ansible is niet standaard inbegrepen in de meeste Linux-distributies, dus het moet worden geïnstalleerd via een pakketbeheerder of Python pip. Installatie via Python pip wordt het meest aanbevolen.

Installatie met Python pip (aanbevolen)

Als Python is geïnstalleerd, kunt u Ansible installeren met pip.

  • Installatie commando: pip install ansible
  • Upgrade commando: pip install --upgrade ansible

Ubuntu/Debian

Installeert met de APT-pakketbeheerder.

  • Installatie commando: sudo apt update && sudo apt install ansible

CentOS/RHEL

Installeert met de YUM/DNF-pakketbeheerder. Mogelijk is de EPEL-repository vereist.

  • EPEL repository installeren: sudo yum install epel-release
  • Installatie commando: sudo yum install ansible

Tips & Aandachtspunten

Tips en aandachtspunten voor het effectief gebruiken van Ansible.

Ansible gebruikstips

  • **Inventarisbestandbeheer**: Het is belangrijk om beheerde hosts systematisch te groeperen en te definiëren. U kunt `ini` of `yaml` formaten gebruiken.
  • **Gebruik van playbooks aanbevolen**: Voor alles behalve eenvoudige ad-hoc commando's is het raadzaam om YAML-gebaseerde playbooks (`ansible-playbook`) te gebruiken voor herbruikbaarheid, leesbaarheid en versiebeheer.
  • **Begrip van Idempotentie**: Ansible is ontworpen om ervoor te zorgen dat de systeemstatus hetzelfde blijft, zelfs als taken meerdere keren worden uitgevoerd. Dit wordt idempotentie genoemd, en dit concept moet worden toegepast bij het schrijven van automatiseringsscripts.
  • **SSH-sleutelgebaseerde authenticatie**: Het is aan te raden om SSH-sleutels te gebruiken in plaats van wachtwoorden om de beveiliging te verbeteren en het automatiseringsproces te stroomlijnen.
  • **Gebruik van Vault**: Gevoelige informatie (wachtwoorden, API-sleutels, etc.) moet worden beheerd door deze te versleutelen met Ansible Vault.

Hétzelfde categoriecommando