Zoeken op website

Begrijp de kerncomponenten van Ansible - Deel 1


Het Red Hat Certified Specialist in Ansible Automation-examen (EX407) is een nieuw certificeringsprogramma van Red Hat dat uw vaardigheden test om Ansible te gebruiken om te automatiseren de configuratie van systemen en applicaties.

De serie krijgt de titel “Het Red Hat Certified Specialist in Ansible Automation-examen (EX407)” en behandelt de volgende examendoelstellingen, gebaseerd op Red Hat Enterprise Linux 7.5 en Ansible 2.7, die we gaan behandelen in deze Ansible serie:

Als u de kosten wilt bekijken en u wilt inschrijven voor een examen in uw land, gaat u naar de Ansible Automation-examenpagina.

In dit Deel 1 van de Ansible serie bespreken we een basisoverzicht van de kerncomponenten in Ansible.

Begrijp de kerncomponenten van Ansible

Ansible is een gratis en opensource automatiseringsplatform van RedHat waarmee u meerdere servers vanaf één centrale locatie kunt beheren en controleren. Het is vooral ideaal als u meerdere en repetitieve taken moet uitvoeren. Dus in plaats van in te loggen op elk van deze externe knooppunten en uw taken uit te voeren, kunt u dit comfortabel vanaf een centrale locatie doen en uw servers comfortabel beheren.

Dit is handig als u de consistentie bij de implementatie van applicaties wilt behouden, menselijke fouten wilt verminderen en repetitieve en enigszins alledaagse taken wilt automatiseren.

Natuurlijk zijn er andere alternatieven voor Ansible, zoals Puppet, Chef en Salt. Ansible heeft echter vooral de voorkeur omdat het gemakkelijk te gebruiken en eenvoudig te leren is.

Waarom is het eenvoudig om te leren, vraagt u zich misschien af? Dit komt omdat Ansible YAML (Yet Another Markup Language) gebruikt in zijn configuratie- en automatiseringstaken, die voor mensen leesbaar en vrij gemakkelijk te volgen zijn. YAML gebruikt het SSH-protocol om met externe servers te communiceren, in tegenstelling tot andere automatiseringsplatforms waarbij u een agent op externe knooppunten moet installeren om met hen te communiceren.

Voordat we aan de slag gaan met Ansible, is het belangrijk dat u bekend raakt met enkele basisterminologieën, zodat u niet verdwaalt of in de war raakt terwijl we verder gaan.

Inventaris

Een inventaris is een tekstbestand dat een lijst bevat met servers of knooppunten die u beheert en configureert. Meestal worden de servers vermeld op basis van hun hostnamen of IP-adressen.

Een inventaris bestand kan externe systemen bevatten die zijn gedefinieerd aan de hand van hun IP-adressen, zoals weergegeven:

10.200.50.50
10.200.50.51
10.200.50.52

Als alternatief kunnen ze per groep worden gerangschikt. In het onderstaande voorbeeld hebben we servers onder twee groepen geplaatst: webservers en databases. Op deze manier kan er naar hen worden verwezen op basis van hun groepsnaam en niet op basis van hun IP-adressen. Dit vereenvoudigt de bedrijfsprocessen verder.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Als u zich in een grote productieomgeving bevindt, kunt u meerdere groepen met meerdere servers hebben.

Speelboek

Een playbook is een set configuratiebeheerscripts die definiëren hoe taken moeten worden uitgevoerd op externe hosts of een groep hostmachines. De scripts of instructies zijn geschreven in YAML-indeling.

U kunt bijvoorbeeld een playbook-bestand gebruiken om de Apache-webserver op CentOS 7 te installeren en dit httpd.yml te noemen.

Voer de opdracht uit om het playbook te maken.

touch playbook_name.yml

Als u bijvoorbeeld een playbook met de naam httpd wilt maken, voert u de opdracht uit.

touch httpd.yml

Een YAML-bestand begint met drie koppeltekens, zoals weergegeven. Voeg de volgende instructies toe aan het bestand.

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

Het bovenstaande playbook installeert de Apache-webserver op externe systemen die in het inventarisbestand zijn gedefinieerd als webservers. Na de installatie van de webserver controleert Ansible later of de Apache-webserver is gestart en actief is.

Modules

Modules zijn afzonderlijke code-eenheden die in playbooks worden gebruikt voor het uitvoeren van opdrachten op externe hosts of servers. Elke module wordt gevolgd door een argument.

Het basisformaat van een module is sleutel: waarde.

- name: Install apache packages 
    yum:   name=httpd  state=present

In het bovenstaande YAML codefragment zijn -name en yum modules.

Toneelstukken

Een ansible play is een script of een instructie die de taak definieert die op een server moet worden uitgevoerd. Een verzameling toneelstukken vormt een draaiboek. Met andere woorden: een playbook is een verzameling van meerdere plays, waarvan elk duidelijk aangeeft welke taak op een server moet worden uitgevoerd. Er bestaan toneelstukken in YAML-formaat.

Variabelen

Als je een achtergrond in programmeren hebt, dan heb je hoogstwaarschijnlijk variabelen gebruikt. Kortom, een variabele vertegenwoordigt een waarde. Een variabele kan letters, cijfers en onderstrepingstekens bevatten, maar MOET altijd met letters beginnen.

Variabelen worden gebruikt wanneer instructies van systeem tot systeem verschillen. Dit geldt vooral tijdens de configuratie van verschillende services en functies.

Er zijn 3 hoofdtypen variabelen:

  • Variabelen uit het draaiboek
  • Voorraadvariabelen
  • Speciale variabelen

In Ansible worden variabelen eerst gedefinieerd met behulp van de vars k, gevolgd door de naam van de variabele en de waarde.

De syntaxis is zoals weergegeven:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

Beschouw de onderstaande code.

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

In het bovenstaande voorbeeld is de variabele hier web_directory en deze instrueert ansible om een map te maken in het pad /var/www/html/.

Feiten

Feiten zijn systeemeigenschappen die door Ansible worden verzameld wanneer het een playbook op een hostsysteem uitvoert. De eigenschappen omvatten hostnaam, besturingssysteemfamilie, CPU-type en CPU-kernen om er maar een paar te noemen.

Om een indruk te krijgen van het aantal feiten dat beschikbaar is voor gebruik, geeft u het commando op.

ansible localhost -m setup

Zoals u kunt zien, wordt er standaard een groot aantal feiten weergegeven. U kunt de resultaten verder verfijnen met behulp van de filterparameter, zoals weergegeven.

ansible localhost -m setup -a "filter=*ipv4"

Configuratiebestanden

In Ansible is een configuratiebestand een bestand dat verschillende parameterinstellingen bevat die bepalen hoe Ansible werkt. Het standaardconfiguratiebestand is het bestand ansible.cfg dat zich in de map /etc/ansible/ bevindt.

U kunt het configuratiebestand bekijken door het volgende uit te voeren:

cat /etc/ansible/ansible.cfg

Zoals u kunt zien, zijn er verschillende parameters opgenomen, zoals inventaris en bibliotheek bestandspaden, sudo-gebruiker, plug-infilters, modules, enz. Deze parameters kunnen eenvoudig worden aangepast door er commentaar op te geven uit en wijzig de waarden daarin.

Bovendien kunt u naast uw standaardconfiguratiebestand meerdere configuratiebestanden met Ansible laten werken.

Samenvatting

Nadat we de kerncomponenten in Ansible hebben bekeken, hopen we dat u ze binnen handbereik kunt houden en ze kunt uitkiezen terwijl we verder gaan. Ga met ons mee over uw volgende onderwerp.