Ansible Rolles - Ultimate måde at løse dine Playbooks på



Denne Ansible Roles-blog fortæller om, hvordan roller bruges til at gøre komplekse playbøger læsbare og genanvendelige med en dæmonstart for at oprette en MEAN Stack.

Ansible giver os mulighed for at automatisere konfigurationsstyring af systemer og tilføje et hvilket som helst antal klienter, som vi ønsker. Har du nogensinde spekuleret på, hvor kompleks dette kan blive? Har du nogensinde spekuleret på, hvor længe og forvirrende playbooks kan få? Hvordan får Ansible det stadig til at virke som en leg? Det bruger begrebet Ansible Roller, og det er det, vi skal tale om i denne blog.

Emner, der er omfattet:





Hvis du ønsker at mestre DevOps, ' selvfølgelig ville være din go-to-mulighed.

Introduktion til synlige roller

Ansible Role er et koncept, der beskæftiger sig med ideer snarere end begivenheder. Dens dybest set et andet abstraktionsniveau, der bruges til at organisere playbooks. De giver et skelet til en uafhængig og genanvendelig samling af variabler, opgaver, skabeloner, filer og moduler, som automatisk kan indlæses i playbook. Playbooks er en samling af roller. Hver rolle har specifik funktionalitet.



Lad mig forklare dette med et eksempel. Antag at du vil have din playbook til at udføre 10 forskellige opgaver på 5 forskellige systemer. Vil du bruge en enkelt playbook til dette? Nej, ved hjælp af en enkelt playbook kan det gøre det forvirrende og udsat for fejl. I stedet kan du oprette 10 forskellige roller, hvor hver rolle udfører en opgave. Derefter er alt hvad du skal gøre, at nævne navnet på rollen inde i spillebogen for at kalde dem. Du lærer, hvordan du bruger roller yderligere i denne blog.

Genanvendelighed af anvendelige roller

Ansible roller er uafhængige af hinanden. Udførelsen af ​​en rolle afhænger ikke af andre, og derfor kan de genbruges. Du kan endda ændre og tilpasse disse roller i henhold til dine krav. Dette reducerer vores opgave med at omskrive en hel sektion kode hver gang vi har brug for det, hvilket forenkler vores arbejde.

Lad os gå tilbage til det foregående eksempel. Du har skrevet 10 roller, og nu skal du bruge 5 af dem til et andet sæt klargøring. Skriver du hele playbook igen? Nej, du genbruger bare disse 5 roller ved at kalde dem i denne nye Playbook. Du kan også foretage ændringer, hvis det kræves, men det vil stadig ende med at spare meget af din tid.



Lad os sige, at du skal skrive en playbook til opsætning af LAMP stack. Du skal oprette 4 roller, hver til oprettelse af Linux, Apache, MongoDB og PHP. Hvis du i fremtiden vil have en anden playbook til opsætning af LAMP stack såvel som WordPress, vil du igen oprette nye roller til LAMP stack og WordPress? Ingen! Du kan blot genbruge de ældre roller (bruges til LAMP stack) og desuden oprette en ny rolle til WordPress.

Roller Directory Struktur

Brug Ansible Roles til at forvente, at filerne skal have en bestemt filstruktur. Den mest forvirrende del af at bruge roller er at forstå filhierarkiet. Ansible giver en funktion kaldet Ansible Galaxy, der hjælper dig med at lege med roller. Vi ved allerede, hvor vores Ansible er på Ubuntu (/ etc / ansible). Har du nogensinde set et bibliotek kaldet roller under / etc / ansible? Denne mappe findes nøjagtigt af denne grund. Du opretter forskellige roller i denne mappe.

Mappen vil se sådan ud:

java til magt af

Træ - Ansible roller - Edureka

Du kan oprette en rolle ved hjælp af ansible-galakse init kommando inde i / etc / ansible / roller.

$sudoansible-galaxy init

Du vil se, at andre rollebøger også ville være oprettet.

Disse mapper er opgaver, håndterere, standardindstillinger, vars, filer, skabeloner og meta og en README.mdfil.

Opgaver - Indeholder hovedlisten over opgaver, der skal udføres af rollen. Detindeholdermain.yml-filen til den pågældende rolle.

Handlere - Indeholder håndterere, der kan bruges af denne rolle eller endda hvor som helst uden for denne rolle.

Standardindstillinger - Indeholder standardvariablerne, der skal bruges af denne rolle.

Hvis - Denne mappe består af andre variabler, der skal bruges af rollen. Disse variabler kan defineres i din playbook, men det er en god vane at definere dem i dette afsnit.

Filer - Indeholder filer, der kan distribueres af denne rolle. Den indeholder filer, der skal sendes til værterne, mens rollen konfigureres.

Meta - Definerer metadata til denne rolle. Dybest set indeholder den filer, der opretter rolleafhængigheder.

Hver opgave mappe skal bestå af en main.yml fil, hvor den faktiske kode for den pågældende rolle er skrevet.

Lad os nu forstå arbejdet eller rollerne med en demo om installation af MEAN Stack.

Demo: Installation af MEAN Stack ved hjælp af Ansible Roles

Jeg demonstrerer, hvordan jeg installerer MEAN Stack ved hjælp af Ansible Roles ved blot at udføre en enkelt playbook. Vi har tre roller: 1) Installation af forudsætninger, 2) Installation af MongoDB og 3) Installation af NodeJS. Jeg antager, at du allerede har gjort det installerede Ansible og lavede en server-klientforbindelse på Ubuntu . Lad os begynde at spille med Ansible Roller.

Trin 1 - Naviger til / etc / ansible / role-kataloget og opret rollerne til forudsætninger, MongoDB og NodeJS.

$ cd / etc / ansible / roller $ sudo ansible-galaxy init forudsætninger $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Du skal nu se tre roller i din 'roller' -mappe.

Trin 2 - Skriv main.yml for forudsætninger, der installerer Git.

$ cd forudsætninger / opgaver / main.yml --- - navn: Installer git apt: navn: git tilstand: nuværende update_cache: ja

Trin 3 - Skriv main.yml til MongoDB-rolle

$ cd /mongodb/tasks/main.yml --- - navn: MongoDB - Importer offentlig nøgle apt_key: nøgleserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - navn: MongoDB - Tilføj lager apt_repository: filnavn: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' tilstand: nuværende update_cache : ja - navn: MongoDB - Installer MongoDB apt: navn: mongodb-org tilstand: nuværende update_cache: ja - navn: Start mongod shell: 'mongod &'

Trin 4 - Skriv main.yml fornodejsrolle

$ cd nodejs / task / main.yml --- - navn: Node.js - Hent script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- navn: Node.js - Indstil eksekveringstilladelse til scriptfil: sti:' {{var_node}} / nodejs.sh '-tilstand:' u + x '- navn: Node.js - Udfør installationsskriptskal:' {{var_node}} / nodejs.sh '- navn: Node.js - Fjern installationsskriptsfil: sti:' {{var_node}} / nodejs.sh 'tilstand: fraværende - navn: Node.js - Installer Node.js apt : navn = {{item}} state = nuværende update_cache = ja med_items: - build-essential - nodejs - navn: Node.js - Installer bower og gulp globalt npm: name = {{item}} state = nuværende global = ja med_items : - bower - gulp

Trin 5 - Skriv din hovedafspilningsbog

$ cd /etc/ansible/mean.yml --- - værter: noder remote_user: ansible bliver: ja blive_metode: sudo vars: #variable nødvendig under nodeinstallation var_node: / tmp-roller: - forudsætninger - mongodb - nodejs

Nu hvor vi har defineret roller til installation af forudsætningerne, MongoDB og NodeJs, lad os implementere dem. Udfør playbook med følgende kommando.

$sudoansible-playbook /etc/ansible/mean.yml -K

Som du kan se, er alle opgaver udført, og deres status er ændret. Dette betyder, at ændringer i playbook er blevet anvendt på din server såvel som på værten. Opsætning af MEAN Stack er blot et eksempel. Du kan oprette bogstaveligt talt alt og alt ved hjælp af Ansible Roles.

Dette bringer os til slutningen af ​​Ansible Roles-bloggen. Hvis du finder denne artikel nyttig, skal du tjekke ' tilbudt af Edureka. Det dækker alle de værktøjer, der har gjort it-branchen bedre.

Har du et spørgsmål til os? Send det venligst på og vi vender tilbage til dig.