LINUXMAKER, OpenSource, Tutorials

DevOps mit GIT, Jenkins, Puppet, Chef, Ansible

Als Entwickler und Unternehmen profitieren Sie von unseren Erfahrungen und Wissen rund um DevOps, Continuous Delivery. Wir beraten Sie bei der Umsetzung Ihres Softwareprojektes und bringen die Hand-ons mit, um die richtigen Tools bei Ihnen zum Einsatz zu bringen.

  • Sie senken Ihre Kosten, wenn Sie auf bereits vorhandenes Wissen zurückgreifen anstatt dieses erst aufzubauen.

  • Sie profitieren von unseren Erfahrungen bei GIT, Jenkins, Puppet, Chef, Ansible und lassen sich durch den Prozess führen.

Mit dem Begriff „DevOps“ ist ein Prozessverbesserungsansatz gemeint, der vor allem in der Systemadministration und in der Softwareentwicklung zur Anwendung kommt. Dabei ist DevOps ein sogenanntes Kofferwort, das sich aus den Wörtern „Development“ und „IT Operations“ zusammensetzt.
Dieser Ansatz hat zum Ziel, in den Bereichen Development (Entwicklung), IT Operations (IT Betrieb) und Qualitätssicherung für eine effizientere und effektivere Zusammenarbeit zu sorgen. Durch die optimierte Zusammenarbeit der verschiedenen Teilbereiche soll die Geschwindigkeit der Softwareentwicklung und die Kooperation zwischen den einzelnen Teams verbessert werden.
Hierzu setzt IT-LINUXMAKER spezielle Anreize, Werkzeuge (Tools) und Prozesse ein.

GIT

GIT ist ein weit verbreitetes Open-Source-Tool zur verteilten Versionskontrolle von Software. Es wird sowohl in Unternehmen als auch von privaten Entwicklern weltweit genutzt und funktioniert zusammen mit verschiedensten Plattformen und IDEs.
Die Versionskontrolle macht es einfach, Änderungen eigenständig und von überall aus dem Projekt hinzuzufügen, diese Änderungen zu protokollieren und nachzuvollziehen sowie zu einem späteren Zeitpunkt auf ältere Stände des Projekts zuzugreifen. GIT ist plattformunabhängig und lässt sich somit in nahezu jeder Umgebung nutzen.
Wo andere Systeme zur Versionskontrolle auf eine zentral gespeicherte Datenbank setzen, vertraut GIT auf ein verteiltes System. Das bedeutet, dass jedes Mitglied eines Projektteams eine Art eigene Kopie der Projektdatenbank besitzt – das Repository. Theoretisch ist es mit GIT möglich, ganz ohne eine zentrale Datenbank zu arbeiten.
Entwickler programmieren überwiegend an ihrer lokalen Kopie des Repositorys und haben die Möglichkeit, Ihre Änderungen mit allen Beteiligten auszutauschen. Außerdem verringert sich durch das Verteilen des Repositorys die Gefahr, dass Daten verloren gehen: Da viele Personen zugleich die vollständige Historie und den aktuellen Stand des Projekts als lokale Kopie besitzen, kann durch einen Serverausfall praktisch kein Schaden entstehen.
Dennoch gibt es die Option, eine zentrale Anlaufstelle einzurichten („Blessed Repository“), die von autorisierten Teammitgliedern gepflegt wird und dem Team z. B. als offizielle Referenz dient. Jeder, der am Projekt arbeiten möchte, holt sich eine Kopie dieser Version. Änderungen werden anschließend nicht allgemein verteilt, sondern an das zuständige Teammitglied zur Prüfung und Integration weitergeben.
GIT bietet auch die Möglichkeit, ein Projekt in unterschiedliche Zweige oder Branches bzw. Forks aufzuteilen, um z. B. Versionen zu trennen und neue oder experimentelle Features parallel zum Hauptzweig zu entwickeln. Änderungen, die für den Endnutzer veröffentlicht werden sollen, können anschließend wieder mit der entsprechenden Projektversion zusammengeführt werden.
GIT ist darauf ausgelegt, dass Teams regelmäßig Branches und Merges nutzen, um eine gut nachvollziehbare Historie des Projekts aufzubauen. GIT verfügt über interne Tools, welche die Branches und Merges eines Projekts visualisieren können – so erhält jedes Teammitglied einen nachvollziehbaren Überblick über die Entwicklung des Projekts.

Jenkins

Jenkins ist ein in Java programmiertes, sogenanntes Continuous-Integration-System (CI-System), , die in jedem modernen Servlet-Container läuft, wie beispielsweise Tomcat oder Jboss. Das Tool bringt jedoch auch mit Winstone einen eigenen, minimalen Container mit. Somit besteht nicht zwingend die Notwendigkeit, einen zusätzlichen Webcontainer zu installieren, sollte dieser nicht bereits vorhanden sein. Jenkins unterstützt eine ganze Reihe von Buildtools und integriert sich nahtlos in Versionskontrollsysteme wie beispielsweise Subversion. Dank der modularen Struktur von Jenkins lässt sich dessen Funktionsumfang sehr stark erweitern. So existieren beispielsweise Plugins für das Einbinden von weiteren Buildtools oder Versionskontrollsystemen.
Durch regelmäßige Abfragen des konfigurierten VCS kann Jenkins sehr schnell feststellen, ob neuer Code in das Repository eingecheckt wurde. Sollte dies der Fall sein, so wird dieser ausgecheckt, und Jenkins ruft das konfigurierte Build-Tool auf, um den neuen Code schließlich zu übersetzen. Zusätzlich ist Jenkins natürlich auch in der Lage, beliebige andere Aktionen auf den neuen Code anzuwenden. Hierzu zählt beispielsweise das Bauen von einem neuen RPM-Paket auf Basis des neuen Programmcodes.

Puppet

Puppet ist ein Open-Source-Projekt mit Enterprise-Unterstützung. Das Admin-Tool erlaubt die automatisierte Konfiguration von Computern und Servern sowie der darauf installierten Dienste. Das Einsatzfeld reicht vom Einzel-Server bis hin zu großen Rechner-Verbundsystemen.
Bei der Konfiguration eines Servers bedienen sich Entwickler und Administratoren spezieller Konfigurationsmanager. Im Idealfall lassen sich damit viele Aufgaben automatisieren.

Puppet liegt das Client-Server-Funktionsprinzip zugrunde, auf dem Server ist der „PuppetMaster“ resident. Er hält alle Konfigurationen der im Verbund aktiven Rechner vor. Der aktuelle Ist-Zustand des Systems wird ermittelt und mit dem für die Konfiguration hinterlegten Soll-Zustand verglichen. In Ableitung aus der ermittelten Differenz werden die erforderlichen Operationen errechnet und durchgeführt.
Grundsätzlich sind Entwickler und Administratoren in der Lage, mit Hilfe von Puppet zentral alle in ein Netzwerk eingebundenen Rechner zu verwalten. Herkömmlich konfigurierte Dienste können unbeeinflusst neben den mit Puppet hinterlegten Abläufen betrieben werden. Dies ist möglich, da alle Dateien und Konfigurationen, die nicht im PuppetMaster beschrieben sind, von dort auch nicht reglementiert werden.

Ein Systemadministrator kann mit Puppet an zentraler Stelle die Konfiguration von an seinem Netzwerk angeschlossenen Rechnern verwalten. Dazu legt dieser über „Puppet-Manifeste“ deklarativ den gewünschten Zustand eines Subsystems fest, den Puppet dann beim Ablauf umsetzt. Deklarationen können konditioniert erfolgen. Insbesondere kann das zu Puppet gehörige Zusatzprogramm facter verwendet werden, um Systemeigenschaften zu ermitteln, beispielsweise die Prozessorarchitektur, das Betriebssystem, oder ob die Puppet-Instanz auf einer virtuellen Maschine läuft. Puppet eignet sich sowohl für einzelne Rechner als auch für große Rechnerverbünde. Viele Organisationen, Firmen, Schulen und Universitäten verwenden Puppet, um die Konfiguration ihrer Server zu verwalten.

Chef

Chef ist eine Open-Source-Software für das Configuration Management für Cloud Computing, das relevante Prozesse der Server-Verwaltung automatisiert. Konfigurationen lassen sich damit testen, versionieren und replizieren.
Entwickler und/oder Administratoren legen in sogenannten Rezepten (sprich: Recipe) fest, wie Serveranwendungen und begleitende Dienstprogramme zu verwalten und zu konfigurieren sind. Im Sinne einer einfachen Verwaltung und Übersichtlichkeit werden die erstellten Rezepte in einem Kochbuch (Cookbook) zusammengefasst. Auf diesem Wege werden Anweisungen und Zustandsbeschreibungen hinterlegt, beispielsweise

- zu installierende Pakete,
- auszuführende Dienste oder auch
- Dateien, die zur Ausführung gelangen sollen.

Die vom System-Administrator vorgesehene Reihenfolge der Arbeitsschritte wird im Kochbuch fest gelegt. Deren Abarbeitung erfolgt analog. Das Konfigurationsverwaltungs-Werkzeug Chef sorgt stets dafür, dass alle Ressourcen ordnungsgemäß konfiguriert sind. Befinden sich Ressourcen nicht im erforderlichen Status, so greift Chef regulierend ein. Der Betrieb von Chef erfolgt im Client/Server-Betrieb oder alternativ in Form einer als „Chef-Solo“ bezeichneten eigenständigen Konfiguration.

Ansible

Ansible ist ein Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern. Es kombiniert Softwareverteilung, Ad-hoc-Kommando-Ausführung und Konfigurationsmanagement. Die Verwaltung von Netzwerkcomputern erfolgt unter anderem über SSH und erfordert keinerlei zusätzliche Software auf dem zu verwaltenden System. Module nutzen zur Ausgabe JSON und können in jeder beliebigen Programmiersprache geschrieben sein.
Eine Besonderheit von Ansible ist, dass die Open-Source Software mit minimalen Voraussetzungen arbeiten kann: Die verwaltenden Geräte benötigen lediglich OpenSSH und Python. Dennoch beherrscht das Tool alle wichtigen Techniken, um Konfiguration, Administration und Orchestrierung zu automatisieren.
Gleichzeitig ist es über die relativ simple Sprache YAML bedienbar, was die Einstiegshürde weiter senkt. Ansible wird weltweit von den verschiedensten Firmen und Einrichtungen verwendet, von Rechenzentren bis hin zu Universitäten.
Eine weitere Besonderheit von Ansible ist, dass bei der Arbeit aus der Ferne kein Agent auf dem Zielsystem installiert werden muss. Bei anderen Konfigurationsmanagern ist häufig eine Agentensoftware nötig, um die gewünschten Tätigkeiten auszuführen. Das kann zu Fehlern oder Sicherheitsproblemen führen. Ansible arbeitet ohne Umwege oder Hilfsmittel und kann diese Bedenken somit im Keim ersticken.
Automatisiertes Konfigurationsmanagement mit Ansible funktioniert, indem der gewünschte Zustand des Hosts oder Systems in einem sogenannten Playbook beschrieben wird. Das können grundlegende Einstellungen sein, aber auch die komplette Einrichtung eines neuen Systems inklusive der Installation bestimmter Software.
Das Tool dient also zum Verwalten von Netzwerken bis hin zum automatisierten Aufsetzen neuer Clients. Bei Bedarf können natürlich auch einzelne Befehle per Kommandozeile abgesetzt werden. Ansible verwendet zum automatisierten Arbeiten drei grundlegende Ressourcen: Module, Inventar und Playbooks.


IT-Service und IT-Beratung

Die Digitalisierung des Geschäftslebens, wesentlicher Produktionsprozesse und des Privatlebens ist in vollem Gange. Gleichzeitig nehmen die Bedrohungen durch Serverausfälle, Viren und Cyberkriminalität zu. Verstärkt wird das Ganze durch die Vernachlässigung der IT-Security sowohl im privaten Umfeld als auch in der Geschäftswelt. Wirklich notwendige Schutzmechanismen werden meistens erst dann in Erwägung gezogen, wenn bereits der Schaden entstanden ist und die Wiederherstellung der IT-Infrastruktur Unsummen an Kosten verursacht hat.
Linux bietet Ihnen bereits von Grund auf die sichere Basis in Ihrer IT-Infrastruktur. Einerseits, weil es schon immer als ein auf den Netzwerkbetrieb ausgerichtetes Betriebssystem konzeptioniert wurde. Andererseits, weil die freie Verfügbarkeit des Source-Code die Möglichkeit von schadhaft oder zweckentfremdet programmierter Funktionen nahezu unmöglich macht. Zusätzlich bedeutet „Open Source“ seit eh her eine permanente Verbesserung durch innovative Spezialisten aus aller Welt. Inzwischen vertrauen immer mehr Anwender Linux, das unter Anderem den Kernel für die zahlreichen Android-Installationen liefert, so auch Unternehmen respektive Instutionen wie Siemens, BMW, Lufthansa, Deutsche Post AG, Greenpeace und staatliche Institutionen inklusive des Bundesbeauftragten für Datenschutz.
Sie sind ein Unternehmen, ein mittelständisches Unternehmen, ein Handwerksbetrieb, ein Einzelunternehmer mit der entsprechenden IT-Infrastruktur und Sie möchten Ihre Kunden mit Ihren Produkten umfassend zufriedenstellen. Oder Sie sind eine Privatperson mit entsprechenden Supportwünschen. Ihre IT-Infrastruktur soll zuverlässig rund um die Uhr funktionieren. IT-LINUXMAKER kann als Experte auf diesem Gebiet Ihre Informationen effektiv und schnell schützen. Mit den Services von IT-LINUXMAKER sichern Sie sich Ihren Wettbewerbsvorteil durch die Stabilität Ihrer IT-Infrastruktur und Ihrer Daten.

Die Supportverträge von IT-LINUXMAKER sind das optimale Plus Ihrer IT- oder Entwicklungs-Abteilung. IT-LINUXMAKER unterstützt Sie in allen Situationen im Themenumfeld von Linux bei der Aministration, dem Monitoring, der Konfiguration, Fehlerbehebung und bei der Script-Programmierung. Wo Ihre IT-Infrastruktur steht, wie groß sie ist oder wie viele Anwender in ihr arbeiten spielt für IT-LINUXMAKER keine Rolle.

Linux-Experte, Linux-Spezialist, Linux-Support, Linux-Consultant, IT-Security-Experte, IT-Experte, Senior Consultant, MAC-Experte, IT-Security, IT-Sicherheit, IT-Konzepte, Stuttgart

Checklisten - Sicheres digitales Arbeiten

Viele Betriebe organisieren ihre Arbeit seit Beginn der Corona-Pandemie auch über Home-Office-Regelungen. Die Tipps von IT-LINUXMAKER im praktischen Checklisten-Format zeigen, was es dabei zu beachten gilt.

Alle Checklisten für sicheres digitales Arbeiten finden Sie hier:

Sichere Passwörter mit der Passwortkarte

Generien Sie sichere und beliebig lange Passwörter mit der Passwortkarte. Überprüfen können Sie es hier.

Honorar

Unsere Honorare sind abhängig von Dienstleistung/Produkt und dem Umfang. Von daher können wir erst in einem Angebot unsere Honorare nennen, wenn wir Ihr Anliegen bereits kennen.

Beratungsanfrage