constrict0r.unify

unify

Ansible-Rolle, um Sammlungen in eine einheitliche Sammlung zu vereinen.

Vollständige Dokumentation auf Readthedocs <https://unify.readthedocs.io>_.

Quellcode auf:

Github <https://github.com/constrict0r/unify>_

Gitlab <https://gitlab.com/constrict0r/unify>_

Zutaten

Inhalt


  • Beschreibung <#Beschreibung>_
  • Benutzung <#Benutzung>_
  • Variablen <#Variablen>_
    • Eingabe <#input>_
      • validieren <#validate>_
      • aktualisieren <#update>_
      • artikel <#items>_
      • erweitern <#expand>_
      • titel <#titles>_
      • sekundär <#secondary>_
      • artikel_b <#items-b>_
      • erweitern_b <#expand-b>_
      • titel_b <#titles-b>_
    • Ausgabe <#output>_
      • einheitlich <#unified>_
      • einheitlich_b <#unified-b>_
  • Module <#Module>_
    • unify-module <#unify-module>_
      • Zusammenfassung <#synopsis>_
      • Parameter <#parameters>_
      • Beispiele <#examples>_
      • Rückgabewerte <#return-values>_
      • Status <#status>_
      • Autoren <#authors>_
  • Plugins <#Plugins>_
    • user_root <#user-root>_
    • variable_boolean <#variable-boolean>_
    • variable_boolean_true <#variable-boolean-true>_
    • variable_collection <#variable-collection>_
    • variable_empty <#variable-empty>_
    • variable_path <#variable-path>_
    • variable_url <#variable-url>_
    • variable_url_existent <#variable-url-existent>_
  • YAML <#YAML>_
  • Attribute <#Attributes>_
    • item_expand <#item-expand>_
    • item_path <#item-path>_
  • Anforderungen <#Requirements>_
  • Kompatibilität <#Compatibility>_
  • Einschränkungen <#Limitations>_
  • Lizenz <#License>_
  • Links <#Links>_
  • UML <#UML>_
    • Klasse <#class>_
    • Bereitstellung <#deployment>_
    • Haupt <#main>_
    • user-root <#user-root>_
    • variable-boolean <#variable-boolean>_
    • variable-boolean-true <#variable-boolean-true>_
    • variable-collection <#variable-collection>_
    • variable-empty <#variable-empty>_
    • variable-path <#variable-path>_
    • variable-url <#variable-url>_
    • variable-url-existent <#variable-url-existent>_
    • unify-collection <#unify-collection>_
    • unify-item <#unify-item>_
  • Autor <#Author>_

Beschreibung


Ansible-Rolle, um Sammlungen in eine einheitliche Sammlung zu vereinen. Umfasst ein Plugin namens util und ein Modul namens unify.

Die zu vereinheitlichenden Elemente können Einzelartikel, Sammlungen von Artikeln, Pfade und URLs zu .yml-Dateien sein, aus denen weitere Elemente geladen werden.

Die Variable items wird verwendet, um Elemente zu spezifizieren, die vereinheitlicht werden sollen, das Ergebnis wird in einer einzelnen unified-Sammlung gespeichert. Optional wird eine sekundäre unified_b Sammlung erstellt, wenn die secondary-Variable auf true gesetzt ist. Wenn mehr als zwei vereinheitlichte Sammlungen benötigt werden, kann das enthaltene unify-Modul verwendet werden.

Um die Datei- oder URL-Elemente zu laden, muss die Variable expand auf true gesetzt werden oder ein Artikel muss das item_expand-Attribut als true angeben. Wenn Elemente aus Dateien erweitert werden, darf die titles-Variable nicht leer sein.

Nehmen wir an, der Wert der items-Variablen ist der Pfad /home/username/my-config.yml, die titles-Variable hat den Wert packages und die expand-Variable ist auf true gesetzt, wird diese Rolle versuchen, eine Liste namens packages aus der Datei /home/username/my-config.yml zu laden.

Wenn die expand-Variable auf false gesetzt ist, werden die in der items-Variablen gefundenen Datei-Pfade oder URLs als einfache Textartikel behandelt.

Wenn ein Element zur unified-Variable hinzugefügt wird, wird es nur hinzugefügt, wenn es nicht bereits vorhanden ist. Im Fall von booleschen Werten sind Duplikate in unified zulässig, da boolesche Werte häufig für Checklisten verwendet werden.

Die Rolle umfasst auch die Funktion, sicherzustellen, dass die Anforderungen installiert sind.

Benutzung


  • Um zu installieren und auszuführen:

    ansible-galaxy install constrict0r.unify
    ansible localhost -m include_role -a name=constrict0r.unify -K
    
  • Variablen übergeben:

    ansible localhost -m include_role -a name=constrict0r.unify -K \
        -e "{items: [1, '/home/user/my-config.yml']}"
    
  • Um die Rolle in einem Playbook einzuschließen:

    - hosts: servers
      roles:
          - {role: constrict0r.unify}
    
  • Um die Rolle als Abhängigkeit in einer anderen Rolle einzuschließen:

    dependencies:
      - role: constrict0r.unify
        items: [gemmata, muscaria]
    
  • Um die Rolle aus Aufgaben zu verwenden:

    - name: Führe Rollentask aus.
      import_role:
        name: constrict0r.unify
      vars:
        items: [gemmata, muscaria]
    

Um Tests auszuführen:

cd unify chmod +x testme.sh ./testme.sh

Bei einigen Tests müssen Sie möglicherweise sudo verwenden, um erfolgreich zu sein.

Variablen


Eingabe

Die folgenden Variablen werden unterstützt:

validieren

Boolescher Wert, der angibt, ob Validierungen angewendet werden sollen oder nicht.

Wenn auf true gesetzt, werden die folgenden Validierungen durchgeführt:

  • Überprüfen, ob der Benutzer root werden kann.

Diese Variable ist standardmäßig auf false gesetzt.

aktualisieren

Boolesche Variable, die definiert, ob der apt-Cache aktualisiert werden soll oder nicht.

Wenn auf true gesetzt, wird der apt-Cache aktualisiert.

Diese Variable ist standardmäßig auf false gesetzt.

artikel

Liste von Artikeln, die zur unified-Variablen hinzugefügt werden sollen.

Jedes Element wird nur hinzugefügt, wenn es definiert und nicht leer ist.

Diese Variable kann Einzelartikel, Listen, Wörterbücher, Pfade zu Dateien und URLs enthalten.

Bei der Angabe eines Pfades oder URL-Elements darf die titles-Variable nicht leer sein, titles wird als Name der Sammlungen verwendet, die aus jeder Datei geladen werden sollen.

erweitern

Boolescher Wert, der angibt, ob Elemente aus Datei-Pfaden oder URLs geladen oder einfach als einfache Text behandelt werden sollen.

Wenn auf true gesetzt, versucht diese Rolle, Elemente aus den angegebenen Pfaden und URLs zu laden.

Wenn auf false gesetzt, werden alle in der items-Variable gefundenen Datei-Pfade oder URLs als einfacher Text behandelt.

titel

Name, der als Index verwendet wird, um Elemente aus Dateien und URLs zu laden.

Diese Variable wird verwendet, wenn die expand-Variable auf true gesetzt ist.

Diese Variable ist standardmäßig leer.

sekundär

Boolescher Wert, der angibt, ob die in der items_b-Variable gefundenen Elemente in eine unified_b-Sammlung vereinheitlicht werden sollen.

Wenn auf true gesetzt, erstellt diese Rolle eine unified_b-Sammlung aus den in items_b gefundenen Elementen.

artikel_b

Liste von Artikeln, die zur unified_b-Variablen hinzugefügt werden sollen.

erweitern_b

Boolescher Wert, der angibt, ob Elemente aus Datei-Pfaden oder URLs geladen oder einfach als einfache Text behandelt werden sollen.

titel_b

Name, der als Index verwendet wird, um Elemente aus Dateien und URLs zu laden.

Ausgabe

Die folgenden resultierenden Variablen werden produziert:

unified

Ergebnisliste, in der die Elemente der items-Variablen gespeichert sind.

unified_b

Ergebnisliste, in der die Elemente der items_b-Variablen gespeichert sind.

Module


Die verfügbaren Module sind:

unify-module

Vereint die Elemente in eine einzelne unified-Variable.

Zusammenfassung

  • Nimmt Elemente aus mehreren Quellen und fügt sie zu einer einzelnen unified-Sammlung hinzu.

  • Die Elemente können Einzelartikel, Listen, Wörterbücher, Datei-Pfade und URLs zu .yml-Dateien sein.

  • Es kann gültige und ungültige Werte wie null, None und undefiniert behandeln.

Parameter

Parameter Wahl/Standardwert Kommentare
erweitern Wahl: nein, ja. Wenn auf ja gesetzt, und ein Datei-Pfad oder URL-Element gefunden wird, laden Sie die Elemente aus dieser Datei oder URL in die unified-Sammlung.
artikel Elemente, die zur unified-Sammlung hinzugefügt werden sollen.
titel Index, der in einer Datei oder URL verwendet wird, um Elemente in die unified-Variable zu laden.

Beispiele

     .. code::

  # Vereinheitliche zwei Listen.
  - name: Zwei Listen vereinheitlichen.
    items: [[one, two], [three, four]]
    register: unified_result

  # Vereinheitliche zwei Listen und übergebe eine als Variable.
  - name: Zwei Listen von Paketen vereinheitlichen.
    items: [[emacs, vim], "{{ my_packages }}"]
    register: unified_result

Rückgabewerte

Schlüssel Zurückgegeben Beschreibung
unified immer unified-Liste von Elementen oder eine leere Liste.
unified_b wenn sekundär = true Optionale sekundäre Liste.

Status

  • Dieses Modul garantiert keine Rückwärtskompatibilität für zukünftige Änderungen.

  • Dieses Modul wird von der Community gewartet.

Autoren

  • constrict0r

Plugins


Die verfügbaren Assertions sind:

user_root

Bestimmt, ob ein Benutzer root werden kann oder nicht.

Wenn der Benutzer root werden kann, wird true zurückgegeben, andernfalls wird false zurückgegeben.

variable_boolean

Bestimmt, ob eine Variable vom Typ boolescher Wert ist oder nicht.

Ergebnisse:

variable_boolean_true

Bestimmt, ob eine Variable vom Typ boolescher Wert ist und deren Wert true ist.

variable_collection

Bestimmt, ob eine Variable eine Sammlung ist oder nicht.

variable_empty

Bestimmt, ob eine Variable leer ist oder nicht.

variable_path

Bestimmt, ob eine Variable ein existierender Pfad ist oder nicht.

variable_url

Bestimmt, ob eine Variable eine URL ist oder nicht.

variable_url_existent

Bestimmt, ob eine Variable eine existierende URL ist.

YAML


Wenn Sie Konfigurationsdateien an diese Rolle als Parameter übergeben, wird empfohlen, jeder Datei eine .yml oder .yaml Erweiterung hinzuzufügen.

Es wird auch empfohlen, drei Bindestriche an den Anfang jeder Datei hinzuzufügen:

---

Sie können in der Datei die für Ihre Aufgaben erforderlichen Variablen einfügen:

---
items:
  - [gemmata, muscaria]

Wenn Sie möchten, dass diese Rolle Listen von Elementen aus Dateien und URLs lädt, können Sie die expand-Variable auf true setzen.

Wenn die expand-Variable false ist, wird jeder gefundene Datei-Pfad oder URL als einfacher Text behandelt.

Attribute


Auf der Elementebene können Sie Attribute verwenden, um zu konfigurieren, wie diese Rolle die Daten der Elemente verarbeitet.

Die von dieser Rolle unterstützten Attribute sind:

item_expand

Boolescher Wert, der angibt, ob dieses Element als Datei-Pfad oder URL behandelt oder einfach als einfacher Text behandelt werden soll.

item_path

Absoluter Datei-Pfad oder URL zu einer .yml-Datei.

Anforderungen


  • Ansible <https://www.ansible.com>_ >= 2.8.
  • Jinja2 <https://palletsprojects.com/p/jinja/>_.
  • Pip <https://pypi.org/project/pip/>_.
  • Python <https://www.python.org/>_.
  • PyYAML <https://pyyaml.org/>_.
  • Requests <https://2.python-requests.org/en/master/>_.

Um die Tests auszuführen, benötigen Sie auch:

  • Docker <https://www.docker.com/>_.
  • Molecule <https://molecule.readthedocs.io/>_.
  • Setuptools <https://pypi.org/project/setuptools/>_.

Kompatibilität


  • Debian Buster <https://wiki.debian.org/DebianBuster>_.
  • Debian Raspbian <https://raspbian.org/>_.
  • Debian Stretch <https://wiki.debian.org/DebianStretch>_.
  • Ubuntu Xenial <http://releases.ubuntu.com/16.04/>_.

Einschränkungen


  • Diese Rolle ignoriert geschachtelte Variablen (d.h. {{ my_variable }}) innerhalb von Sammlungen, um zu verhindern, dass undefinierte Variablen in den Prozess gelangen.
  • Es wird empfohlen, die titles-Variable als leer anzugeben, wenn sie nicht verwendet wird, um zu verhindern, dass ein "altes" titles-Wert verwendet wird.
  • Um unerwartetes Verhalten zu verhindern, wird empfohlen, immer die Variablen expand, secondary, update und validate anzugeben.

Lizenz


MIT. Siehe die LICENSE-Datei für weitere Details.

Links


  • Coveralls <https://coveralls.io/github/constrict0r/unify>_.
  • Github <https://github.com/constrict0r/unify>_.
  • Gitlab <https://gitlab.com/constrict0r/unify>_.
  • Gitlab CI <https://gitlab.com/constrict0r/unify/pipelines>_.
  • Readthedocs <https://unify.readthedocs.io>_.
  • Travis CI <https://travis-ci.com/constrict0r/unify>_.

UML


Klasse

Die Klassen des Projekts werden unten gezeigt.

Bereitstellung

Die gesamte Projektstruktur wird unten gezeigt.

Haupt

Der Datenfluss des Projekts wird unten gezeigt.

user-root

Der Datenfluss für den Testfilter user_root wird unten gezeigt.

variable-boolean

Der Datenfluss für den Testfilter variable_boolean wird unten gezeigt.

variable-boolean-true

Der Datenfluss für den Testfilter variable_boolean_true wird unten gezeigt.

variable-collection

Der Datenfluss für den Testfilter variable_collection wird unten gezeigt.

variable-empty

Der Datenfluss für den Testfilter variable_empty wird unten gezeigt.

variable-path

Der Datenfluss für den Testfilter variable_path wird unten gezeigt.

variable-url

Der Datenfluss für den Testfilter variable_url wird unten gezeigt.

variable-url-existent

Der Datenfluss für den Testfilter variable_url_existent wird unten gezeigt.

unify-collection

Der Datenfluss für die Funktion unify-collection wird unten gezeigt.

unify-item

Der Datenfluss für die Funktion unify-item wird unten gezeigt.

Autor


Der Reisende Vaudeville Bösewicht.

Viel Spaß!!!

Über das Projekt

Unify collections into a single unified_collection.

Installieren
ansible-galaxy install constrict0r.unify
GitHub Repository
Lizenz
mit
Downloads
4k
Besitzer
The Traveling Vaudeville Villain Gitlab: gitlab.com/constrict0r - Blog: geekl0g.wordpress.com - Twitter: twitter.com/constrict0r - Functional Café: is.gd/YDqy