Hvordan lage en Ansible Playbook i Ubuntu

Hvordan lage en Ansible Playbook i Ubuntu
Ansible er et kraftig automatiserings- og fjernstyringsverktøy som lar deg administrere alle eksterne maskiner. Ansible er på tvers av plattformer og kan jobbe på de fleste maskiner uten krav til tilleggsprogramvare. Ansible tilbyr også sikkerhet ved å bruke SSH og Python på eksterne maskiner for å utføre spesifiserte oppgaver.

Den støtter to metoder for å administrere eksterne maskiner: ad hoc -kommandoer og Ansible Playbooks. Ad hoc -kommandoer er rå kommandoer som du kan utføre i terminalen for å utføre en oppgave i en enkelt tilfelle.

Ansible playbooks er derimot filer skrevet på YAML -språket. De inneholder et enkelt eller et sett med oppgaver utført på den eksterne maskinen. På grunn av den strenge naturen til YAML, krever Ansible Playbooks nøye oppmerksomhet i den generelle syntaksen.

Denne opplæringen vil lede deg gjennom det grunnleggende om å skrive Ansible Playbooks og utføre kommandoer på eksterne maskiner. For illustrasjonene i denne guiden vil vi sette opp en enkel spillbok som installerer og konfigurerer Apache Webserver.

MERK: Denne opplæringen har ikke hensikt å lære deg Ansible. Alt det gjør er å gi deg tips og retningslinjer for å skrive en Ansible Playbook.

Forutsetninger

For å få maksimal verdi ut av denne guiden, anbefaler vi å følge med. Følgende er ting du trenger.

  • Ubuntu eller en debianbasert distribusjon - dette er maskinen vi bruker for å koble til de eksterne maskinene ved hjelp av SSH.
  • En ekstern maskin å kontrollere med Ansible - vi anbefaler å få et Linux -system som Debian Server.

Når du har begge ovennevnte krav oppfylt, kan vi begynne.

Hvordan installere Ansible på Debian/Ubuntu

Det aller første trinnet er å sikre at vi har Ansible installert og kjører på vår lokale maskin. Jeg vil bruke Ubuntu til denne opplæringen.

Trinn 1
Begynn med å oppdatere systemet ditt ved å bruke kommandoene nedenfor:

sudo apt-get oppdatering
sudo apt-get dist-upgrade -y

Steg 2
Bruk deretter kommandoene nedenfor for å installere Ansible på Ubuntu.

sudo apt installer programvareforekomster-vanlig
sudo add-apt-repository-ja-update ppa: ansible/ansible
sudo apt installerer ansible -y

Nå som vi har installert den på din lokale maskin, kan vi fortsette å konfigurere den.

Hvordan sette opp Ansible Inventory

For å administrere de eksterne serverne som bruker Ansible, må du fortelle om det. Vi gjør dette ved å lage en varelagerfil som inneholder IP -adresser eller vertsnavn på de eksterne maskinene.

Som standard er vertsbeholdningsfilen i/etc/Ansible/verter.

For å lære hvordan du kan opprette en tilpasset vertsbeholdningsfil i Ansible, bør du vurdere en av opplæringsprogrammene våre.

Rediger filen/etc/Ansible/Hosts og legg til IP -adressen til den eksterne maskinen som vist nedenfor:

I eksempelbeholdningen ovenfor oppretter vi en gruppe servere (Linuxhint) som vi vil administrere i denne opplæringen. Du kan ha andre grupper som webservere, database_server osv.

Hvordan sette opp SSH -nøkkelpar

Ansible bruker SSH for å logge inn i de spesifiserte eksterne maskinene og utfører oppgavene som er definert i lekeboken. For å minimere interaksjonen og lage en helautomatisk arbeidsflyt, er det best å lage et SSH -par for å logge inn på den eksterne maskinen.

Trinn 1
Det første trinnet er å generere et SSH-nøkkelpar bruker SSH-KeyGen-verktøyet. Bruk kommandoen som:

SSH-KeenGen

Dette vil interaktivt be deg om å generere et SSH -nøkkelpar. For enkelhets skyld, godta standardverdiene og ikke legg til en passordfrase.

Utgangen for det er nedenfor:

Steg 2
Deretter må vi kopiere SSH-tasten til de eksterne maskinene ved hjelp av SSH-Copy-ID-verktøyet. Bruk kommandoen som:

ssh-kopy-id -i ~/.SSH/ID_RSA.pub bruker@ekstern_ip

Utgangen er som vist nedenfor:

For å lære mer om hvordan du bruker SSH-Copy-ID-kommandoen, bruk dette: Bruk SSH Copy ID-kommando.

Hvordan skrive en Ansible Playbook

Som jeg nevnte tidligere, bruker Ansible Playbooks YAML, og derfor må du observere strenge syntaktiske konvensjoner.

Hvis du ikke er kjent med hvordan du skriver YAML -filer, bør du vurdere opplæringen i denne lenken: Les YAML -filverdier

For å holde oss organisert, la oss lage en katalog der vi skal lagre alle spillbøkene våre.

CD ~
Mkdir Anisble-Workspace
CD Ansible-Workspace

Nå som vi har opprettet katalogen, la oss opprette vår første Ansible Playbook (filen skal ende med .YAML -forlengelse.

VIM -test.Yaml

Inne i YAML -filen, legg til følgende innhold.

---
- Verter: Alle
bli: sant
bli_metod: sudo
oppgaver:
- Navn: "Vis nettverksgrensesnitt"
Kommando: ifconfig
Register: Detaljer
- Navn: 'Få grensesnittdetaljer'
Debug:
msg: "detaljer.stdout "

Lagre filen og kjør den på serveren ved å bruke kommandoen:

Ansible-Playbook Test.Yaml

Kommandoen vil sende ut informasjonen om nettverksgrensesnittene på de eksterne maskinene som vist på bildet nedenfor:

Selv om utgangen ikke er pen og ikke gir den mest effektive måten å samle nettverksinformasjon ved hjelp av Ansible, illustrerer den passende hvordan vi kan bruke Ansible til å kjøre kommandoer på eksterne verter.

Hvordan registrere variabler i Ansible Playbooks

For å lage en variabel i en Ansible Playbook, bruker vi registeret nøkkelord etterfulgt av variabelenes navn. Du kan også bruke variabelenes navn som nøkkelen og angi verdien ved å bruke tykktarmsnotasjonen.

For eksempel to måter å registrere en variabel i Ansible.

Register: Variabel1
variabel2: verdi

Med den definerte variabelen bruker du det ved å kalle navnet i et sett med to krøllete seler som:

'Ringer variabelen variabel1 inne i en streng'
variabel2

Privilegium opptrapping i Ansible

Ansible lar deg også oppgradere privilegiene til en bruker som bruker det. GE -metoden er en boolsk verdi som spesifiserer at oppgavene i spillboken skal kjøres som rot.

I vår første spillbok satte vi ER til True og satte metoden for opptrapping av privilegier som sudo.

Apt Inside Playbooks

Ansible gir oss måter å administrere passende pakker i Debian -baserte system. Ved hjelp av denne metoden kan du oppdatere, installere og avinstallere pakkene ved hjelp av Ansible Playbook.

Tenk på oppdateringen.YAML -fil vist nedenfor:

---
- Verter: Alle
Bli: Ja
bli_metod: sudo
oppgaver:
- Navn: "Oppdater cache og full systemoppdatering"
apt:
Update_cache: sant
cache_valid_time: 3600
Force_apt_get: True

Ovennevnte spillbøker oppdaterer depotbufferen. Dette tilsvarer en rå kommando som:

Sudo apt-get oppdatering

Det kan være utrolig nyttig når du installerer programvare som Apache, Nginx osv., på en ekstern vert.

Eksempel Bruk sak

Denne delen vil opprette en spillbok som installerer en Apache -webserver på Debian -systemet og utfører grunnleggende konfigurasjon.

Denne spillboken viser forskjellige bevegelige stykker av Ansible og vil gi et godt eksempel på hvordan Ansible Playbooks fungerer.

Begynn med å opprette YAML -filen.

vim config_apache.Yaml

Inne i Yaml, skriv inn følgende spillbok.

---
- Verter: Alle
bli: sant
bli_metod: sudo
oppgaver:
- Navn: "Oppdater pakker og oppgradering"
apt:
Update_cache: sant
Oppgradering: Dist
Force_apt_get: True
- Navn: "Installer Apache Server"
apt:
Navn: Apache2
Stat: Siste
- Navn: "Lag dokumentrot"
fil:
Sti: "/var/www/html"
Tilstand: Katalog
Eier: "www-data"
Mode: 0755
- Navn: "Aktiver apache på brannmur"
UFW:
Regel: Tillat
Port: 80
Proto: TCP
- Navn: "Start Apache2 -tjenesten"
service:
Navn: Apache2
Stat: Start på nytt

Lagre filen og kjør den på den eksterne serveren ved å bruke kommandoen:

Ansible-Playbook --User = "Ubuntu" config_apache.Yaml

Ved vellykket utførelse vil du se på utdata som vist.

Bekreft at serveren kjører ved hjelp av Curl som:

Curl 192.168.0.1. 3

Du bør få standard Apache -kildekode (utdrag vist nedenfor).

Og med det har vi konkludert med denne opplæringen.

Konklusjon

Det er godt å merke seg at funksjonaliteten i å skrive spillbøker vil sterkt avhenge av oppgavene du trenger å utføre. Imidlertid håper jeg denne opplæringen ga deg noen få retningslinjer og tips for å lage en av dine egne.

Glad automatisering!