Ansible Provisioning: slimmere en moeiteloze manier van provisioning

Deze Ansible Provisioning-blog wijst op een van de handigste Ansible-functies. Het laat zien hoe je een LAMP-stack opzet en een wensite host op Ubuntu.

De eerste stap bij het automatiseren van een operationele levenscyclus van de applicatie is het automatiseren van de voorziening van de infrastructuur. Provisioning is een vervelend proces van het instellen van configuraties, het toewijzen van geheugen, schijfruimte, enz., Voordat ze daadwerkelijk worden gebruikt. Laten we eens kijken hoe Ansible Provisioning dit eenvoudiger en sneller maakt.

Voor de meeste grootschalige implementaties moet u een identieke omgeving instellen op meerdere systemen.Dus, hoe doe je dat? Voer dezelfde reeks opdrachten handmatig uit op honderd systemen ?? Nahh .. Dat is te ouderwets. Dit is iets waar machines goed in zijn, niet mensen. Wat als ik je zou vertellen dat dit lange en saaie proces kan worden gedaan door slechts één Ansible-playbook uit te voeren?Dat is waar we het in deze blog over hebben: Ansible Provisioning.



Onderwerpen die aan bod komen zijn:

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

Wat is Ansible?

DevOps is een cultuur waarin automatisering echt een hoge prioriteit krijgt. Als er tools zijn voor het automatiseren van de implementatie en het testproces, waarom zou u dan geen tools hebben voor configuratiebeheer en provisioning? Er zijn een miljoen manieren om slimmer te worden en het gebruik van Ansible is daar een van. Het is een van de meest gebruikte tools.

Ansible gebruikt op YAML gebaseerde playbooks die zelfs door een beginner kunnen worden begrepen. Het maakt gebruik van een agentloze architectuur om met zijn klanten te communiceren, waarbij geen hulpprogramma van derden op de computer van de klant moet worden geïnstalleerd, maar in plaats daarvan worden op SSH gebaseerde verbindingen gebruikt. Omdat Ansible een automatiseringstool is, gaan we kijken wat het kan automatiseren.

Wat kan Ansible automatiseren?

Noem een ​​fase in de ontwikkelingscyclus en Ansible helpt u daarbij, of het nu gaat om configuratiebeheer, provisioning, orkestratie, continue levering, beveiliging of zelfs applicatie-implementatie. Ansible verenigt de workflow van de ontwikkelingscyclus in een enkel automatiseringsplatform zonder agents.

  1. Bevoorrading: Het creëren van een geschikte omgeving voor de applicatie / software om te leven is noodzakelijk. Ansible biedt een manier om de omgeving te automatiseren die is gemaakt voor het bestaan ​​van de applicatie.
  2. Configuratiebeheer: Voer een breed scala aan configuratietaken uit, zoals start / stop-services, wijzig de configuratie van een systeem, apparaat of applicatie, enz.
  3. Applicatie-implementatie: Automatiseer het definiëren van implementatie met Ansible en beheer de implementatie met Ansible toren . Dit maakt de gehele applicatiecyclus van productie tot implementatie efficiënt en beheersbaar.
  4. Continue levering: Het creëren en beheren van een pijplijn voor continue integratie / continue levering kan omslachtig worden. Dat is waar Ansible tussenkomt en het leven van de ontwikkelaar gemakkelijker maakt.
  5. Beveiliging en naleving: Werken met de projecten stelt altijd grenzen en is geïntegreerd met het beveiligingsbeleid van het bedrijf. Het automatisch integreren van beveiligingsbeleid met de implementatie kan het naleven van het beleid gemakkelijker maken.
  6. Orkestratie: Een heel project is een verzameling van veel verschillende instanties met een verschillende configuratie. Ansible voegt deze verschillende instanties samen en beheert ze als geheel.

Behoefte aan Ansible Provisioning

Zoals eerder vermeld, de eerste stap naarautomatisering van de operationele levenscyclus van de applicatiesmaakt de omgeving gereed, d.w.z. provisioning. Bij grote implementaties zijn meerdere hosts nodig met exact dezelfde configuraties. Hoe groot is de kans dat u, nadat u één host heeft geregistreerd, de volgende 10 hosts exact dezelfde configuraties krijgt als u dit handmatig doet? En hoeveel tijd besteed je aan dezelfde repetitieve taak? Dit is waar Ansible naar onze dienst komt. U kunt honderden hosts inrichten door slechts één playbook uit te voeren. Magie? Haha! Nee, alleen evolutie in automatisering.

Demo: maak een LAMP-stapel en implementeer een webpagina

verschil tussen werktuigen en verlengstukken

Stel dat u een website op 30 systemen probeert te implementeren, dan heeft u voor elke website-implementatie een basis-besturingssysteem, webserver, database en PHP nodig. We gebruiken Ansible Playbook om deze vereisten op alle 30 systemen tegelijk te installeren.

In deze demo voor het inrichten van Ansible laat ik u zien hoe u de hostingomgeving van de website kunt inrichten met Ansible. We installeren de LAMP-stack (Linux, Apache, MySQL en PHP) en implementeren vervolgens een website.

Voor deze demo heb ik een Linux VirtualBox gebruikt met Ubuntu-versie 17.04. Ik heb twee virtuele machines gebruikt, een als mijn server waarop Ansible is geïnstalleerd en de andere als mijn externe host. Laten we beginnen met het instellen van Ansible op de server.

Ik heb een eenvoudige statische webpagina gemaakt die is opgeslagen in een map inhoudsopgave die twee bestanden heeft, index.html en style.css.

index.html:

  Website met HTML en CSS                Adopteer nu        

style.css

* { marge: 0 opvulling: 0 } koptekst { achtergrondafbeelding: lineair verloop (rgba (0,0,0,0.5), rgba (0,0,0,0.5)), url ('puppie.jpg') hoogte: 100vh achtergrondgrootte: omslag achtergrondpositie: midden } .nav-menu { zweven: rechts lijststijl: geen margin-top: 30px } .nav-menu li { display: inline-blok } .nav-menu li a { kleur: turkoois text-decoration: geen opvulling: 5px 20px font-family: 'Verdana', 'sans-serif' lettergrootte: 20px } .homebtn a { rand: 1px effen grijs achtergrondkleur: wit } .nav-menu li a: hover { rand: 1px effen grijs achtergrondkleur: wit } .tagline { positie: absoluut breedte: 1200px marge-links: 0 margin-top: 0 } h1 { kleur wit lettergrootte: 50px font-family: 'Verdana', 'sans-serif' text-align: center margin-top: 275px } .adopt { margin-top: 30px margin-left: 540px } .bttn { rand: 1px effen wit opvulling: 10px 30px kleur geel font-family: 'Verdana', 'sans-serif' lettergrootte: 22px text-decoration: geen } .adopt a: hover { achtergrondkleur: burlywood }

Stap 1: Voer de volgende opdrachten uit om repositories bij te werken, voeg de vereiste repositories toe en configureer PPA op uw computer voor Ansible-installatie:

$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa: ansible / ansible

Druk op enter om de PPA-toevoeging te accepteren en installeer vervolgens Ansible na het updaten van de repositories.

$ sudo apt-get update $ sudo apt-get install ansible

Stap 2: Ga naar het / etc / hosts-bestand van uw server en voeg de hostnaam en het IP-adres van de host toe.

etc hosts - Ansible provisioning - EdurekaFig. 1 - Externe hosts toevoegen aan / etc / hosts File - Ansible Provisioning

Stap 3: Aangezien Ansible werkt aan de agentloze architectuur van het gebruik van SSH om te communiceren met zijn hosts, moet u de SSH-sleutels instellen. In principe hebben we één server en één host. We controleren de host met onze server en daarom maken we een openbare ssh-key op de server en kopiëren deze naar de machine van de host. Voer de volgende opdracht uit op de server:

$ ssh-keygen

U wordt gevraagd om de bestandsnaam in te voerenwaar iku wilt uw sleutel opslaan en u ook vragen om een ​​wachtwoord te maken voor toegang tot de gegenereerde sleutel, die optioneel is. Standaard wordt de openbare sleutel opgeslagen in het .ssh / id_rsa.pub-bestand en de privésleutel wordt opgeslagen in .ssh / id_rsa.

Fig. 2 - Maak SSH Key - Ansible Provisioning

ga sorteren c ++

Nu moet deze gegenereerde sleutel aanwezig zijn in uw host. Het kopiëren van de sleutel naar de host kan op twee manieren worden gedaan: ofwel handmatig naar de host kopiëren of de opdracht ssh-copy-id gebruiken. In dit geval ga ik het kopiëren met de opdracht ssh-copy-id root @ IP_of_host.

$ ssh-copy-id root@192.168.56.104

Opmerking - Zorg ervoor dat u in uw host kunt sshen voordat u deze opdracht uitvoert.

Stap 4: Configureer Ansible-hosts. Ga naar / etc / ansible / hosts-bestand en voeg de hostnaam toe. Dit hangt af van het aantal hosts en servers dat u heeft. U kunt ook meer dan hebbeneen serverhier.

Fig. 3 - Externe hosts toevoegen aan het inventarisbestand - Ansible Provisioning

Stap 5: Controleer of uw gastheren er klaar voor zijn. Voer deze opdracht uit, je zou een vergelijkbare uitvoer moeten krijgen.

$ ansible -m ping all

Fig. 4 - Controleer de status van de externe host - Ansible Provisioning

Stap 6: Nu onze Ansible klaar is, maken we de omgeving klaar om een ​​website te implementeren. We gaan één Ansible-playbook gebruiken om Apache, MySql en PHP te installeren. Laten we er eens naar kijken.

Opmerking: als je een beginner bent, kijk dan eens naar deze blog waarin wordt uitgelegd hoe je een playbook schrijft.

--- # Setup LAMP Stack - hosts: host1 taken: - naam: ppa-repository toevoegen wordt: ja apt_repository: repo = ppa: ondrej / php - naam: lampstack installeren wordt: ja apt: pkg: - apache2 - mysql-server - php7.0 - php7.0-mysql state: aanwezig update cache: ja - naam: start apache server geworden: ja service: naam: apache2 staat: gestart ingeschakeld: ja - naam: start mysql service wordt: ja services: naam: mysql state: gestart enabled: yes - name: create target directory file: path = / var / www / html state = directory mode = 0755 - name: deploy index.html werd: yes copy: src: / etc / ansible / index / index.html bestemming: var / www / html / index / index.html

Zoals u kunt zien, hebben we hier 6 taken, elke taak heeft een specifieke functie.

  • De eerste taak voegt de repository toe die nodig is om MySQL en PHP te installeren.
  • De tweede taak installeert apache2, MySQL-server, PHP en PHP-MySQL.
  • De derde en vierde taak start de Apache- en MySQL-service.
  • De vijfde taak maakt een doeldirectory op de hostcomputer en
  • Ten slotte voert de zesde taak het bestand index.html uit, het pikt het bestand op van de servermachine en kopieert het naar de hostcomputer.

Voer dit playbook uit met de volgende opdracht:

$ ansible-playbook lamp.yml -K

De lijnen geworden: ja in het playbook vertelt dat het als root moet worden uitgevoerd en daarom zal het bij het uitvoeren van de opdracht om een ​​sudo-wachtwoord vragen.

Fig. 5 - Voer Ansible Playbook uit - Ansible Provisioning

Nu kunt u naar de hostcomputer gaan en controleren of de website is gehost.

Fig. 6 - Host de website op Localhost - Ansible Provisioning

Dat is nu een webpagina die zou worden geïmplementeerd in alle hosts die communiceren met de server (in ons geval hadden we maar één host), maar hetzelfde zou mogelijk zijn, zelfs voor 100 externe hosts.

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

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