Ansible componenten 2

Modules en plugins

Zoals u kunt zien in de voorbeeldopdrachten op de vorige pagina, gebruikt Ansible ‘modules’. Ansible-modules zijn kleine stukjes code die verantwoordelijk zijn voor het uitvoeren van specifieke taken op externe hosts. Modules kunnen worden gezien als bouwstenen die worden gecombineerd om playbooks te vormen of acties voor ad-hoc-opdrachten te specificeren, die vervolgens worden gebruikt om taken op een of meer externe hosts te automatiseren. Modules kunnen in elke programmeertaal worden geschreven en zijn verantwoordelijk voor het definiëren van de taken die worden uitgevoerd tijdens een Ansible playbook-run.

We zullen enkele van de meest gebruikte modules doornemen.

Bestand

De bestandsmodule wordt gebruikt om bestanden en mappen op externe hosts te beheren. Deze module kan worden gebruikt om bestanden en mappen te maken, te wijzigen en te verwijderen, en om bestandsmachtigingen en -eigendom te wijzigen.
Het volgende voorbeeld maakt een specifiek bestand op een externe host:

- name: bestand maken
hosts: webservers
tasks:
- name: bestand maken met specifieke inhoud
file:
path: /var/www/html/index.html
state: touch
owner: apache
group: apache
mode: '0644'
content: "<html><head><title>Hallo wereld</title></head><body><h1>Hallo World</h1></body></html>"

Kopiëren

De kopieermodule wordt gebruikt om bestanden van de Ansible-besturingsmachine naar een of meer externe hosts te kopiëren. Deze module kan ook worden gebruikt om bestandsmachtigingen en eigendom in te stellen.

Het volgende voorbeeld kopieert een bestand naar een externe host:

- name: bestand kopiëren
hosts: webservers
tasks:
- name: bestand kopiëren naar externe host
copy:
src: /path/to/local/file
dest: /path/to/remote/file
owner: apache
group: apache
mode: '0644'

Yum & APT

De modules yum en APT worden gebruikt om pakketten op externe hosts te beheren. Dit omvat het installeren, updaten of verwijderen van pakketten. Yum wordt gebruikt voor RHEL-gebaseerde distributies, APT wordt gebruikt voor Debian-gebaseerde distributies.

Een voorbeeld met Yum:

- name: Pakket installeren
hosts: webservers
tasks:
- name: Pakket installeren met YUM
yum:
name: httpd
state: present

Service

De servicemodule wordt gebruikt om services op externe hosts te beheren. Deze module kan worden gebruikt om services te starten, stoppen, opnieuw te starten en in/uit te schakelen.
Het volgende voorbeeld start een service op een externe host:

- name: Start service
hosts: webservers
tasks:
- name: Start service on remote host
service:
name: httpd
state: started

Shell

De shell-module wordt gebruikt om willekeurige shell-opdrachten uit te voeren op externe hosts. Deze module kan worden gebruikt om complexe opdrachten uit te voeren die niet door andere Ansible-modules kunnen worden afgehandeld.
Het volgende voorbeeld voert een shell-opdracht uit op een externe host:

- name: Run command
hosts: webservers
tasks:
- name: Run command on remote host
shell: ls -la /var/www/html

Template

De templatemodule wordt gebruikt om bestanden te genereren van templates op de Ansible-besturingsmachine en deze te kopiëren naar een of meer externe hosts. Deze module kan worden gebruikt om configuratiebestanden te maken die zijn aangepast voor elke externe host.
Het volgende voorbeeld genereert een bestand van een sjabloon en kopieert het naar de externe host:

- name: Generate file
hosts: webservers
tasks:
- name: Generate file from template and copy to remote host
template:
src: /path/to/template.conf.j2
dest: /etc/httpd/conf.d/custom.conf

Lineinfile

De lineinfile-module kan worden gebruikt om een ​​regel toe te voegen aan een specifiek bestand op het bestandssysteem van het doel.
Een voorbeeld:

- name: Een regel toevoegen aan een bestand
lineinfile:
path: /etc/hosts
line: 192.168.1.99 foo.lab.net foo

Andere modules?

De ansible Galaxy bevat meer dan 700 verschillende modules. Niet alle modules zijn standaard op een ansible-controller geïnstalleerd.
U kunt niet-standaardmodules installeren met de opdracht ansible-galaxy:

ansible-galaxy collection install cisco.ios

Een overzicht van alle modules vindt u in de Ansible Galaxy

Collecties

In Ansible zijn collecties een distributieformaat voor Ansible-inhoud die playbooks, rollen, modules en plug-ins kan bevatten. Met collecties kunt u Ansible-inhoud verpakken en distribueren, of het nu is om te delen met anderen of voor uw eigen organisatiegebruik. Ze bieden een gestructureerde manier om verschillende componenten in één pakket te leveren, waardoor het beheer, de installatie en het gebruik van Ansible-inhoud worden vereenvoudigd.

Vóór collecties werd de meeste Ansible-inhoud gedistribueerd als zelfstandige rollen via Ansible Galaxy of rechtstreeks geïntegreerd in Ansible zelf. Collecties zijn bedoeld om meer schaalbaarheid en distributieflexibiliteit te bieden dan de oudere methoden.

Kenmerken en voordelen van collecties

  1. Gestructureerde lay-out: Collecties hebben een gedefinieerde directorystructuur, waarmee makers van content hun content op een voorspelbare manier kunnen ordenen en verpakken.

  2. Versiebeheer: U kunt een collectie versiebeheer maken, waardoor het eenvoudiger wordt om verschillende versies van content te beheren en gebruiken.

  3. Afhankelijkheidsbeheer: Collecties kunnen afhankelijkheden van andere collecties of content declareren, zodat alle vereiste componenten aanwezig zijn.

Voorbeelden
  1. Leveranciersspecifieke collecties: Veel IT-leveranciers zijn begonnen met het verpakken van hun modules en plug-ins in collecties. Cisco, Juniper of Red Hat hebben bijvoorbeeld mogelijk hun eigen collecties voor het beheren van hun specifieke producten.

  2. Functiespecifieke collecties: Collecties kunnen zich richten op specifieke functies of taken, zoals een collectie voor monitoringoplossingen, een voor databasebeheer en een andere voor webserverinstellingen.

  3. Communitycollecties: De Ansible-community kan collecties maken voor algemene doeleinden of specifieke behoeften, en deze kunnen worden gedeeld en gedistribueerd via platforms zoals Ansible Galaxy.

Collecties gebruiken

Hier is een basisvoorbeeld om te illustreren hoe u een verzameling in een playbook kunt gebruiken:

---
- hosts: localhost
gather_facts: nee
tasks:
- name: Gebruik een module uit een verzameling
namespace.collection_name.module_name:
parameter1: value1

In dit voorbeeld is namespace de naamruimte van de verzameling (vaak de naam van de organisatie of persoon die deze heeft gemaakt), collection_name is de naam van de verzameling en module_name is de naam van de module in die verzameling.

Verzamelingen installeren

Een verzameling installeren vanuit Ansible Galaxy:

ansible-galaxy collection install namespace.collection_name

Als u bijvoorbeeld de communitycollectie voor het beheer van Kubernetes wilt installeren:

ansible-galaxy collection install community.kubernetes

Dit is een ander voorbeeld van het installeren van de community-editie van de Cisco-collectie:

ansible-galaxy collection install cisco.ios

Samenvattend bieden collecties in Ansible een manier om Ansible-inhoud te bundelen, distribueren en te versiebeheer op een georganiseerde en schaalbare manier. manier. Of u nu een content creator of een eindgebruiker bent, collecties bieden een gestroomlijnde aanpak voor het beheren en gebruiken van de uitgebreide mogelijkheden van Ansible.

Waar worden ze opgeslagen?

Alle collecties die u hebt gedownload, worden lokaal opgeslagen op uw controller. Wanneer u een collectie downloadt, worden ze opgeslagen in een verborgen .ansible-map in de home directory van uw gebruiker. Bekijk de volgende schermafbeelding voor meer details:

U kunt ook alle collecties en hun opgeslagen mappen weergeven door de volgende opdracht in te voeren:

ansible-galaxy-collectie list

Hiermee wordt de volgend (voorbeeld)uitvoer weergegeven:

Een verzameling bijwerken

Om een ​​verzameling bij te werken, kunt u eenvoudigweg de volgende opdracht:

ansible-galaxy collection install -U <collection.name>

Het volgende voorbeeld werkt de cisco.ios-collectie bij:

ansible-galaxy collection install -U cisco.ios

Dit heeft de volgende uitvoer:

Als de collectie een afhankelijkheden, worden deze ook bijgewerkt.