Hvordan bruke statiske og dynamiske beholdninger i Ansible - Del 4


I denne Del 4 av Ansible-serien vil vi forklare hvordan du bruker statisk og dynamisk inventar for å definere grupper av verter i Ansible.

I en Ansible er administrerte verter eller servere som kontrolleres av Ansible-kontrollnoden definert i en vertsinventarfil som forklart i. En vert inventarfil er en tekstfil som består av vertsnavn eller IP-adresser til administrerte verter eller eksterne servere.

Administrerte verter kan enten være oppført som individuelle oppføringer eller kategorisert under et gruppenavn som vi senere skal se. I Ansible er det to typer inventarfiler: Statisk og Dynamisk.

La oss ta en titt på hver av disse og se hvordan vi kan håndtere dem. Nå antar vi at du allerede har installert Ansible på kontrollnoden din, og konfigurert passordløs SSH-tilkobling til de administrerte vertene dine.

Statisk vertsinventarfil

I Ansible er en statisk inventarfil en ren tekstfil som inneholder en liste over administrerte verter som er deklarert under en vertsgruppe ved bruk av enten vertsnavn eller IP-adresser.

Et vertsgruppenavn er omsluttet av hakeparenteser, dvs. [gruppenavn]. De administrerte vertsoppføringene er senere oppført under gruppenavnet, hver på sin egen linje. Som diskutert tidligere, er vertene oppført med enten vertsnavn eller IP-adresser.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

For å illustrere, skal vi lage en statisk inventarfil.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Lagre filen og avslutt.

Som du kan se i inventarfilen ovenfor, har vi opprettet 2 vertsgrupper: webservere og database_servers. Vi har også opprettet en ekstra gruppe kalt datasenter som inkluderer en gruppe vertsgrupper merket med ': children' suffiks som vist ovenfor.

Ansible lar også grupper av verter plasseres under et gruppenavn. I inventarfilen ovenfor er gruppene netttjenere og databasetjenere plassert under datasenteret.

MERK: Det er ikke obligatorisk å plassere administrerte verter i en vertsgruppe. Du kan ganske enkelt liste dem ved å bruke vertsnavnene eller IP-adressene for eksempel.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

La oss nå bruke noen få Ansible-kommandoer for å referere til vertsinventarfilen. Den grunnleggende syntaksen for lagerstyring er som vist.

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

For eksempel,

ansible all -i /root/test_labs/hosts --list-hosts

Alternativt kan du bruke jokertegnet * for å erstatte argumentet ‘all’.

ansible * -i /root/test_labs/hosts --list-hosts

For å liste opp verter i en gruppe, spesifiser vertsgruppen i stedet for vertsmønsteret.

ansible webservers -i /root/test_labs/hosts --list-hosts

Dynamisk vertsinventarfil

I en konfigurasjon – spesielt et skyoppsett som AWS der inventarfilen stadig endrer seg etter hvert som du legger til eller dekommisjonerer servere, blir det en reell utfordring å holde oversikt over vertene som er definert i inventarfilen. Det blir upraktisk å gå tilbake til vertsfilen og oppdatere listen over verter med deres IP-adresser.

Og det er her en dynamisk beholdning kommer til å spille. Så hva er en dynamisk beholdning? En dynamisk inventar er et skript skrevet i Python, PHP eller et annet programmeringsspråk. Det kommer godt med i skymiljøer som AWS der IP-adresser endres når en virtuell server stoppes og startes på nytt.

Ansible har allerede utviklet inventarskript for offentlige skyplattformer som Google Compute Engine, Amazon EC2-instans, OpenStack, RackSpace, Cobbler, blant andre.

Hva er fordelene med en dynamisk beholdning fremfor en statisk beholdning?
  • Dynamiske varelager gjør en perfekt jobb med å redusere menneskelige feil ettersom informasjon samles inn ved hjelp av skript.
  • Det kreves minimal innsats for å administrere varelager.

Du kan skrive din egen tilpassede dynamiske beholdning i et programmeringsspråk du ønsker. Beholdningen skal returnere et format i JSON når passende alternativer er godkjent.

Bruk et eksisterende dynamisk inventarskript

Et skript som brukes til å lage en dynamisk inventar må gjøres kjørbart slik at Ansible kan bruke det.

For å hente informasjon om vertene i et dynamisk inventarskript, kjør ganske enkelt.

./script --list 

Som påpekt tidligere, bør utgangen være i JSON i formatet nedenfor.

En ordbok som består av grupper (dvs. webservere, database_Servers)
  • En liste over administrerte verter per gruppe
  • En ordbok over variabler
Metaordbok
  • Verter og hostvars
Eksempelutgang
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Konklusjon

I denne artikkelen har vi vist hvordan du lager både statiske og dynamiske varelager. Oppsummert er en statisk inventarfil en ren tekstfil som inneholder en liste over administrerte verter eller eksterne noder hvis tall og IP-adresser forblir ganske konstante.

På den annen side fortsetter en dynamisk vertsfil å endre seg etter hvert som du legger til nye verter eller tar ned gamle. IP-adressene til verter er også dynamiske når du stopper og starter nye vertssystemer. Vi håper at du fant denne opplæringen informativ.