Heim >System-Tutorial >LINUX >Verwenden Sie Ansible, um die Bereitstellung serverloser Anwendungen zu automatisieren
Einführung | Ansible ist als einfachstes Bereitstellungstool konzipiert, das tatsächlich funktioniert. Dies bedeutet, dass es sich nicht um eine vollständige Programmiersprache handelt. Sie müssen eine YAML-Vorlage schreiben, die die Aufgaben definiert und alle Aufgaben auflistet, die automatisiert werden müssen. |
Die meisten Menschen stellen sich Ansible als leistungsfähigeres „SSH in einer for-Schleife“ vor, und in einfachen Anwendungsfällen trifft dies auch zu. Tatsächlich ist Ansible jedoch eine Aufgabe, nicht SSH. In vielen Fällen verbinden wir uns über SSH, aber es unterstützt auch Dinge wie Windows Remote Management (WinRM) auf Windows-Rechnern und die HTTPS-API als gemeinsame Sprache für Cloud-Dienste.
In der Cloud kann Ansible auf zwei unabhängigen Ebenen arbeiten: Steuerungsebene und Instanzressourcen. Die Kontrollebene besteht aus allem, was nicht auf dem Betriebssystem läuft. Dazu gehört die Einrichtung Ihres Netzwerks, die Erstellung neuer Instanzen, die Bereitstellung von Diensten auf höherer Ebene wie Amazon S3 oder DynamoDB sowie alles, was Sie benötigen, um Ihre Cloud-Infrastruktur sicher zu halten und Ihre Kunden zu bedienen.
Sie wissen bereits, dass Ansible an der Instanz arbeiten kann: Dienste starten und stoppen, Konfigurationsdateien als Vorlage erstellen, Pakete installieren und alle betriebssystembezogenen Vorgänge über SSH ausführen.
Was ist nun nutzlos? Je nachdem, wen Sie fragen, ist Serverless entweder eine unendliche Erweiterung der öffentlichen Cloud oder ein völlig neues Paradigma, bei dem alles aus API-Aufrufen besteht und noch nie zuvor gemacht wurde.
Ansible übernimmt den ersten Blick. Bevor „serviceless“ ein Fachbegriff war, mussten Benutzer EC2-Instanzen, VPC-Netzwerke (Virtual Private Cloud) und alles andere verwalten und konfigurieren. Serviceless ist ein weiterer Schritt in Richtung Managed Services und funktioniert gut mit der agentenlosen Architektur von Ansible.
Bevor wir mit dem Lambda-Beispiel beginnen, schauen wir uns eine einfache CloudFormation-Stack-Konfigurationsaufgabe an:
- name: Build network cloudformation: stack_name: prod-vpc state: present template: base_vpc.yml
Das Schreiben einer solchen Aufgabe dauert nur ein paar Minuten, aber es ist der letzte halbmanuelle Schritt beim Aufbau der Infrastruktur – klicken Sie auf „Stapel erstellen“ – dadurch wird das Playbook mit den anderen zusammengefügt. Jetzt ist Ihre VPC nur noch eine weitere Aufgabe, die Sie beim Einrichten einer neuen Region in Anspruch nehmen müssen.
Da der Cloud-Anbieter die Quelle der Wahrheit darüber ist, was in Ihrem Konto passiert, bietet Ansible viele Möglichkeiten, laufende Instanzen oder Netzwerke mithilfe von IDs, Namen und anderen Parametern abzurufen, zu filtern und abzufragen. Am Beispiel des cloudformation_facts-Moduls können wir die Subnetz-ID, den Netzwerkbereich und andere Daten aus der soeben erstellten Vorlage abrufen.
- name: Pull all new resources back in as a variable cloudformation_facts: stack_name: prod-vpc register: network_stack
Für serverlose Anwendungen benötigen Sie neben DynamoDB-Tabellen, S3-Buckets und allem anderen auf jeden Fall eine Lambda-Funktion. Glücklicherweise kann mit dem Lambda-Modul eine Lambda-Funktion auf die gleiche Weise erstellt werden wie der Stack der vorherigen Aufgabe:
- lambda: name: sendReportMail zip_file: "{{ deployment_package }}" runtime: python3.6 handler: report.send memory_size: 1024 role: "{{ iam_exec_role }}" register: new_function
Wenn Sie über andere Tools verfügen, die Sie zur Bereitstellung serverloser Anwendungen verwenden möchten, ist dies ebenfalls möglich. Das serverlose Open-Source-Framework verfügt über ein eigenes Ansible-Modul, das ebenfalls funktioniert:
- serverless: service_path: '{{ project_dir }}' stage: dev register: sls - name: Serverless uses CloudFormation under the hood, so you can easily pull info back into Ansible cloudformation_facts: stack_name: "{{ sls.service_name }}" register: sls_facts
Das ist nicht alles, was Sie brauchen, da auch das serverlose Projekt vorhanden sein muss und Sie dort Ihre Funktionen und Ereignisquellen stark definieren werden. Für dieses Beispiel erstellen wir eine Funktion, die auf HTTP-Anfragen reagiert. Serviceless-Frameworks verwenden YAML als Konfigurationssprache (wie Ansible), daher sollte Ihnen das bekannt vorkommen.
# serverless.yml service: fakeservice provider: name: aws runtime: python3.6 functions: main: handler: test_function.handler events: - http: path: / method: get
Auf dem AnsibleFest werde ich dieses Beispiel und andere ausführliche Bereitstellungsstrategien behandeln, um die Nutzung bereits vorhandener Playbooks und Infrastruktur sowie neue serverlose Praktiken zu maximieren. Unabhängig davon, ob Sie dorthin gelangen oder nicht, hoffe ich, dass diese Beispiele Ihnen den Einstieg in die Verwendung von Ansible erleichtern können, unabhängig davon, ob Sie Dienste verwalten müssen oder nicht.
AnsibleFest ist eine eintägige Konferenz, die Hunderte von Ansible-Benutzern, Entwicklern und Industriepartnern zusammenbringt. Erleben Sie mit uns Produktaktualisierungen, inspirierende Gespräche, technische Einblicke, praktische Demos und einen ganzen Tag voller Networking.
Das obige ist der detaillierte Inhalt vonVerwenden Sie Ansible, um die Bereitstellung serverloser Anwendungen zu automatisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!