Benutzer-Werkzeuge

Webseiten-Werkzeuge


ansible

Begriffe

Begriff Erklärung
FactsEigenschaften eines Systems.

Können über das „setup“-Modul aufgelistet werden.

Gegen diese kann gematcht werden um Befehle zum Beispiel nur auf Maschinen mit bestimmten Eigenschaften auszuführen.
InventoryListe aller Hosts, ggf. gruppiert um sie als Gruppe anzusprechen
TasksAufruf eines Moduls um eine bestimmte Aufgabe durchzuführen
PlaybookSammlung von Tasks die als ein Satz ausgeführt werden
RolesRoles erlaubt es mehrere Playbooks zu einer Rolle zusammenzufassen.

Dadurch lassen sich Playbooks thematisch aufteilen, gleichzeitig aber zusammenfassen.0
Die Roles können wiederum in anderen Playbooks genutz werden.
Sinnvoll zum Beispiel um Systeme aufzusetzen → ein System kann dabei mehrere Rollen haben z.B. Basissystem + Webserver + Datenbankserver die jeweils in eigenen Rollen definiert werden können

Ad-Hoc-Kommandos

  • Befehle die sofort und ohne Playbook ausgeführt werden

Syntax:

ansible <Host-Gruppe> -i Hostdatei -u <Login-User> -m <Modul> -a "<Optional Argumente>" -b 
  • -b sorgt ggf. dafür das man root wird (wenn der Login-User ein anderer ist) (ich nehme an sudo)

Play-Book

  • Führt einen Satz von vorher definierten Befehlen und für bestimmte Host-Gruppen aus
ansible-playbook <Play-Book> -i <Pfad zur Host-Datei> -u <Einloogen als>

Aufbau

  • Geschrieben in YAML
  • oberste Ebene besteht aus einer Liste von Plays
    • darunter folgt ein Dictionary mit den Eigenschaften des Plays als Dictionary-Einträge:
      • name des Plays
      • hosts
      • tasks → enthält die Tasks
      • handlers → die Handlers
- name: <Beschreibung des Plays>
  hosts: <Liste der Hosts für die das Play ausgeführt werden soll>
  vars:
       <variable1>:<wert1>
       <variable2>:<wert2>
  remote_user: <username>
  
  tasks:
     - name: <taskname>
       <modulename>:
           <Moduleparameter>:value

Einige Keywords auf dieser Ebene:

Keyword Bedeutung
remote-userAls welcher Benutzer sich auf dem Remote-System eingeloggt wird
becomeWerde root nach dem Login.

Wert: yes

Tasks

tasks:
    - name: <somename>
      <modulename>:
          <parameter1>: <value1>
          <parameter2>: <value2>
    - name: <somename>
      <modulname>:
          <parameter1>: <value1>
          <parameter2>: <value2>
      notify: <handler-Name der Benachrichtigt werden soll>
  • Tasks ist ein Dictionary-Eintrag der eine Liste mit den Tasks enthält
    • jedes Listenelement in tasks enthält die Beschreibung eines Tasko
      • jedes Task-Listenelement enthält ein Dictionary
      • der name-Key enthält einen frei definierbaren Namen als Value
      • der modulename-Key muss der Name des Moduls sein mit dem der Task ausgeführt werden soll
        • dieser wiederum enthält ein Dictionary welches die Parameter des Moduls als Dictionary-Einträge enthält

Auch wenn Tasks mit Name beginnt, so ist der ganze Abschnitt ein gemeinsamer Listeneintrag, bestehend aus einem Dictionary mit mehreren Keys, „name“ ist nur ein Key in diesem Dictionary und könnte auch an einer beliebigen anderen Stelle im Dictionary stehen.

Handlers

Dienen dazu nach dem alle Tasks durch sind notwendige Dinge zu tun: wie Neustarts von Services usw.

  • Werden durch notify-Eintrag in tasks getriggered - wen der Task „changed:True“ zurück gibt (also wirklich etwas geändert werden musste)
  • werden aber erst nach dem Abarbeiten aller Tasks ausgeführt
  • werden nur einmal ausgeführt → egal wieviele Tasks sie getriggered haben
tasks:
    - name: <somename>
      <modulename>:
          <parameter1>: <value1>
          <parameter2>: <value2>
    - name: <somename>
      <modulname>:
          <parameter1>: <value1>
          <parameter2>: <value2>
          notify: <somename>
handlers:
    - name: <somename>
      <modulname>:
         <parameter1>: <value1>
         <parameter2>: <value2>

Der Handler wird oben im zweiten Task aufgerufen (die notify-Zeile).
In der Handler-Konfiguration existiert dann ein Handler mit dem entsprechenden Namen.
Die Handler-Konfiguration entspricht ansonstem der eines Tasks.

Module

setup

Sammelt alle bekannten Facts über die entsprechende Maschine.
Das kann später benutzt werden um nur bestimmte Maschinen (auf die bestimmte Facts zutreffen) anzusprechen.

ping

Ping die Maschinen die angegeben wurden

Inventory

  • Datei in der alle Devices stehen
  • ggf. mit Name und Gruppe
    • dadurch lassen sie sich in den Playbooks mit Name oder Gruppe ansprechen

Gruppen:

[Gruppenname]
Einträge

Variablen-Sektionen:

[Gruppenname:vars]
Variable=Wert
  • Der Gruppenname kann „all“ sein → in diesem Fall bezieht es sich auf alle Gruppen

Roles

Roles erlaubt es mehrere Playbooks zu einer Rolle zusammenzufassen.

Dadurch lassen sich Playbooks thematisch aufteilen, gleichzeitig aber zusammenfassen.0
Die Roles können wiederum in anderen Playbooks genutz werden.
Sinnvoll zum Beispiel um Systeme aufzusetzen → ein System kann dabei mehrere Rollen haben z.B. Basissystem + Webserver + Datenbankserver die jeweils in eigenen Rollen definiert werden können.

  • jede Rolle ist eine Verzeichnisstruktur

Optionen der Werkzeuge

  • Die gelisteten Optionen können in verschiedenen ansible-Werkzeugen genutzt werden
Option Beschreibung
-k / –ask-passNormalerweise erwartet ansible das ssh-Login per Key funktioniert.
Die Option sorgt dafür das dass Passwort abgefragt wird
-b / –becomeNach dem Login via ssh, führe die Befehle mit sudo aus
-K / –ask-become-passIm Zusmmenhang mit sudo (Option -b) - Frage interaktiv nach dem sudo-Passwort

Dateien

ansible.cfg

  • Zentrale Konfigurationsdatei
    • /etc/ansible/ansible.cfg
    • ~/.ansible.cfg
ansible.txt · Zuletzt geändert: 2018/10/04 22:34 von root