Ansible Roles Tutorial

Ansible Roles Tutorial
Vi har lært hvordan vi skal utføre de forskjellige overskrivende uttalelsene i Ansible Terminalen gjennom denne opplæringen. Vi dekket også hvordan du oppretter en spillbok i Ansible, og vi vil liste og utføre de forskjellige oppgavene i spillboken. Vi skal lære om rollene i Ansible i dag. Rollen er en metode for å omorganisere ethvert element i Ansible.

Rollens struktur i Ansible lar oss importere spesifikke parametere automatisk, handlinger, dokumenter, skript og kontrollere som er basert i henhold til et forhåndsdefinert dokumentformat i Ansible. Hovedmetoden for å dele opp en spillbok i mange dokumenter er rollen. Det letter opprettelsen av kompliserte spillbøker, og det letter også hvordan vi vil gjenbruke dem i Ansible. Ved å dele spillboken, kan du skille den inn i flere gjenbrukbare deler. Så hver rolle er begrenset til en spesifikk funksjon eller tiltenkte resultater. Hver av prosedyrene, som kreves for å levere konklusjonen som ble holdt innenfor den aktuelle rollen, er definert som forsørgere i andre roller.

Rollens struktur i Ansible

La oss nå forstå den grunnleggende strukturen i Ansible roller. For å bruke roller i Ansible, vil vi lage en ny katalog med den nøyaktige identiteten til enhver rolle. I rollen hierarki er dokumentene ordnet på en underkatalog. For å opprette katalogen, bruker vi følgende Ansible-Galaxy-rollekommando:

[root@master ansible]# ansible-galaxy init win_package_install_role

Etter å ha kjørt kommandoen over, vil vi få følgende ønsket utfall:

- Rolle win_package_install_role ble opprettet med hell

Siden Ansible-Galaxy i seg selv er inkludert i Ansible-verktøyet, trenger vi ikke å installere noen ytterligere komponenter for det. Hvis du vil sjekke den hierarkiske strukturen til rollen og flere kataloger med modifiserbar utforming, vises dokumenter etter å ha kjørt kommandoen nedenfor:

[root@master ansible]# tre win_package_install_role

Som vist har vi nå totalt 8 tilgjengelige kataloger i rollen som heter “Win_Package_install_role” og 8 skiftende dokumenter.

Noen ganger må vi oppdatere dokumenter som Readme.MD og Meta/Main.YML for å beskrive din rolle riktig, selv om det ikke er nødvendig for rollen å fungere. Det er viktig å inkludere eventuelle krav i Meta/Main.YML hvis rollen trenger å få tilgang til flere roller for å løpe. Dette vil gjøre det mulig for Ansible å oppnå dette etter behov. For å gå inn i den nye katalogen, som vi nylig har opprettet, vil vi skrive uttalelsen nedenfor i terminalen.

[root@master ansible]# cd win_package_install_role

Deretter vil den vise den nye katalogen lagt til hovedveien vist nedenfor:

[root@master ansible] ~/win_package_install_role#

Det er ingen forutsetninger som er nødvendige for din win_package_install_role -rolle. Et fungerende metafilformat vises her som et eksempel. Hvis du vil endre det for å gjenspeile navnet ditt, navnet på virksomheten din, og hvis det er aktuelt, også endre lisensen ved å skrive følgende kommando:

[root@master ansible] ~/win_package_install_role# nano meta/main.yml

Spesifisere rolleoppgavene i Ansible

Oftest vil rollen utføre en eller enda flere aktiviteter for å sette opp den eksterne enheten under rollens kriterier. Installere og sette opp WIN_PACKAGE_INSTALL_ROLE er det vi bør gjøre i denne situasjonen.

win_package_install_role /oppgaver /main.yml:
Når vi kjører en rolle, søker den som standard "oppgavene" undermappen for et dokument som heter Main.yml og så vil vi liste opp alle oppgavene i den. For mer komplekse roller kan du dele oppgavene i flere dokumenter og ringe dem fra Main.YML ved hjelp av inkluderingsoppgavene eller importoppgavene moduler. Nedenfor er kommandoen vi vil bruke for å komme inn på oppgavens katalog.

# oppgaver fil for win_package_install_role
- Navn: Henter Product_name Installasjonsstatus
Win_shell: 'Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \* | Where -Object -Property DisplayName -lignende "*Product_name*" | Format -tabell IdentifyingNumber, Navn, DisplayName, LocalPackage -Autosize '
Register: Installasjon_status
- Debug:
msg:
- "Produkt allerede installert"
- "installasjon_status.stdout_lines "
Når: Installasjon_status.stdout_lines er definert og installasjon_status.stdout_lines | lengde> 0
- Meta: end_play
Når: Installasjon_status.stdout_lines er definert og installasjon_status.stdout_lines | lengde> 0
- Navn: Opprett målkatalog hvis ikke eksisterer
win_file:
Sti: "Target_Machine_Path"
Tilstand: Katalog
- Navn: Last ned installasjonsprogrammet
win_get_url:
URL: "url_to_download_setup"
dest: "Target_machine_path"
Registrer deg: Last ned
Når: url_to_download_setup er definert og url_to_download_setup != ""
- set_fact:
package_name_zip: "last ned.dest "
Når: Last ned.mislyktes == falsk
- Navn: Dekomprimerer pakken
WIN_UNZIP:
src: "package_name_zip"
dest: "Target_machine_path"
Delete_archive: Ja
Register: Decompress_status
Når: (package_name_zip er definert) og (".ZIP "i package_name_zip eller".gz "i package_name_zip eller".gz "i package_name_zip)
- Navn: Finn oppsettfilplassering
WIN_FIND:
Stier: "Target_Machine_Path"
mønstre: ["setup_name"]
Recurse: True
Register: Resultat
- Navn: Innstilling av installasjonssti for oppgitt Windows -pakke
set_fact:
setup_path: "resultat.filer [0].sti"
Når: Resultat.mislyktes == falsk og resultat.matchet> 0
- Navn: Installere "setup_name"
Win_Package:
Sti: "setup_path"
PRODUKT_ID: Auto
Stat: Nåværende
Argumenter: /q
Register: Status
- Debug:
msg: "setup_name installert vellykket"
Når: Status.RC == 0
- set_fact:
Reboot_required: True
Når: Status.Reboot_required er definert og status.REboot_required
gi beskjed:
- Start Windows -serveren på nytt

I dette dokumentet har vi gjort oppgaver som om vi har hentet navnet på produktet. Vi har laget en målkatalog hvis katalogen ikke er tilgjengelig. Vi må laste ned nettadressen, ukomprimert pakken, funnet plasseringen av oppsettet, og vi har også satt stedet for vinduspakke osv.

win_package_install_role /standard /main.yml:
Standardparametrene er definert i standardkatalogen. Standardparametrene er de med største betydning, noe som gjør dem enkle å endre. Parameteren definert i standardverdier/hoved.YML ville bli brukt hvis den ikke er definert noe sted.

---
# standardfil for win_package_install_role
Target_Machine_Path: C: \ Programfiles

win_package_install_role /var /main.yml:
For å spesifisere parametrene som kreves for rollen, bygger vi et VaR -dokument i dette trinnet. For å unngå titteltvister med parametere utenfra rollen, er det et smart alternativ at vi vil prefiksere identifikatorene til rolleparametrene.

# vars -fil for win_package_install_role
url_to_download_setup: https: // arkiv.Apache.org/dist/httpd/binær/win32/httpd-2.2.25-win32-x86-no_ssl.MSI
Produktnavn: Apache
Setup_name: httpd-2.2.25-win32-x86-no_ssl.MSI
Target_Machine_Path: C: \ Installatører

win_package_install_role /håndterere /main.yml:
Håndtererne av Ansible vil bli lagret i behandlerens katalog. Oppgavene i dokumentet er kjent som behandlere som kan merkes gjennom et skuespill for utførelse etter at det er over. Vi kan ansette håndterere når vi anser som nødvendig.

# håndterere fil for win_package_install_role
- Navn: Start Windows Server på nytt
win_reboot:
Når: Reboot_required

win_package_install_role /meta /main.yml:
Når vi bestemmer oss for å kringkaste rollen på Galaxy.Ansible.com, vi bruker metakatalogen for å inneholde forfattermetadata. Ansible rolleinformasjon inkluderer utgiveren som er "Kalsoom", støttende systemer og avhengige.

Galaxy_info:
Forfatter: Kalsoom
Beskrivelse: Installer gitt Windows -pakken
Selskap: Ng Pvt Ltd
Lisens: Lisens (GPL-2.0-eller-later, mit osv.)
min_ansible_version: "2.9 "
Plattformer:
- Navn: Windows

Opprette rolle_main.YML Playbook:

I denne lekeboken vil vi gi navnet på rollen som vi opprinnelig skapte sammen med verten. Vi vil også samle informasjonen relatert til vertene. Følgende er kommandoen som brukes til å opprette spillboken i Ansible:

[root@master ansible]# nano rolle_main.yml
Alle:
verter:
Windows_host:
Ansible_host: 192.168.5.220
Ansible_user: Ansible
Ansible_Password: ******
Ansible_Connection: WinRM
Ansible_port: 5986
Ansible_winrm_server_cert_validasjon: Ignorer

Etter det vil vi nå kjøre uttalelsen for å få ønsket utgang i terminalen:

[root@master ansible]# ansible-playbook rolle_main.yml -i vert.yml

Konklusjon

Begrepet roller og hvordan man konstruerer en rolle i Ansible ble dekket i denne artikkelen. Rollenes hierarkiske struktur er også dekket. Hver katalog som ble lagret under rollen ble forklart i detalj. For å forstå hvordan roller brukes i Ansible, har vi i tillegg utviklet et eksempel.