2 yaml
kraeml edited this page 2023-09-27 14:37:26 +00:00

YAML mit Ansible

YAML steht für "YAML Ain't Markup Language" oder "Yet Another Markup Language" und ist eine leicht lesbare Daten-Serialisierungs-Sprache. Es wird oft verwendet, um Konfigurationsdateien und Datenstrukturen in einem menschenlesbaren Format zu speichern. YAML verwendet Einrückungen und Zeilenumbrüche, um Daten hierarchisch zu strukturieren, anstatt spezielle Symbole wie Klammern oder Tags zu verwenden. Dies erleichtert die Handhabung von Konfigurationsdateien und ist in der Softwareentwicklung weit verbreitet.

In Ansible dient YAML (YAML Ain't Markup Language) als Sprache für Playbooks, um Konfigurationen zu definieren. Hier sind einige Funktionen von YAML im Ansible-Kontext:

  1. Playbook-Definition:
   ---
   - name: Beispiel Playbook
     hosts: all
     tasks:
       - name: Beispiel Task
         debug:
           msg: "Hallo, Welt!"
  1. Variablen-Definition:
   ---
   variable1: Wert1
   variable2: Wert2
  1. Aufgaben mit Schleifen (Iteration):
   ---
   - name: Iteration über Liste
     hosts: localhost
     vars:
       fruit_list:
         - apple
         - banana
         - orange
     tasks:
       - name: Drucke Obst
         debug:
           msg: "Das Obst ist {{ item }}"
         loop: "{{ fruit_list }}"
  1. Aufgaben mit Bedingungen:
   ---
   - name: Bedingte Ausführung
     hosts: localhost
     vars:
       is_production: true
     tasks:
       - name: Nur in der Produktion ausführen
         debug:
           msg: "Das ist die Produktionsumgebung"
         when: is_production
  1. Verwendung von Dictionaries:
   ---
   person:
     name: John Doe
     age: 30
     occupation: Developer
  1. Schachtelung von Aufgaben:
   ---
   - name: Schachtelung von Aufgaben
     hosts: localhost
     tasks:
       - name: Hauptaufgabe
         block:
           - name: Unteraufgabe 1
             debug:
               msg: "Das ist Aufgabe 1"
           - name: Unteraufgabe 2
             debug:
               msg: "Das ist Aufgabe 2"
         rescue:
           - name: Behandele Fehler
             debug:
               msg: "Ein Fehler ist aufgetreten"

Das sind grundlegende Beispiele, und die Verwendung von YAML in Ansible ermöglicht eine klare und leserliche Darstellung von Konfigurationen und Aufgaben.

YAML wird in der Informatik hauptsächlich für die Konfiguration von Anwendungen und Datenstrukturierung verwendet. Typische Anwendungsbereiche sind:

  1. Konfigurationsdateien: YAML wird häufig verwendet, um Konfigurationsinformationen für Softwareanwendungen zu speichern. Beispiele sind Docker Compose, Kubernetes-Manifeste und Konfigurationsdateien für Anwendungen wie GitLab und Ansible.

  2. Datenübertragung: YAML wird verwendet, um Daten zwischen verschiedenen Anwendungen zu übertragen, insbesondere in APIs und in der Webentwicklung. Swagger/OpenAPI und GraphQL sind Beispiele, die YAML zur Definition von API-Spezifikationen verwenden.

  3. Datenstrukturierung: YAML kann verwendet werden, um strukturierte Daten darzustellen. Es wird in vielen Build-Tools und CI/CD-Pipelines verwendet, um Workflows und Aufgaben zu definieren.

  4. Markdown-Metadaten: YAML-Blöcke werden manchmal in Markdown-Dokumenten verwendet, um Metadaten wie Titel, Autor und Datum zu speichern.

  5. Testdefinitionen: In einigen Test-Frameworks wird YAML verwendet, um Testfälle und Konfigurationen zu definieren.

  6. Dokumentation: YAML kann auch in der Dokumentation verwendet werden, um Beispiele und Strukturierungsinformationen darzustellen.

Die Verwendung von YAML hat in den letzten Jahren zugenommen, hauptsächlich in DevOps-, Container-Orchestrierungs- und Cloud-Bereichen, aber auch in vielen anderen IT-Anwendungen.

Beispiel in Docker Compose:

version: '3'
services:
  webapp:
    image: nginx:latest
    ports:
      - "80:80"
  database:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb

In diesen Beispielen zeigt YAML die Konfiguration von Docker Compose-Diensten auf einfache und gut lesbare Weise.