Startseite Automatisierung - Ansible - Installation
Eintrag
Abbrechen

Automatisierung - Ansible - Installation

Ansbile ist derzeit das Tool im Bereich Netzwerk, um Abläufe zu automatisieren. Bei den Netzwerkgeräten kommt es auf den jeweiligen Hersteller an, ob dieser unterstützt wird. Sollte der Drang bestehen, das Netzwerk komplett mit Ansible zu autmatisieren, sollte auf jeden Fall darauf geachtet werden, dass der Hersteller offiziell unter Ansible Galaxy vertreten ist.

Ansible Installation

Ansible kann über den Paketmanager des Systems installiert werden, die Version kann jedoch veraltet sein. Ich installiere Ansbile direkt über Python.

1
2
3
4
heiko@jellyfish:~/virtenv$ python -m venv ansi
heiko@jellyfish:~/virtenv$ cd ansi
heiko@jellyfish:~/virtenv/ansi$ source bin/activate
(ansi) heiko@jellyfish:~/virtenv/ansi$

Als weitere Pakete werden pip-review (Updates der Software) und pip_search (Suche nach Software) installiert.

1
2
(ansi) heiko@jellyfish:~/virtenv/ansi$ pip3 install pip-review
(ansi) heiko@jellyfish:~/virtenv/ansi$ pip3 install pip_search

Ein pip_search ansible listet u. a. folgendes Paket auf:

1
│ 📂 ansible-core       │ 2.13.5      │ 11-10-2022 │ Radically simple IT automation                   │
1
(ansi) heiko@jellyfish:~/virtenv/ansi$ pip3 install ansible-core

Jetzt ist Ansible installiert. Um Zugriff auf entsprechende Geräte zu erlangen, muss per Ansible Galaxy die entsprechende Kollektion heruntergeladen werden. Beispielsweise für Extreme Network:

1
2
3
4
5
6
7
8
9
10
11
(ansi) heiko@jellyfish:~/virtenv/ansi$ ansible-galaxy collection install extreme.exos
(ansi) heiko@jellyfish:~/virtenv/ansi$ ansible-galaxy collection install community.network

(ansi) heiko@jellyfish:~/virtenv/ansi$ ansible-galaxy collection list

Collection        Version
----------------- -------
ansible.netcommon 3.1.3  
ansible.utils     2.6.1  
community.network 4.0.1  
extreme.exos      0.1.1  

Damit sind die benötigten Module installiert. Jetzt kann die Umgebung noch aktualisert werden.

1
(ansi) heiko@jellyfish:~/virtenv/ansi$ pip-review -a

Diese Sammlung wird sich, je nach Anzahl der Hersteller im Netz, noch vergrößern.

Verzeichnisstruktur anlegen

Ansible setzt auf Variablen. group_vars und host_vars beschreiben Definitionen für die jeweiligen Geräte. Um alle Geräte mit Variablen auszustatten, kann die Datei group_vars/all.yml angelegt werden.

Um einzelne Hosts mit Variablen auszustatten wird eine entsprechende Datei unter host_vars/hostname.yml angelegt.

Das “Arbeitsverzeichnis” von Ansbile benötgt die Datei ansible.cfg. Diese sieht in etwa folgendermaßen aus (Beispiel Extreme Networks):

1
2
3
4
5
6
7
8
9
10
11
[defaults]
inventory=hosts
retry_files_enabled=False
gathering=explicit
host_key_checking=False
action_warnings=False
deprecation_warnings=False
ansible_user=bigboss
ansible_command_timeout=600
command_timeout=600
ask_pass=True

Anschließend folgt das Inventory, hier werden sämtliche Gruppen der jeweiligen Geräte eingerichtet. Das Inventory liegt im Regelfall in der hosts Datei.

1
2
3
4
5
6
7
8
[edge]
sw01
sw02
sw03
#sw04

[dev]
sw01

Es gibt die Gruppe edge und dev. Wenn edge jetzt andere Variablen erhalten soll als dev, wird unter group_vars die Datei edge.yml angelegt usw.

Ein Auflisten der Gruppen erfolgt mit ansible-inventory --graph und gibt folgendes aus:

1
2
3
4
5
6
7
8
@all:
  |--@ungrouped:
  |--@edge:
  |  |--sw01
  |  |--sw02
  |  |--sw03
  |--@dev:
  |  |--sw01

Damit ist Ansbile installiert, grob konfiguriert und kann verwendet werden.

Welche Zugriffsmöglichkeiten verwendet werden müssen, steht in der Ansible Dokumentation der Hersteller. Die meisten Möglichkeiten sind SSH, netconf, ssh mit sudo, APIs usw.