Ansible Provisioning: Intelligentere und mühelosere Bereitstellung



In diesem Ansible Provisioning-Blog wird auf eine der nützlichsten Ansible-Funktionen hingewiesen. Es zeigt, wie Sie einen LAMP-Stack einrichten und eine Wensite unter Ubuntu hosten.

Der erste Schritt zur Automatisierung eines Betriebslebenszyklus der Anwendung ist die Automatisierung der Bereitstellung der Infrastruktur. Das Bereitstellen ist ein lästiger Prozess, bei dem Konfigurationen eingerichtet, Speicher, Speicherplatz usw. zugewiesen werden, bevor sie tatsächlich verwendet werden. Lassen Sie uns sehen, wie Ansible Provisioning dies einfacher und schneller macht.

Für die meisten umfangreichen Bereitstellungen muss auf mehreren Systemen eine identische Umgebung eingerichtet sein.Also, wie machst du das? Führen Sie den gleichen Befehlssatz auf hundert Systemen manuell aus? Nahh .. Das ist zu altmodisch. Das ist etwas, was Maschinen gut können, nicht Menschen. Was wäre, wenn ich Ihnen sagen würde, dass dieser lange und langweilige Prozess durch einfaches Ausführen eines einzelnen Ansible-Playbooks durchgeführt werden könnte?Darüber werden wir in diesem Blog sprechen - Ansible Provisioning.





Die behandelten Themen sind:

flache Kopie und tiefe Kopie in Java

Wenn Sie DevOps beherrschen möchten, ' Natürlich sollte Ihre Wahl sein.



Was ist Ansible?

DevOps ist eine Kultur, in der der Automatisierung eine sehr hohe Priorität eingeräumt wird. Wenn es Tools zur Automatisierung der Bereitstellung und des Testprozesses geben kann, warum nicht Tools für das Konfigurationsmanagement und die Bereitstellung. Es gibt eine Million Möglichkeiten, intelligenter zu werden, und die Verwendung von Ansible ist eine davon. Es ist eines der am häufigsten verwendeten Werkzeuge.

Ansible verwendet YAML-basierte Playbooks, die sogar von Anfängern verstanden werden können. Es verwendet eine agentenlose Architektur für die Kommunikation mit seinen Clients, bei der kein Drittanbieter-Tool auf dem Client-Computer installiert werden muss. Stattdessen werden SSH-basierte Verbindungen verwendet. Da Ansible ein Automatisierungstool ist, wollen wir herausfinden, was es automatisieren kann.

Was kann Ansible automatisieren?

Nennen Sie eine Phase im Entwicklungszyklus, und Ansible hilft Ihnen dabei, sei es Konfigurationsmanagement, Bereitstellung, Orchestrierung, kontinuierliche Bereitstellung, Sicherheit oder sogar Anwendungsbereitstellung. Ansible vereint den Workflow des Entwicklungszyklus in einer einzigen Automatisierungsplattform ohne Agenten.



  1. Bereitstellung: Es ist erforderlich, eine geeignete Umgebung für die Anwendung der Anwendung / Software zu erstellen. Ansible bietet eine Möglichkeit, die für die Existenz der Anwendung erstellte Umgebung zu automatisieren.
  2. Konfigurationsmanagement: Führen Sie eine Vielzahl von Konfigurationsaufgaben aus, z. B. Start / Stopp-Dienste, Ändern der Konfiguration eines Systems, Geräts oder einer Anwendung usw.
  3. Anwendungsbereitstellung: Automatisieren Sie die Definition der Bereitstellung mit Ansible und verwalten Sie die Bereitstellung mithilfe von Ansible Turm . Dies macht den gesamten Anwendungszyklus von der Produktion bis zur Bereitstellung effizient und verwaltbar.
  4. Kontinuierliche Lieferung: Das Erstellen und Verwalten einer Pipeline für die kontinuierliche Integration / kontinuierliche Bereitstellung kann umständlich werden. Hier greift Ansible ein und erleichtert dem Entwickler das Leben.
  5. Sicherheit und Compliance: Die Arbeit mit den Projekten setzt immer Grenzen und ist in die Sicherheitsrichtlinien des Unternehmens integriert. Die automatische Integration von Sicherheitsrichtlinien in die Bereitstellung kann die Einhaltung von Richtlinien erleichtern.
  6. Orchestrierung: Ein gesamtes Projekt ist eine Sammlung vieler verschiedener Instanzen mit unterschiedlicher Konfiguration. Ansible führt diese verschiedenen Instanzen als Ganzes zusammen und verwaltet sie.

Bedarf an Ansible Provisioning

Wie bereits erwähnt, ist der erste Schritt zuAutomatisierung des Betriebslebenszyklus der Anwendungenbereitet die Umgebung vor, d. h. Bereitstellung. Für große Bereitstellungen sind mehrere Hosts mit genau denselben Konfigurationen erforderlich. Wie hoch ist die Wahrscheinlichkeit, dass die nächsten 10 Hosts nach der Bereitstellung eines Hosts genau die gleichen Konfigurationen haben, wenn sie manuell ausgeführt werden? Und wie viel Zeit werden Sie damit verbringen, dieselbe sich wiederholende Aufgabe zu erledigen? Hier kommt Ansible zu uns. Sie können Hunderte von Hosts bereitstellen, indem Sie nur ein einziges Playbook ausführen. Magie? Haha! Nein, nur Evolution in der Automatisierung.

Demo: Erstellen Sie einen LAMP-Stapel und stellen Sie eine Webseite bereit

Angenommen, Sie versuchen, eine Website auf 30 Systemen bereitzustellen. Für jede Website-Bereitstellung sind ein Basisbetriebssystem, ein Webserver, eine Datenbank und PHP erforderlich. Wir verwenden ansible Playbook, um diese Voraussetzungen auf allen 30 Systemen gleichzeitig zu installieren.

In dieser Ansible-Bereitstellungsdemo werde ich Ihnen zeigen, wie Sie die Website-Hosting-Umgebung mit Ansible bereitstellen. Wir installieren den LAMP-Stack (Linux, Apache, MySQL und PHP) und stellen dann eine Website bereit.

Für diese Demo habe ich eine Linux VirtualBox mit Ubuntu Version 17.04 verwendet. Ich habe zwei virtuelle Maschinen verwendet, eine als Server, auf dem Ansible installiert ist, und die andere als Remote-Host. Beginnen wir mit der Einstellung von Ansible auf dem Server.

Ich habe eine einfache statische Webseite erstellt, die in einem Ordner gespeichert ist Index Das hat zwei Dateien, index.html und style.css.

index.html:

  Website mit HTML und CSS                Adoptiere jetzt        

style.css

* * { Rand: 0 Polsterung: 0 }} Header { Hintergrundbild: linearer Gradient (rgba (0,0,0,0,5), rgba (0,0,0,0,5)), URL ('pupie.jpg') Höhe: 100vh Hintergrundgröße: Abdeckung Hintergrundposition: Mitte }} .nav-menu { schweben rechts Listenstil: keine Rand oben: 30px }} .nav-menu li { Anzeige: Inline-Block }} .nav-menu li a { Farbe: Türkis Textdekoration: keine Polsterung: 5px 20px Schriftfamilie: 'Verdana', 'serifenlos' Schriftgröße: 20px }} .homebtn a { Rand: 1px durchgehend grau Hintergrundfarbe: weiß }} .nav-menu li a: hover { Rand: 1px durchgehend grau Hintergrundfarbe: weiß }} .tagline { Position: absolut Breite: 1200px Rand links: 0 Rand oben: 0 }} h1 { Farbe weiß Schriftgröße: 50px Schriftfamilie: 'Verdana', 'serifenlos' Textausrichtung: Mitte Rand oben: 275px }} .adoptieren { Rand oben: 30px Rand links: 540px }} .bttn { Rand: 1px festes Weiß Polsterung: 10px 30px Farbe Gelb Schriftfamilie: 'Verdana', 'serifenlos' Schriftgröße: 22px Textdekoration: keine }} .adopt a: hover { Hintergrundfarbe: Burlywood }}

Schritt 1: Führen Sie die folgenden Befehle aus, um Repositorys zu aktualisieren, die erforderlichen Repositorys hinzuzufügen und PPA auf Ihrem Computer für die Ansible-Installation zu konfigurieren:

$ sudo apt-get update $ sudo apt-get installiere Software-Eigenschaften-common $ sudo apt-add-repository ppa: ansible / ansible

Drücken Sie die Eingabetaste, um den PPA-Zusatz zu akzeptieren, und installieren Sie Ansible nach dem Aktualisieren der Repositorys.

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

Schritt 2: Gehen Sie zur Datei / etc / hosts Ihres Servers und fügen Sie den Hostnamen und die IP-Adresse des Hosts hinzu.

usw. Hosts - Ansible Provisioning - EdurekaAbb. 1 - Hinzufügen von Remote-Hosts zur Datei / etc / hosts - Ansible Provisioning

Schritt 3: Richten Sie die SSH-Schlüssel ein, da Ansible an der agentenlosen Architektur der Verwendung von SSH für die Kommunikation mit seinen Hosts arbeitet. Grundsätzlich haben wir einen Server und einen Host. Wir steuern den Host mit unserem Server und erstellen daher einen öffentlichen SSH-Schlüssel auf dem Server und kopieren ihn auf den Computer des Hosts. Führen Sie den folgenden Befehl auf dem Server aus:

$ ssh-keygen

Sie werden aufgefordert, den Dateinamen einzugebenwo ichSie möchten Ihren Schlüssel speichern und Sie auffordern, ein Kennwort für den Zugriff auf den generierten Schlüssel zu erstellen, das optional ist. Standardmäßig wird der öffentliche Schlüssel in der Datei .ssh / id_rsa.pub und der private Schlüssel in der Datei .ssh / id_rsa gespeichert.

Abb. 2 - SSH-Schlüssel erstellen - Ansible Provisioning

Dieser generierte Schlüssel muss nun in Ihrem Host vorhanden sein. Das Kopieren des Schlüssels auf den Host kann auf zwei Arten erfolgen: entweder manuell auf den Host kopieren oder den Befehl ssh-copy-id verwenden. In diesem Fall kopiere ich es mit dem Befehl ssh-copy-id root @ IP_of_host.

$ ssh-copy-id root@192.168.56.104

Hinweis: Stellen Sie sicher, dass Sie ssh in Ihren Host einbinden können, bevor Sie diesen Befehl ausführen.

Schritt 4: Konfigurieren Sie Ansible-Hosts. Gehen Sie zur Datei / etc / ansible / hosts und fügen Sie den Hostnamen hinzu. Dies hängt von der Anzahl Ihrer Hosts und Server ab. Sie können auch mehr als habenein ServerHier.

Abb. 3 - Hinzufügen von Remote-Hosts zur Inventardatei - Ansible Provisioning

Schritt 5: Überprüfen Sie, ob Ihre Hosts bereit sind. Wenn Sie diesen Befehl ausführen, sollten Sie eine ähnliche Ausgabe erhalten.

$ ansible -m ping all

Abb. 4 - Überprüfen Sie den Status des Remote-Hosts - Ansible Provisioning

Schritt 6: Nachdem unser Ansible fertig ist, können Sie die Umgebung für die Bereitstellung einer Website vorbereiten. Wir werden ein einziges Ansible-Playbook verwenden, um Apache, MySql und PHP zu installieren. Schauen wir uns das an.

Hinweis: Wenn Sie ein Anfänger sind, schauen Sie sich das an Dies Blog, in dem erklärt wird, wie man ein Spielbuch schreibt.

--- # LAMP Stack einrichten - Hosts: Host1 Aufgaben: - Name: ppa-Repository hinzufügen wird: ja apt_repository: repo = ppa: ondrej / php - Name: Lampenstapel installieren wird: ja apt: pkg: - apache2 - mysql-server - php7.0 - php7.0-mysql status: aktueller update cache: yes - name: apache server starten werden: yes service: name: apache2 state: gestartet aktiviert: yes - name: start mysql service werden: yes services: name: MySQL-Status: gestartet aktiviert: Ja - Name: Zielverzeichnis erstellen Datei: Pfad = / var / www / html Status = Verzeichnismodus = 0755 - Name: Bereitstellen von Index.html wurde: Ja Kopie: src: / etc / ansible / index / index.html dest: var / www / html / index / index.html

Wie Sie sehen, haben wir hier 6 Aufgaben, jede Aufgabe erfüllt eine bestimmte Funktion.

  • Die erste Aufgabe fügt das Repository hinzu, das für die Installation von MySQL und PHP erforderlich ist.
  • Die zweite Aufgabe installiert Apache2, MySQL-Server, PHP und PHP-MySQL.
  • Die dritte und vierte Aufgabe startet den Apache- und MySQL-Dienst.
  • Die fünfte Aufgabe erstellt ein Zielverzeichnis auf dem Hostcomputer und
  • Schließlich führt die sechste Task die Datei index.html aus, nimmt die Datei vom Servercomputer auf und kopiert sie auf den Hostcomputer.

Führen Sie dieses Playbook mit dem folgenden Befehl aus:

$ ansible-playbook lamp.yml -K

Die Linien werden: ja Im Playbook wird angegeben, dass es als root ausgeführt werden muss. Wenn Sie den Befehl ausführen, werden Sie zur Eingabe des sudo-Kennworts aufgefordert.

Abb. 5 - Ansible Playbook ausführen - Ansible Provisioning

Jetzt können Sie auf dem Host-Computer überprüfen, ob die Website gehostet wurde.

Abb. 6 - Hosten Sie die Website auf Localhost - Ansible Provisioning

Dies ist eine Webseite, die auf allen Hosts bereitgestellt wird, die mit dem Server interagieren (in unserem Fall hatten wir nur einen Host), aber das Gleiche wäre auch für 100 Remote-Hosts möglich.

Dies bringt uns zum Ende des Ansible Provisioning-Blogs. Wenn Sie diesen Artikel hilfreich finden, lesen Sie die ' angeboten von Edureka. Es deckt alle Tools ab, die die IT-Branche intelligenter gemacht haben.

Hast du eine Frage an uns? Bitte poste es auf und wir werden uns bei Ihnen melden.