Vraag Relatie tussen Vagrant, Docker, Chef en OpenStack (of vergelijkbare producten)?


Ik ben een webontwikkelaar, maar ben ook geïnteresseerd in een aantal administratieve taken. Vandaar dat de nieuwe stap van zuiver bestuur naar ontwikkelaars handig voor me is.

Hoe dan ook, ik heb problemen om een ​​paar dingen in een relatie te stoppen. Misschien is er geen, daarom wilde ik om hulp vragen om te verduidelijken.

Kort gezegd, wat ik in verband wil brengen is vier soorten software (vanuit mijn begrip). De exacte producten doen er niet toe, u kunt vergelijkbare software als alternatief plaatsen:

  • Vagrant: Van mijn inzicht is het automatiseren van het maken en beheren van VM's: ze instellen, starten en stoppen. Dit kan worden gedaan met behulp van een lokale VM of afstandsbediening, b.v. op een cloudplatform.
  • Docker: een "lightweight VM", gebaseerd op enkele Linux-kernelconcepten, die kunnen worden gebruikt om processen afzonderlijk uit te voeren, bijvoorbeeld in een gedeelde webhostingomgeving.
  • Chef: een hulpmiddel voor het instellen en configureren van een besturingssysteem, bijvoorbeeld in een VM.
  • OpenStack: een tool waarmee u uw eigen private cloud kunt bouwen, dus vergelijkbaar met iets als AWS.

Vraag 1: Zijn mijn uitleg juist, of heb ik ongelijk met sommige (of alle) van deze consumpties?

Vraag 2: Hoe kan ik al deze hulpmiddelen mengen? Zou dat logisch zijn?

In mijn verbeelding en vanuit mijn begrip kan je gaan en

  • gebruik OpenStack om je eigen cloud te bouwen,
  • gebruik Vagrant om de VM's te beheren die in de cloud worden uitgevoerd,
  • gebruik Chef om deze VM's in te stellen
  • en gebruik uiteindelijk Docker om processen in de VM's uit te voeren.

Is dit correct? En als dat zo is, kun je me dan advies geven over hoe je dit alles kunt gaan gebruiken (het is best veel tegelijkertijd, en ik weet nog niet waar ik moet beginnen)?


55
2017-09-12 17:15


oorsprong


Niet bekwaam genoeg om dit volledig te beantwoorden, maar je beoordeling van Vagrant en Chef lijkt correct te zijn. In mijn ontwikkelbox draai ik VM's aan met behulp van Vagrant en voorzie ze dan met Chef en het werkt erg goed. - GSP


antwoorden:


Laten we hun respectieve webpagina's gebruiken om uit te zoeken waar al deze projecten over gaan. Ik zal echter de volgorde wijzigen waarin je hebt genoteerd:

  • Chef: Chef is een automatiseringsplatform dat infrastructuur omzet in code.

    Dit is een configuratiebeheersoftware. De meesten van hen gebruiken hetzelfde paradigma: ze laten je toe om het te definiëren staat je wilt dat een machine, met betrekking tot configuratiebestanden, geïnstalleerde software, gebruikers, groepen en vele andere soorten bronnen zijn. De meeste bieden ook functionaliteit om wijzigingen op specifieke machines te pushen, een proces dat gewoonlijk wordt genoemd orkestratie.

  • Zwerver: Creëer en configureer lichtgewicht, reproduceerbare en draagbare ontwikkelomgevingen.

    Het biedt een reproduceerbare manier om te genereren volledig gevirtualiseerde machines met behulp van Oracle's VirtualBox- of VMWare-technologie als providers. Vagrant kan coördineren met een configuratiebeheersoftware om door te gaan met het installatieproces waar het installatieprogramma van het besturingssysteem is voltooid. Dit staat bekend als provisioning.

  • havenarbeider: Een open source project voor het verpakken, verzenden en uitvoeren van elke toepassing als een lichtgewicht container

    De functionaliteit van deze software overlapt enigszins met die van Vagrant, waarin het de middelen biedt om installaties van besturingssystemen te definiëren, maar sterk verschilt in de technologie die voor dit doel wordt gebruikt. Docker gebruikt Linux-containers, die op zich geen virtuele machines zijn, maar geïsoleerde processen die in geïsoleerde bestandssystemen worden uitgevoerd. Docker kan ook een configuratiebeheersysteem om de containers te bevoorraden.

  • OpenStack: Open source software voor het bouwen van private en publieke clouds.

    Hoewel het waar is dat OpenStack kan op één enkele machine worden ingezeteen dergelijke implementatie is puur voor proof-of-concept, waarschijnlijk niet erg functioneel vanwege beperkte middelen.

    Het primaire doelwit voor OpenStack-installaties zijn omgevingen met onbeschermde metalen multi-nodes, waarbij de verschillende componenten kan worden gebruikt in speciale hardware om betere resultaten te bereiken.

    Een belangrijke functionaliteit van OpenStack is de ondersteuning voor vele virtualisatietechnologieën, van volledig gevirtualiseerd (VirtualBox, VMWare) tot geparavirtualiseerd (KVM / Qemu) en ook containers (LXC) en zelfs Gebruikersmodus Linux (UML).

Ik heb geprobeerd deze producten te presenteren als componenten van een specifieke architectuur. Vanuit mijn oogpunt is het zinvol om eerst uw behoeften met betrekking tot de omgeving die u nodig hebt te kunnen definiëren (Chef, Puppet, Ansible, ...) en deze dan op een gecontroleerde manier te kunnen inzetten (Vagrant, Docker , ...) en ten slotte, indien nodig, op wereldwijde schaal schalen.

Hoeveel van al deze functionaliteit u nodig heeft, moet worden gedefinieerd binnen de reikwijdte van uw project.

Merk ook op dat ik bijna alle technische verklaringen heb overgesimplificeerd. Gebruik de links waarnaar wordt verwezen voor meer informatie.


52
2017-09-12 20:16



zijn Chef en Marionet dezelfde tool? Ik bedoel, ze zijn equivalent? Als u dit op een Windows 10-host wilt uitvoeren, welke hulpprogramma's zou u dan gebruiken? - ReynierPM
Puppet is een soortgelijk hulpmiddel als Chef. Weet niet zeker of Windows beter is .. - a deer


Ik denk dat als je van een ontwikkelaarsachtergrond komt, het steeds lastiger worden om een ​​'devops' te worden, je vraag is bijna 3 jaar oud. Het zou interessant zijn om te horen hoe je de reis vindt, ik zal een antwoord geven vanuit het oogpunt van de sys-admin over de applicaties die je hierboven hebt genoemd en hopelijk zal het wat licht werpen, of een niet-technisch perspectief geven dat een verklaring zal zijn waarom een ​​persoon (admin of ontwikkelaar) precies zou gaan nadenken over wat je hebt gevraagd vanuit het oogpunt van de duivels Wat is de relatie tussen x, y, z, zijn deze gereedschappen groter dan de som van hun delen?

Ik denk eigenlijk dat sys-beheerders hier de overhand hebben, de meeste applicaties die je in je vraag noemt oplossen admin 'problemen' en zorgen zo voor een abstractere datacenteromgeving, en dit is op zijn beurt meer programmeerbaar voor ontwikkelaars en de nieuwe ' devops 'strategy (lees strategie / team, devops is geen persoon). Dus wat is de relatie met de apps die u noemt? hoe biedt dit een holistische benadering van de IT-service?

OpenStack: een tool waarmee je je eigen private cloud kunt bouwen,   dus vergelijkbaar met iets als AWS

Dat is het, maar wat doet het? - het meest toepasselijk genoemde besturingssysteem was D.O.S - het bediende uw schijf door het BIOS te abstraheren, OpenStack beheert uw datacenter en vat uw infrastructuur samen (IaaS - is Jargon voor het besturingssysteem van datacenters). Uw datacenter heeft nu een API, een commandosyntaxis en een GUI, OpenStack kan hypervisors, switches, routers, firewalls, storage area networks, load balancers, docker hosts enz. Aansturen. Openstack gebruikt de plugin van uw hardware fabrikanten of de specifieke functie kan alleen bestaan ​​in software zoals gedefinieerd door software iets of netwerkfunctie-virtualisatie. Bovendien kunnen OpenStack en alle andere clouds hun eigen infrastructuur orkestreren door scripts te lezen die je naar de orkestratie-engine gooit of worden geactiveerd op basis van regels (opschalen, afvlakken etc.). Openstack is dus een gigantische abstractielaag, bijvoorbeeld Het kan me niet schelen welke schakelaar ik heb, geef me een netwerk deze opdracht, of, bouw me een gecompliceerde load balanced, HA, publiekelijk beschikbaar, auto scaling, geregistreerde domeinnaam, opslag gehecht dingetje - met dit script dat ik op internet heb gevonden.

Docker: een "lightweight VM", gebaseerd op een paar Linux kernelconcepten,   die kan worden gebruikt om processen in isolatie uit te voeren, b.v. in een gedeeld web   hosting omgeving.

Docker is een andere abstractielaag en zoals cloud is een ontwrichtende technologie, het verandert de industrie omdat het veel operationele 'problemen' oplost, zoals software-afhankelijkheden, upgrades, data-isolatie en pure draagbaarheid. Java werd populair vanwege de draagbaarheid van de broncode waar ontwikkelaars niet over hoefden na te denken, een draaiende JVM betekende dat hun code op de koffiemachine moest lopen, zolang deze java ondersteunde. Docker lost een soortgelijk probleem op, om mijn App uit te voeren heb je een docker-host nodig, niet, je hebt deze versie van python, deze kernel, deze linux distro en zo nodig nodig, de app heeft natuurlijk nog steeds die afhankelijkheden, maar de onderliggende host maakt het niet uit en de beheerder maakt zich niets uit van wat je doet in een geïsoleerde container ( naar een punt). Docker verandert zowel het ontwikkelings- als het operationele paradigma en behandelt een volledig besturingssysteem en zijn services als een binair getal. we kunnen ze krijgen van een repository, maak ze een versie, wijzig ze, voer ze uit met parameters etc.

Chef: een hulpmiddel voor het instellen en configureren van een besturingssysteem, bijvoorbeeld in een   VM.

Ja, en niet zo storend als de eerste twee, Chef, Puppet, Ansible, Salt, System Center Operations Manager en een enorme hoeveelheid andere applicaties in deze ruimte bieden ontwikkelaars en beheerders een manier om implementaties, upgrades en andere acties te modelleren (config veranderingen), lijkt er geen standaardorganisatie te zijn om deze inspanningen te zien zoals er is voor cloud. Maar we hebben niet te maken met zoiets definitiefs als Infrastructuur, dus het is pijnlijker om deze te leren en niet veel is overdraagbaar van de ene naar de andere.

Vagrant: vanuit mijn begrip is het maken en beheren van automatisering geautomatiseerd   van VM's: instellen, starten en stoppen. Dit kan gedaan worden   gebruikmakend van een lokale VM of afstandsbediening, b.v. op een cloudplatform.

Dit is de vreemde eend in de lijst met apps die je noemt, Vagrant is een hulpmiddel voor ontwikkelaars en een stuk speelgoed voor beheerders, je kunt snel een ontwikkelingsomgeving opstaan ​​met zwervers, bijvoorbeeld Ik wil een Android-app ontwikkelen, een IDE van een vagrant pakken, ik denk dat hij binnenkort door Docker wordt ingehaald.

kun je me een advies geven over hoe je dit alles gaat gebruiken (het is best een   veel op hetzelfde moment, en ik weet nog niet waar te beginnen)?

Dit is waarom ik denk dat admins de overhand hebben, we hebben het grootste deel hiervan handmatig moeten doen en weten wat er mis kan gaan, marionettenmanifestaties, cloudcomputing en dokwerkorkestratie zullen gemakkelijker voor ons zijn, ontwikkelaars zullen merken dat ze veel raaklijnen nemen, dus mijn advies aan potentiële afdelingen is eerst een beheerder zijn.


3
2018-05-18 13:14





Ik heb net een OpenStack-implementatieproject voltooid waarin een Chef-server wordt gebruikt in een Vagrant-instantie: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Het primaire probleem met het op deze manier doen, is om de Vagrant-instantie elke keer dat u de knooppunten wilt beheren, dezelfde IP te laten gebruiken. Als u statische adressering uitvoert, werkt dit goed. Het doen via een VPN is minder dan ideaal.


0
2017-09-18 22:10





Op mijn einde gebruik ik alleen een combinatie van Vagrant en Docker.

Ik gebruik zwervers om de machines te bevoorraden (dat is het geval extra cloud-providers maar ik gebruik de ingebouwde VirtualBox. Omdat ik deze benadering gebruik, is de externe netwerk- en opslagruimte vrij veel handmatig, maar als je iets als het gebruikt zwerver-AWS plugin kunt u AWS vertellen om de benodigde onderdelen voor u te leveren.

Het provisioning-script dat ik gebruik wijst naar een veilige locatie die CA-certificaat en sleutels bevat die worden gebruikt voor het ondertekenen van CSR's samen met de docker swarm join tokens. Daarnaast installeer ik docker-engine en configureer ik deze om me bij de zwerm te voegen (initialiseer als er geen is).

Als dat eenmaal geregeld is, doe ik gewoon een docker stack deploy van mijn lokale machine of bouwdoos om de stapel in te zetten met alles wat ik nodig heb.

In mijn geval ben ik gewoon gevallen chef voor het gebruik van eenvoudige post-installatiescripts die dat wel doen yum of apt-get op als mijn provisioning scripts.

Ik gebruik ook de zwerver-triggers plugin om extra scripting toe te voegen voor vernietig (in mijn geval om de zwerm te verlaten).

Het leuke aan het centraliseren met Vagrant is dat je de omgeving op een ander systeem of op een enkele computer voor ontwikkeling kunt repliceren, alleen maar de provider sectie. Let wel, ik heb OpenStack niet ingesteld op een enkele computer om VirtualBox te beheren.


0
2018-03-13 19:54