Ansible: Übersicht und Verwendung
Webagentur » Digitale Nachrichten » Ansible: Übersicht und Verwendung

Ansible: Übersicht und Verwendung

Was ist'Ansible ? Wie benutzt man es? Welche Konkurrenten? Ein kleiner Trick, um ein neues Produkt gezielt anzusprechen, das seit einiger Zeit einen starken Eindruck hinterlässt.

Ansible erschien im Jahr 2012. Im Oktober 2015 gab Red Hat die Übernahme von Ansible bekannt, das dann zu einem Flaggschiff-Produkt in seinem Stack wurde. Das passt perfekt in die Lösungen von Red Hat und bekräftigt Argumente über die einfache Verwaltung einer Serverfarm.

Ansible ist eine Lösung für die gleichzeitige Bereitstellung, Aufgabenausführung und Konfigurationsverwaltung auf mehreren Computern. Er ist Agent weniger und verwenden SSH zur Umsetzung der durchzuführenden Maßnahmen selbst eingeschrieben YAML.

Tanz Ansible, gibt es viele Produkte, die am Anfang stören können. Sie könnten davon hören Ansible-Playbook, Ansible-Tresor et Ansible Galaxie.

Ansible und die Module

Zwei Dinge zu wissen:

  • Wenn Sie verwenden Ansible, verwenden Sie Module. Es gibt eine Liste mit bereits geschriebenen Modulen, aber Sie können auch Ihre eigenen schreiben. Sie müssen es in Python schreiben.
  • Sie müssen eine Domäne/IP-Gruppe oder Gruppe angeben, in der die Aktion verwendet werden soll.

Beispiel:

Wir werden überprüfen, ob unsere Maschine gut ist up mit dem Modul Klingeln.

1
2
3
4
5
$ ansible localhost -m ping
lokaler Host | ERFOLG => {
"geändert": falsch,
"Klingeln": "pong"
}

Etwas anderes verwenden als localhostB. eine Reihe von Domänen, müssen Sie die Datei vervollständigen /etc/ansible/hosts.

1
2
3
[baptiste-donaux.fr]
www.baptiste-donaux.fr
me.baptiste-donaux.fr
1
2
3
4
5
6
7
8
9
10
$ ansible -m ping baptiste-donaux.fr
me.baptiste-donaux.fr | Erfolg >> {
"geändert": falsch,
"Klingeln": "pong"
}
www.baptiste-donaux.fr | Erfolg >> {
"geändert": falsch,
"Klingeln": "pong"
}

Und so verifizieren wir, dass a Pool von Servern im Guten up . Hier ist die Liste der vorhandenen Basismodule.

Sobald Sie verstehen, wie ein Modul funktioniert, können Sie alle anderen Module auf die gleiche Weise verwenden. Wenn Sie ein Modul verwenden, können Sie Argumente angeben (argument -a).

Zum Beispiel, wie man einen Befehl über viele laufen lässt.

1
2
3
4
5
6
$ ansible -m Shell -a „docker –version“ baptiste-donaux.fr
me.baptiste-donaux.fr | erfolgreich | rc=0 >>
Docker-Version 1.12.1, Build 23cf638
www.baptiste-donaux.fr | erfolgreich | rc=0 >>
Docker-Version 1.12.1, Build 23cf638

Stellen Sie aber auch sicher, dass ein Paket installiert ist.

1
2
3
4
$ ansible -m apt -a „name=vim state=präsent“ www.baptiste-donaux.fr
www.baptiste-donaux.fr | Erfolg >> {
"geändert": falsch
}

Oder aktualisieren Sie einfach einen oder mehrere Server.

1
2
3
4
5
6
7
8
9
10
11
12
$ ansible -m apt -a „update_cache=ja“ www.baptiste-donaux.fr
www.baptiste-donaux.fr | Erfolg >> {
"geändert": falsch
}
$ ansible -m apt -a „upgrade=dist“ www.baptiste-donaux.fr
www.baptiste-donaux.fr | Erfolg >> {
"geändert": falsch,
"Nachricht": „Paketlisten lesen…nAbhängigkeitsbaum erstellen…nZustandsinformationen lesen…n0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.n“,
„stderr“: "",
"Stdout": „Paketlisten lesen…nAbhängigkeitsbaum erstellen…nZustandsinformationen lesen…n0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.n“
}

Ansible und Playbooks (Willkommen in der wahren Welt)

Einen Maschinenpark mit Aufträgen zu verwalten ist schon gut, und es ist vor allem die Basis vonAnsible. Trotzdem ist es schwer vorstellbar, ein Szenario zu spielen, indem man Befehle nacheinander ausführt. Zum Glück für uns, Ansible-Playbook ist dafür da!

Playbook zur einfachen Verwaltung von Aufgaben

Szenarien sind in YAML geschrieben. Hier ist ein kleines Beispiel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
– Gastgeber: baptiste-donaux.fr
Aufgaben:
- Name: Fügen Sie den APT-Schlüssel für das Docker-Repository hinzu
apt_key:
Schlüsselserver: „hkp://p80.pool.sks-keyservers.net:80“
ID: 58118E89F3A912897C070ADBF76221572C52609D
- Name: Fügen Sie das APT Docker-Repository hinzu
apt_repository: repos='deb https://apt.dockerproject.org/repo debian-jessie main' Zustand = vorhanden
- Name: Aktualisieren Sie den APT-Cache mit dem neuen Repository
geeignet: update_cache=ja
- Name: Installieren Sie das Docker-Engine-Paket, falls dies nicht der Fall istnicht vorhanden
apt: name=docker-engine state=present
– name: Aktivieren und starten Sie den Docker-Dienst
systemd: aktiviert=ja status=gestartet name=docker
– Name: InstallPython
apt: name=python state=present
– Name: PIP installieren
apt: name=python-pip state=present
– Name: docker-py-Abhängigkeit
pip: name=docker-py
– Name: Ziehen Sie das Nginx-Image
docker_image: name=nginx pull=ja
– name: Erstellen Sie einen Nginx-Container
docker_container:
Name: Proxy
Bild: nginx
veröffentlichte_ports:
– „80:80“
Zustand: vorhanden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ansible my_playbook.yml
SPIELEN [baptiste-donaux.fr] ***************************************** * **********
AUFGABE [Einrichtung] ********************************************* ********************
ok: [baptiste-donaux.fr]
TASK [APT-Schlüssel hinzufügen for Docker-Repository] ********************************************
ok: [baptiste-donaux.fr]
AUFGABE [APT-Docker-Repository hinzufügen] ********************************************* ****
ok: [baptiste-donaux.fr]
TASK [APT-Cache mit neuem Repository aktualisieren] ************************************
ok: [baptiste-donaux.fr]
TASK [Installieren Sie das Docker-Engine-Paket if es nichtexistiert nicht] **********************
ok: [baptiste-donaux.fr]
AUFGABE [Python installieren] ************************************************* *************
ok: [baptiste-donaux.fr]
AUFGABE [PIP installieren] ************************************************* ****************
ok: [baptiste-donaux.fr]
AUFGABE [docker-py-Abhängigkeit] ********************************************* *********
ok: [baptiste-donaux.fr]
AUFGABE [Nginx Image Pull] ************************************************ *************
ok: [baptiste-donaux.fr]
AUFGABE [Nginx-Container erstellen] ****************************************** *****
ok: [baptiste-donaux.fr]
SPIELZUSAMMENFASSUNG**************************************************** **********************
baptiste-donaux.fr: ok=10 geändert=0 nicht erreichbar=0 fehlgeschlagen=0

Und das ist nichts einfacher. Zusätzlich zum Ausführen eines vollständigen Szenarios auf einer Reihe von Servern, wenn einer von ihnen fehlerhaft gefunden wird, eine Datei .wiederholen erstellt und durch Neustart des Befehls wird das Szenario dort fortgesetzt, wo Sie aufgehört haben.

Starten Sie Ihr Szenario ganz einfach neu und machen Sie dort weiter, wo Sie aufgehört haben

Ansible Galaxy und Vault

Galaxy und wo du deine Mods speichern kannst

Ansible-Galaxy ist ein Hub, um Ihre Module zu teilen. Es funktioniert ein bisschen wie Docker-Hub für Docker-Images.

Vault und wie man vertrauliche Informationen schützt

In einigen Fällen müssen Sie vertrauliche Informationen in Ihren Szenarien speichern (Passwort usw.). Anstatt diese Informationen im Klartext zu speichern, können Sie ihre Dateien codieren/decodieren.

Ein kleines Beispiel wird nicht schaden.

1
2
3
4
# my_playbook.yml
– Gastgeber: localhost
Aufgaben:
- Hülse: sshpass-p „fooo“ scp -r /bar baz@localhost:/qux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Codieren Sie Ihre Datei mit Vault
$ansible-vault verschlüsseln my_playbook.yml
Neues Vault-Passwort:
Bestätigen Sie das neue Vault-Passwort:
Verschlüsselung erfolgreich
# Zeigt das verschlüsselte Playbook an
$ cat mein_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Verwenden Sie das codierte Playbook, ohne es zuerst zu decodieren
$ ansible-playbook mein_playbook.yml –fragen-vault-pass
Tresor-Passwort:
...

Es ist einfach, Ihre Playbooks mit Ansible Vault zu schützen

Konklusion

Dieser Artikel soll präsentieren Ansible und zeigen Sie, wie es Ihre Aufgaben vereinfachen kann. Fühlen Sie sich frei, Feedback zu geben, diesen Beitrag zu verbessern und/oder zu korrigieren.

★ ★ ★ ★ ★