TwitterFacebookLinkedIn
Som systemadministrator kan du ha kommet over en situasjon der du trenger å administrere flere servere.Denne situasjonen kan være skremmende med mindre du vurderer å oppdage Ansible Hosts -filen.Ansible Hosts -fil eller inventar er en viktig fil som forteller Ansible om vertene å administrere.
Ansible Hosts -fil hjelper deg å automatisere alle disse oppgavene.Og i denne opplæringen lærer du hvordan du setter opp ansatte varelager fra bunnen av.
Les videre og vær aldri redd for å administrere flere servere samtidig!
Forutsetninger
Denne opplæringen vil være en praktisk demonstrasjon. Hvis du vil følge med, sørg for at du har følgende.
- Ansible kontrollnoder, som kan være din lokale maskin - denne opplæringen bruker Ubuntu 20.04 og AWS EC2 -forekomster.
I slekt:Hvordan installere Ubuntu 20.04 [trinn-for-trinn]
- Noen få servere som Ansible kan administrere (Ansible verter) - denne opplæringen bruker Ubuntu og AWS EC2 vertsnoder.SSH -nøklerog en brukerkonto som har tilgang til hver node medsudoprivilegier er påkrevd.
- AnsibleogPythonInstallert på alle nodene (kontrollnoder og vertsnoder).Ansible moduler og kommandoer krever Python -biblioteker.
I slekt:Guide: Hvordan oppsett Ansible (Ubuntu, RHEL, Centos, MacOS)
- AnAWS -bruker med programmatisk tilgang(AWS Access Key og Secret Access Key) - Denne brukeren må ha tillatelser til å opprette, administrere AWS -ressurser og ringe API -anrop.
Sette opp en tilpasset varelagerfil
Nå som du har alle forutsetningene på plass, er det på tide å begynne å konfigurere Ansible ved å sette opp en tilpasset varelagerfil.Men først må du sjekke om både Ansible og Python er riktig installert.
1. Kjør kommandoen nedenfor for å bekrefte Ansible og Python -versjoner installert på hver node.
Ansible -Versjon Python3 -Versjon
Du vil se Ansible og Python -versjonsnumrene, som vist nedenfor.
2. Åpne standardverterfil (/etc/ansible/verter) Bruke din favoritt tekstredigeringsprogram for å se hva en ansibleverterfilen ser ut som.
Som standard ser Ansible etter vertene i/etc/ansible/verterfil.Standard lagerfil inneholder forskjellige eksempler du kan bruke som referanser mens du setter opp varelageret ditt.
Nedenfor kan du severterFilens innhold er delt inn i mange seksjoner med eksempler:
- De[webservere]Seksjonen er kommentert, og det er her du erklærer vertene som vil bli brukt som webservere.
- De[DBSERVERS]Seksjonen er også kommentert, der du erklærer verter som vil bli brukt som databaseservere og så videre.
Beslagene [] brukes til å gruppere verter sammen for å bli målrettet som en gruppe i spillbøker.
I slekt:Hvordan bygge (og faktisk forstå) en solid Ansible Playbook
Du kan sette ett vertsnavn eller IP -adresse i hver gruppe.For eksempel kan en server være både en webserver og en dbserver.Legg merke til at Ansiblevariablerkommer fra alle gruppene de er medlemmer av.
Avhengig av dine behov, kan du ha så mange grupper du vil i varelagerfilen.For eksempel, hvis du administrerer en omfattende infrastruktur, kan det hende du trenger forskjellige grupper for hvert miljø, for eksempel dev, test og produksjon.
3. Kjør kommandoen nedenfor for å opprette en ny katalog (MKDIR) som heter Ansible i din hjemmekatalog.DeAnsibleKatalog lagrer alle filene relatert til Ansible -prosjektet ditt.
CD && mkdir Ansible
Du kan bruke standardbeholdningsfilen uten problemer.Men å ha din tilpassede varelagerfil for hvert prosjekt du jobber med er god praksis.Hvordan?For det første hjelper du å bruke en spillbok på feil gruppe av servere å bruke per-Project Inventory Files.For det andre kan du dele lagerfilen din med andre som bruker Ansible.
4. Kjør nå kommandoene nedenfor for å flytte inn i den nyopprettede katalogen (mulig), opprette og åpne en ny lagerfil som heter Inventory.
CD Ansible && Nano Inventory
5. Legg til dine ansible verter som er ugruppert inne i varelagerfilen, lagre endringene og lukk filen.Merk at bare en oppføring per linje er tillatt, som vist nedenfor.
Hvis du legger mer enn en vert på samme linje, vil de bli betraktet som en vert.Som et resultat får du en feil når du prøver å kjøre spillboken.
På dette tidspunktet har du en grunnleggende, men funksjonell ansettbar inventarfil.
6. Til slu*tt, kjør nedenforAnsible-InventoryKommando for å –Liste alle vertene og gruppene i varelagerfilen din (-i varelager).
Du må bruke -i -alternativet, ellers vil Ansible se etter standardvertenes fil i stedet.
Ansible -Inventory -I Inventory -List
Selv om du bare har tre ugrupperte servere som er oppført i varelagerfilen, gir Ansible automatisk to forskjellige grupper, som følger:
- alle– Inneholder alle serverne fra inventarfilen din, uansett hvordan de er organisert.
- ugruppert- Inneholder alle serverne som ikke tilhører noen gruppe.
Testing avTilpasset varelagerfil
Nå som du har en tilpasset varelagerfil, må du fortelle Ansible å bruke den filen i spillbøkene dine.Men først, sørg for å teste tilkoblingen mellom din Ansible Control Server og vertene i varelagerfilen.
Kjør kommandoen nedenfor tilping
alle
servere i varelagerfilen din (-Jeg varelager
) fra din Ansible Control Server.
Ansible -Jeg varelager alle -m ping
Denne kommandoen tester over -kontrollservere, vertene i tilkoblingen til lagerfilen din, og gir utdata som følger:
- SUKSESS -Bekrefter at du kan nå alle servere som er oppført i varelagerfilen din fra Ansible Control Server.
- “Discovered_Interpreter_python”- Python -tolken som brukes på de eksterne serverne.I dette tilfellet, Python 3.
- “endret“:falsk -Indikerer at Ping -modulen ikke gjorde noen endringer på serverne dine.DepingModul er en av få moduler som ikke gjør noen endringer på serverne dine, men som bare returnerer informasjon.
- “ping": "Pong“: Denne linjen indikerer at pingmodulen ble utført med hell.Kontrollnoden din sender en ping -forespørsel til alle servere som er oppført i varelagerfilen, og alle servere svarer Pong.
Kjør nå følgende kommando for å bekrefte tilkoblingen til en spesifikk server.Erstatte159.65.197.8
med det faktiske navnet på den eksterne serveren din.
Ansible -i Inventory 159.65.197.8 -m ping
Utgangen nedenfor verifiserer tilkobling til en server med IP -adressen159.65.197.8er enSUKSESS.
Organisere servere i grupper
Du har nettopp opprettet en grunnleggende varelagerfil med ugrupperte verter, og den fungerer.Så hvorfor gruppere serverne dine?Når du organiserer serverne dine i grupper, blir de mer håndterbare.Samtidig kan du bruke et sett med konfigurasjoner eller kjøre en spillbok på en bestemt gruppe servere i stedet for å kjøre den på alle servere.
Å organisere serverne dine i sine respektive grupper:
1. Åpne din skikkinventarfil i en tekstredigerer.
2. Legg serverne dine i gruppene sine, som vist nedenfor.Denne opplæringen organiserer servere i tre grupper (Webserver, DBSERVERS og Production), som vist nedenfor.
Lagre og lukk inventarfilen når du er ferdig.
3. Kjør nå kommandoen nedenfor for å-liste alle verter og grupper i varelagerfilen din (-i varelager).
Ansible -Inventory -I Inventory -List
Utgangen nedenfor viser at serverne er gruppert i webservere, DBSERVERS og produksjon.Legg merke til at alle servere fremdeles tilhører alle gruppe, og alle servere som ikke tilhører noen grupper er plassert i den ugrupperte gruppen.
På dette tidspunktet har du allerede en grunnleggende varelagerfil med noen få servere organisert i grupper.
4. Kjør følgende APT -kommando for å installere Nginx -pakken på alle servere i WebServer -gruppen.Ansible har en innebygd APT-modul (Ansible.Builtin.APT) Du kan bruke til å installere pakker på de eksterne Ubuntu-serverne.
Ansible -i Inventory -M Ansible.Builtin.APT -A "Navn = Nginx State = Present" WebServers
I slekt:Lære ubuntu apt komme gjennom eksempler
5. Til slu*tt kan du kjøre kommandoen nedenfor for å bekrefte statusen til Nginx -tjenesten som den kjører på alle servere i WebServer -gruppen.
Ansible -i Inventory -M Shell -a "SystemCTL Status Nginx" WebServers
Utgangen nedenfor indikerer at Nginx -tjenesten kjører på alle servere i WebServer -gruppen og er nå klare til å betjene netttrafikk!
Tilsvarende kan du utføre andre oppgaver som ikke er begrenset til de nedenfor:
- Installer MariaDB -pakken på alle servere idbserveregruppe.
- Bruk et sett med konfigurasjoner på alle servere i produksjonsgruppen.
I slekt:Riktig måte å bruke Ubuntu SystemCTL for å kontrollere SystemD
Arbeider med dynamisk inventar
Så langt har du jobbet med Ansible Playbooks og statiske og tilpassede varelagerfiler.Men i den virkelige verden vil du jobbe med skymiljøer, som AWS, Google Cloud, Azure og så videre.Disse plattformene har egne API -er for å administrere infrastruktur og tjenester.
Det kan hende du må skalere servere inn og ut ofte, der en statisk varelagerfil ikke vil fungere bra.Infrastrukturer endres kontinuerlig, og du må oppdatere varelagerfilen ofte.
Heldigvis gir Ansible en måte å jobbe med skymiljøer og ekstern varelager kalt Dynamic Inventory.Og i denne opplæringen vil du berøre de grunnleggende konseptene for dynamisk inventar i en kort demo for AWS.
1. Kjør kommandoen nedenfor for å installere BOTO3 -biblioteket.Ansible bruker dette biblioteket for å spørre om informasjon om verter i AWS EC2.
PIP3 installer BOTO3
2. Kjør deretter kommandoen nedenfor for å opprette en ny katalog (MKDIR) kalt/opt/Ansible/Inventory og navigere til den katalogen (CD).
mkdir -p/opt/ansible/inventar && cd/opt/antible/beholdning
3. Konfigurer AWS EC2 Dynamic Inventory med følgende:
- Opprett en ny fil som heteraws_ec2.yamlI tekstredigereren din, og fyller filen med innholdet nedenfor.Deaws_ec2.yamlFilen er konfigurasjonsfilen for AWS EC2 Dynamic Inventory.
- Bytt ut
og med din egen AWS-tilgang og hemmelige nøkkel.
- Spar og lukkaws_ec2.yamlfil.
--- Plugin: AWS_EC2AWS_ACCESS_KEY: AWS_SECRET_KEY: Keyed_Groups:-Nøkkel: Tagger Prefiks: Tag
Merk at du må inkludere - i begynnelsen av filen for YAML -syntaks.Dette symbolet er ikke en skrivefeil, men er nødvendig for at Ansible skal analysere filen riktig.
4. Åpne /etc/ansible/ansible.cfgFil i en tekstredigerer og aktiver AWS_EC2 Inventory -plugin med følgende:
- UkommentarEnable_pluginsdirektiv ved å fjerne#symbol i begynnelsen.Dette direktivet muliggjør AWS_EC2 Inventory -plugin.Ansible bruker denne pluginen for å samhandle med AWS EC2.
- Angi enable_plugins -direktivets verdi til AWS_EC2, som vist nedenfor.
- Lagre endringene og lukkAnsible.cfgfil.
Du har nå vellykket konfigurert Ansible til å bruke AWS EC2 Dynamic Inventory.
5. Kjør til slu*tt kommandoen nedenfor for å bekrefte at Ansible kan koble seg til AWS og trekke informasjon om vertene.
Ansible -Inventory -I AWS_EC2.YAML --Graph
I utdataene nedenfor trakk Ansible informasjon om de to vertene i AWS EC2 -kontoen din.Hver gang du avslu*tter eller oppretter en forekomst i AWS, oppdateres inventaret automatisk.
Grupp serverne etter region eller andre kriterier (DBServer, WebServers…).Du kan deretter installere programvare på de serverne ved hjelp av Ansible Playbooks.
For eksempel kan det være lurt å gruppere serverne av webservere og installere NGINX på alle serverne i den gruppen akkurat som du ville gjort for en statisk varelager.
Sikre sensitive data i varelagerfilen
Som du har lagt merke til, varelagerfilen (aws_ec2.yaml) Inneholder sensitive data, for eksempel AWS Access -tasten og den hemmelige nøkkelen.Å lagre disse tastene i klar tekst i varelagerfilen er risikabelt.Heldigvis gir Ansible deg en måte å kryptere varelagerfilene dine ved hjelp av Ansible-hvelv.
For å kryptere inventarfilene dine, må du først angi$ Redaktør
Variable verdi i skallet ditt.Denne variabelen forteller Ansible hvilken tekstredigerer (dvs. Nano, Vim ...) som skal brukes når du redigerer en fil ved hjelp av Ansible-Vault.
1. Åpne~/.bashrcfil i redaktøren din og legg til eksportredigereren = Nano -linjen til slu*tten av~/.bashrcfil.Sørg for å erstatte Nano med din foretrukne tekstredigerer, lagre endringene og lukk redaktøren.
De~/.bashrcFil er et skallskript som Bash kjører når Bash Shell starter opp.Denne filen er der du angir miljøvariabler, start bakgrunnsprosesser og angir gjeldende brukers alias.
2. Kjør deretter følgende kommandoer for å skaffe skriptet, bruke endringene og bekrefte at redigeringsvariabelen er satt riktig.
# Kilde skriptet, og bruk endringene.~/.bashrc# Skriv ut $ redigeringsvariabelen Valueecho $ Editor
Du vil se navnet på tekstredigereren din som er skrevet ut på terminalen, som vist nedenfor.
3. Kjør ANSIBLE-VAULT CREATE-kommandoen nedenfor for å opprette en ny kryptert varelagerfil for å lagre AWS Access-tasten og den hemmelige tasten.Du kan navngi filen som du vil, men filen heter Encrypted_Inventory i denne opplæringen.
Ansible-Vault Create Encrypted_Inventory
Du blir bedt om å angi og bekrefte et passord for å kryptere og dekrypterekryptert_inventoryfil.
En nykryptert_inventoryFilen vil bli opprettet og åpnet automatisk i standard redigeringsprogrammet (Nano), mens du angir i $ redigeringsvariabelen.
Passordet skal være mer enn åtte tegn, en blanding av store bokstaver og små bokstaver, og minst ett tall eller spesiell tegn.
4. Legg til varelagerdataene ikryptert_inventoryFil, lagre og lukk filen når du er fornøyd med endringene.
På dette tidspunktet har du opprettet en kryptert varelagerfil som kan brukes med Ansible-Playbook-kommandoen.
5. Kjør CAT -kommandoen nedenfor for å bekrefte at filen er kryptert.
CAT -kryptert inventar.yaml
Du vil se en utgang som ligner på den nedenfor hviskryptert_inventoryFilen er kryptert.$ Ansible_Vault; 1.1; AES256 -strengen indikerer at filen er kryptert ved hjelp av Ansible Vault med AES256 -chifferen.
De krypterte dataene er den tilfeldige strengen med tegn under $ Ansible_Vault -strengen.Ingen kan lese AWS -tilgang og hemmelige nøkler uten riktig passord.
6. Til slu*tt, kjør Ansible-hvelv-kommandoen for å dekryptere og se innholdet ikryptert_ inventar.yamlfil.
Oppgi passordet du angir for å kryptere og dekryptere filen i trinn tre.
Ansible-Vault View Encrypted_Inventory.yml
Som du kan se nedenfor, dekrypterer Ansiblekryptert_ inventar.yamlfil og viser innholdet etter å ha bekreftet passordet.
Konklusjon
Denne opplæringen gikk deg gjennom å konfigurere og konfigurere ansettede varelager på Ubuntu 20.04 -serveren.Du har opprettet en tilpasset Ansible Inventory File/Ansible Hosts -fil og organiserte servere i grupper.Du kan nå effektivt administrere flere servere, som å installere pakker på alle servere i en gruppe samtidig.
På dette tidspunktet kan du begynne å bruke AnsibleverterFil for å automatisere serverkonfigurasjons- og administrasjonsoppgavene.
Det er mye mer å lære om Ansible.Hvorfor ikke begynne å lære åTilordne en varelager -alias til en variabel?Det er på tide å gjøre spillbøkene dine mer lesbare og enklere å vedlikeholde.