Ansible Roles - Ultieme manier om uw Playbooks te ontwarren



Deze Ansible Roles-blog vertelt hoe rollen worden gebruikt om complexe playbooks leesbaar en herbruikbaar te maken met een demonstratie van het opzetten van een MEAN Stack.

Ansible stelt ons in staat om het configuratiebeheer van systemen te automatiseren en een willekeurig aantal clients toe te voegen zoals we willen. Heb je je ooit afgevraagd hoe complex dit kan worden? Heb je je ooit afgevraagd hoe lang en verwarrend de playbooks kunnen worden? Hoe laat Ansible het nog steeds een makkie lijken? Het gebruikt het concept van Ansible Roles en daar gaan we het in deze blog over hebben.

Behandelde onderwerpen:





Als je DevOps onder de knie wilt krijgen, ' natuurlijk zou uw go-to-optie zijn.

Inleiding tot Ansible-rollen

Ansible Role is een concept dat zich bezighoudt met ideeën in plaats van met gebeurtenissen. Het is eigenlijk een ander abstractieniveau dat wordt gebruikt om playbooks te organiseren. Ze bieden een skelet voor een onafhankelijke en herbruikbare verzameling variabelen, taken, sjablonen, bestanden en modules die automatisch in het playbook kunnen worden geladen. Playbooks zijn een verzameling rollen. Elke rol heeft specifieke functionaliteit.



Laat me dit uitleggen met een voorbeeld. Stel dat u wilt dat uw playbook 10 verschillende taken uitvoert op 5 verschillende systemen, zou u hiervoor dan één playbook gebruiken? Nee, het gebruik van één playbook kan het verwarrend en vatbaar voor blunders maken. In plaats daarvan kunt u 10 verschillende rollen maken, waarbij elke rol één taak zal uitvoeren. Vervolgens hoeft u alleen maar de naam van de rol in het playbook te noemen om ze te bellen. Verderop in deze blog leer je hoe je rollen kunt gebruiken.

Herbruikbaarheid van Ansible-rollen

Ansible Roles zijn onafhankelijk van elkaar. De uitvoering van één rol is niet afhankelijk van andere en daarom kunnen ze worden hergebruikt. U kunt deze rollen zelfs naar uw wensen aanpassen en personaliseren. Dit vermindert onze taak om een ​​hele sectie code te herschrijven elke keer dat we deze nodig hebben, waardoor ons werk wordt vereenvoudigd.

Laten we teruggaan naar het vorige voorbeeld. Je hebt 10 rollen geschreven en nu moet je er 5 gebruiken voor een andere set van provisioning. Schrijf je het hele playbook opnieuw? Nee, je hergebruikt die 5 rollen gewoon door ze in dit nieuwe Playbook op te roepen. U kunt desgewenst ook wijzigingen aanbrengen, maar het zou nog steeds veel tijd besparen.



c ++ type conversie

Stel dat u een playbook moet schrijven voor het opzetten van LAMP-stack. Je moet 4 rollen maken, elk voor het maken van Linux, Apache, MongoDB en PHP. Als je in de toekomst een ander speelboek wilt voor het opzetten van LAMP-stack en voor WordPress, ga je dan weer nieuwe rollen maken voor LAMP-stack en WordPress? Nee! U kunt eenvoudig de oudere rollen (gebruikt voor LAMP-stack) hergebruiken en bovendien een nieuwe rol voor WordPress maken.

Rollen Directory Structuur

Als u Ansible Roles gebruikt, kunt u verwachten dat bestanden zich in een bepaalde bestandsstructuur bevinden. Het meest verwarrende deel van het gebruik van rollen is het begrijpen van de bestandshiërarchie. Ansible biedt een functie genaamd Ansible Galaxy waarmee je met rollen kunt spelen. We weten al waar onze Ansible zich bevindt op Ubuntu (/ etc / ansible). Heb je ooit een map met de naam rollen gezien onder / etc / ansible? Die map bestaat precies om deze reden. Binnen deze directory creëer je verschillende rollen.

De map ziet er als volgt uit:

Tree - Ansible Roles - Edureka

U kunt een rol aanmaken met ansible-melkweg init commando binnen / etc / ansible / rolls.

$sudoansible-galaxy init

U zult zien dat er ook andere rolmappen zijn gemaakt.

Deze mappen zijn taken, handlers, standaardinstellingen, variabelen, bestanden, sjablonen en meta en een README.mdhet dossier.

Taken - Bevat de hoofdlijst met taken die door de rol moeten worden uitgevoerd. Hetbevathet main.yml-bestand voor die specifieke rol.

Handlers - Bevat handlers die door deze rol of zelfs overal buiten deze rol kunnen worden gebruikt.

Standaardwaarden - Bevat de standaardvariabelen die door deze rol worden gebruikt.

Wiens - Deze map bevat andere variabelen die door de rol zullen worden gebruikt. Deze variabelen kunnen in uw playbook worden gedefinieerd, maar het is een goede gewoonte om ze in deze sectie te definiëren.

Bestanden - Bevat bestanden die door deze rol kunnen worden ingezet. Het bevat bestanden die naar de hosts moeten worden gestuurd tijdens het configureren van de rol.

Meta - Definieert metadata voor deze rol. In feite bevat het bestanden die rolafhankelijkheden vaststellen.

Elke taak directory moet bestaan ​​uit een main.yml bestand waar de feitelijke code voor die specifieke rol is geschreven.

Laten we nu de werking of rollen begrijpen met een demo van het installeren van MEAN Stack.

Demo: MEAN Stack installeren met Ansible Roles

Ik zal laten zien hoe je MEAN Stack installeert met Ansible Roles door slechts één playbook uit te voeren. We krijgen drie rollen: 1) Vereisten installeren, 2) MongoDB installeren en 3) NodeJS installeren. Ik neem aan dat je dat al hebt gedaan Ansible geïnstalleerd en een server-client-verbinding gemaakt op Ubuntu . Laten we beginnen met spelen met Ansible Roles.

Stap 1 - Navigeer naar / etc / ansible / role directory en maak de rollen voor vereisten, MongoDB en NodeJS.

$ cd / etc / ansible / rolls $ sudo ansible-galaxy init vereisten $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

U zou nu drie rollen in uw ‘rollen’ directory moeten zien.

Stap 2 - Schrijf main.yml voor vereisten die Git installeren.

$ cd vereisten / taken / main.yml --- - naam: git apt installeren: naam: git state: present update_cache: ja

Stap 3 - Schrijf main.yml voor de MongoDB-rol

$ cd /mongodb/tasks/main.yml --- - naam: MongoDB - Importeer openbare sleutel apt_key: sleutelserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - naam: MongoDB - Opslagplaats toevoegen apt_repository: bestandsnaam: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' state: present update_cache : ja - naam: MongoDB - Installeer MongoDB apt: naam: mongodb-org staat: aanwezig update_cache: ja - naam: Start mongod-shell: 'mongod &'

Stap 4 - Schrijf main.yml voornodejsrol

$ cd nodejs / taken / main.yml --- - name: Node.js - Haal script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- naam: Node.js - Stel uitvoeringsmachtiging in op scriptbestand: pad:' {{var_node}} / nodejs.sh 'mode:' u + x '- naam: Node.js - Voer installatiescriptshell uit:' {{var_node}} / nodejs.sh '- naam: Node.js - Verwijder installatiescriptbestand: pad:' {{var_node}} / nodejs.sh 'staat: afwezig - naam: Node.js - Installeer Node.js apt : name = {{item}} state = present update_cache = ja with_items: - build-essential - nodejs - name: Node.js - Installeer bower en slik globaal npm: name = {{item}} state = present global = ja met_items : - prieel - slok

Stap 5 - Schrijf je belangrijkste playbook

$ cd /etc/ansible/mean.yml --- - hosts: nodes remote_user: ansible word: yes word_method: sudo vars: #variable nodig tijdens installatie van knooppunt var_node: / tmp rollen: - vereisten - mongodb - nodejs

Nu we rollen hebben gedefinieerd voor het installeren van de vereisten, is MongoDB en NodeJs, laten we ze inzetten. Voer het playbook uit met de volgende opdracht.

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

Zoals u kunt zien, zijn alle taken uitgevoerd en is hun status gewijzigd. Dit betekent dat de wijzigingen in het playbook zowel op uw server als op de host zijn toegepast. Het opzetten van MEAN Stack is slechts een voorbeeld. Je kunt letterlijk van alles en nog wat opzetten met Ansible Roles.

Dit brengt ons bij het einde van de Ansible Roles-blog. Als je dit artikel nuttig vindt, bekijk dan het ' aangeboden door Edureka. Het omvat alle tools die de IT-industrie hebben verbeterd.

Heeft u een vraag voor ons? Plaats het op en we nemen zo snel mogelijk contact met u op.