Forstå kernekomponenter i Ansible - Del 1


Red Hat Certified Specialist i Ansible Automation-eksamen (EX407) er et nyt certificeringsprogram fra Red Hat, der tester dine evner til at bruge Ansible til at automatisere konfigurationen af systemer og applikationer.

Serien har titlen “The Red Hat Certified Specialist in Ansible Automation exam (EX407)” og dækker følgende eksamensmål baseret på Red Hat Enterprise Linux 7.5 og Ansible 2.7, som vi vil dække i denne Ansible-serie:

For at se gebyrer og tilmelde dig en eksamen i dit land skal du tjekke siden Ansible Automation-eksamen.

I denne del 1 af Ansible-serien vil vi diskutere nogle grundlæggende oversigter over kernekomponenter i Ansible.

Ansible er en gratis og opensource-automatiseringsplatform fra RedHat, der giver dig mulighed for at administrere og kontrollere flere servere fra en central placering. Det er især ideelt, når du har flere og gentagne opgaver, der skal udføres. Så i stedet for at logge ind på hver af disse fjernknudepunkter og udføre dine opgaver, kan du komfortabelt gøre det fra en central placering og administrere dine servere komfortabelt.

Dette er gavnligt, når du vil bevare ensartethed i implementering af applikationer, reducere menneskelige fejl og automatisere gentagne og noget verdslige opgaver.

Der er selvfølgelig andre alternativer til Ansible som Puppet, Chef og Salt. Ansible foretrækkes dog mest, fordi det er let at bruge og let at lære.

Hvorfor er det nemt at lære, kan du spørge? Dette skyldes, at Ansible bruger YAML (Yet Another Markup Language) i sine konfigurations- og automatiseringsjob, der er menneskelige og let at følge. YAML bruger SSH-protokol til at kommunikere med eksterne servere, i modsætning til andre automatiseringsplatforme, der kræver, at du installerer en agent på eksterne noder for at kommunikere med dem.

Før vi kommer i gang med Ansible, er det vigtigt, at du kender nogle grundlæggende terminologier, så du ikke går vild eller forvirret, når vi bevæger os fremad.

En opgørelse er en tekstfil, der indeholder en liste over servere eller noder, som du administrerer og konfigurerer. Normalt er serverne angivet ud fra deres værtsnavne eller IP-adresser.

En beholdningsfil kan indeholde fjernsystemer defineret af deres IP-adresser som vist:

10.200.50.50
10.200.50.51
10.200.50.52

Alternativt kan de opføres efter grupper. I eksemplet nedenfor har vi servere placeret under 2 grupper - webservere og databaser. På denne måde kan de henvises til i henhold til deres gruppenavne og ikke deres IP-adresser. Dette forenkler yderligere driftsprocesser.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Du kan have flere grupper med flere servere, hvis du er i et stort produktionsmiljø.

En playbook er et sæt konfigurationsstyringsskripter, der definerer, hvordan opgaver skal udføres på fjernværter eller en gruppe værtsmaskiner. Scripts eller instruktioner er skrevet i YAML-format.

For eksempel kan du have en playbook-fil til at installere Apache-webserveren på CentOS 7 og kalde den httpd.yml.

For at oprette playbook kør kommandoen.

$ touch playbook_name.yml

For eksempel for at oprette en playbook kaldet httpd, skal du køre kommandoen.

$ touch httpd.yml

En YAML-fil begynder med 3 bindestreger som vist. Inde i filen skal du tilføje følgende instruktioner.

---
- 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

Ovenstående playbook installerer Apache-webserver på eksterne systemer defineret som webservere i lagerfilen. Efter installationen af webserveren kontrollerer Ansible senere, om Apache-webserveren er startet og kører.

Moduler er diskrete enheder af kode, der bruges i playbøger til udførelse af kommandoer på eksterne værter eller servere. Hvert modul efterfølges af et argument.

Det grundlæggende format for et modul er nøgle: værdi.

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

I ovenstående YAML-kodestykke er -navn og yum moduler.

Et synligt spil er et script eller en instruktion, der definerer den opgave, der skal udføres på en server. En samling stykker udgør en spillebog. Med andre ord er en playbook en samling af flere spil, som hver især klart angiver den opgave, der skal udføres på en server. Afspil findes i YAML-format.

Hvis du har baggrund i programmering, har du sandsynligvis brugt variabler. Dybest set repræsenterer en variabel en værdi. En variabel kan omfatte bogstaver, tal og understregninger, men SKAL altid begynde med bogstaver.

Variabler bruges, når instruktioner varierer fra system til system. Dette gælder især under konfigurationen eller forskellige tjenester og funktioner.

Der er 3 hovedtyper af variabler:

  • Playbook-variabler
  • Lagervariabler
  • Særlige variabler

I Ansible defineres variabler først ved hjælp af vars k, derefter efterfulgt af variabelnavnet og værdien.

Syntaksen er som vist:

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

Overvej koden nedenfor.

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

I eksemplet ovenfor er variablen her web_directory, og den instruerer ansible om at oprette en mappe i/var/www/html/stien.

Fakta er systemegenskaber, som Ansible har samlet, når den udfører en playbook på et værtssystem. Egenskaberne inkluderer værtsnavn, OS-familie, CPU-type og CPU-kerner for at nævne nogle få.

For at få et glimt af antallet af tilgængelige fakta til brug, udsted kommandoen.

$ ansible localhost -m setup

Som du kan se, er der vist et stort antal fakta som standard. Du kan yderligere indsnævre resultaterne ved hjælp af filterparameteren som vist.

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

I Ansible er en konfigurationsfil en fil, der indeholder forskellige parameterindstillinger, der bestemmer, hvordan Ansible kører. Standardkonfigurationsfilen er ansible.cfg-filen, der findes i/etc/ansible/directory.

Du kan se konfigurationsfilen ved at køre:

$ cat /etc/ansible/ansible.cfg

Som du kan se, er der inkluderet flere parametre såsom stier til lager- og biblioteksfiler, sudo-bruger, plugin-filtre, moduler osv. Disse parametre kan justeres ved blot at kommentere dem og ændre værdierne deri.

Derudover kan du have flere konfigurationsfiler, der arbejder med Ansible bortset fra din standardkonfigurationsfil.

Efter at have set på kernekomponenterne i Ansible, håber vi, at du er i stand til at holde dem lige ved hånden og vælge dem, når vi bevæger os fremad. Deltag i vores næste emne.