Ansible-Inventare im Griff

Hosts können in Ansible über das Inventory gruppiert werden. Neben selbst definierten Gruppen können Inventories auch die vordefinierten Standard-Gruppen „all“ und „ungrouped“ nutzen. Diese Gruppen gibt es automatisch, auch wenn keine eigenen Gruppen angelegt worden sind.

Hosts können auch Mitglied in mehreren Gruppen sein. Das kann sinnvoll sein, wenn es Gruppen nach Art der Server gibt und Gruppen für die Position. Ein Weberver kann zum Beispiel Mitglied in der Gruppe der Dateiserver sein und gleichzeitig Mitglied der Gruppe „west“. Ein Beispiel für eine solche Gruppierung sieht am Beispiel von YAML folgendermaßen aus:

all:

  hosts:

    mail.example.com:

  children:

    webservers:

      hosts:

        foo.example.com:

        bar.example.com:

    dbservers:

      hosts:

        one.example.com:

        two.example.com:

        three.example.com:

    east:

      hosts:

        foo.example.com:

        one.example.com:

        two.example.com:

    west:

      hosts:

        bar.example.com:

        three.example.com:

    prod:

      hosts:

        foo.example.com:

        one.example.com:

        two.example.com:

    test:

      hosts:

        bar.example.com:

        three.example.com:

Gruppen können auch eingebettet sein. Das bedeutet, dass eine Gruppe und damit deren Hosts Mitglied einer anderen Gruppe sein können, die ebenfalls eigene Hosts und auch andere Gruppen enthält:

all:
hosts:
mail.example.com:
children:
webservers:
hosts:
foo.example.com:
bar.example.com:
dbservers:
hosts:
one.example.com:
two.example.com:
three.example.com:
east:
hosts:
foo.example.com:
one.example.com:
two.example.com:
west:
hosts:
bar.example.com:
three.example.com:
prod:
children:
east:
test:
children:
west:

Einstieg in das Inventory von Ansible

Im Inventory  wird festgelegt, welche Computer im Netzwerk durch Ansible verwaltet werden sollen. Die Computer können im Inventory auch gruppiert werden.  Die Daten werden entweder im YAML-Format oder als INI-Datei gespeichert . Im folgenden gehen wir auf die Konfiguration mit YAML ein:


all:
hosts:
fileserver1:
ansible_host: 192.168.178.12

In dieser Datei wird zum Beispiel festgelegt, dass der Server „fileserver1“ mit der IP-Adresse 192.168.178.12 erreichbar ist.  Die Datei kann entsprechend erweitert werden, wenn mehr Server angebunden werden sollen. Auch hier werden wieder der Name des Servers in Ansible und die IP-Adresse angegeben:


all:
hosts:
fileserver1:
ansible_host: 192.168.178.12
fileserver2:
ansible_host: 192.168.178.13
fileserver3:
ansible_host: 192.168.178.14
Exchange01:
ansible_host: 192.168.178.23

Auf Basis dieser Daten lassen sich die Server auch gruppieren. Dazu wird die Option „children“ genutzt:


all:
hosts:
fileserver1:
ansible_host: 192.168.178.12
fileserver2:
ansible_host: 192.168.178.13
fileserver3:
ansible_host: 192.168.178.14
Exchange1:
ansible_host: 192.168.178.23
children:
fileserver:
hosts:
fileserver1:
fiileserevr2:
webserver3:
Exchange:
Exhange01:

Bevor mit Ansible weiter gearbeitet wird, sollte zunächst überprüft werden, ob die Server im Inventory auch erreicht werden können:

ansible -i inventory.yaml all -m ping

Anstatt die Option „all“  können auch die einzelnen Gruppennamen verwendet werden. 

Für das Erstellen von Inventories können auch INI-Dateien verwendet:

mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com

Office 365 mit der PowerShell gemeinsam verwalten

Um Office 365 und Microsoft Azure zu verwalten, müssen Sie zusätzliche Module herunterladen und auf dem Server installieren:

„Install-Module -Name AzureAD“

Danach müssen Sie noch den Microsoft Online Services-Anmelde-Assistenten (http://www.microsoft.com/de-de/download/details.aspx?id=41950) installieren. Anschließend muss auch das Modul für die Verwaltung von Office 365 installiert werden:

„Install-Module MSOnline“

Nachdem Sie die Erweiterungen installiert haben, können Sie sich in der PowerShell zunächst mit Ihrem Office 365-Konto verbinden. Dazu verwenden Sie das CMDlet „Connect-MsolService“. Findet die Powershell das Modul nicht, lassen Sie es mit Import-Module MSOnline laden. Im Fenster authentifizieren Sie sich mit einem Administrator-Benutzer an Office 365.  Mit dem CMDlet get-command *msol* lassen Sie sich die einzelnen CMDlets anzeigen.

Visual Studio Code mit der PowerShell nutzen und Exchange Online verwalten

Visual Studio Code (https://code.visualstudio.com) (VSCode) steht als Open Source kostenlos zur Verfügung. Mit Windows, Linux und macOS  werden die wichtigsten Plattformen unterstützt. Der Quelltext-Editor dient vor allem für die Entwicklung von Webanwendungen, kann aber auch für herkömmliche Anwendungen verwendet werden, wie zum Beispiel der Verwaltung. Microsoft stellt Visual Studio Code (VSCode) (https://code.visualstudio.com/download) kostenlos als Opensource zur Verfügung. VSCode kann auch als grafische Oberfläche/Entwicklungsumgebung für die PowerShell genutzt werden.

In Kombination sind VSCode und PowerShell Core ein mächtiges Verwaltungswerkzeug, über verschiedene Betriebssysteme hinweg, vor allem auch, wenn zusätzlich noch mit Cloudlösungen wie Exchange Online gearbeitet wird. Auch Skripte lassen sich schreiben, und mit anderen Programmiersprachen kombinieren.

Ansible unter Windows konfigurieren

Nachdem Ansible installiert wurde, müssen Sie sich zur Verwaltung mit Benutzername und Kennwort anmelden. Ist das nicht gewünscht, können Sie sich über „ssh-keygen“  einen SSH-Schlüssel für WSL und die Ansbile-Verwaltung erstellen. 

Ansible iist generell im WSL nach der Installation einsatzbereit, verfügt aber noch über keine Config-Dateien. Diese lassen sich im WSL aber herunterladen und in Ansible integrieren.

Die Integration kann über die PowerShell erfolgen, oder die Befehlszeile.  Ansible und Linux werden über die Linux-Bash verwaltet. Diese wird über „bash“ gestartet. 

Die Linux-Dateien von Debian und Ansible befinden sich im Verzeichnis 

C:\Users\<Benutzername>\AppData\Local\Packages\TheDebianProject.DebianGNULinux_<Versionsnummer>\LocalState\rootfs

In dieses Verzeichnis muss gewechselt werden, bevor die Konfigurationsdateien heruntergeladen werden:

wget https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg -O „/etc/ansible/ansible.cfg“

In der Linux-Bash steht Ansible zur Verfügung. Die Konfiguration kann mit „ansible“ vorgenommen und überprüft werden.  Mit der Umgebung lassen sich auch Ansible-Aufgaben vornehmen.

Ansible-Playbooks werden mit „ansible-playbook“ verwaltet.  Das funktioniert auch bei der Installation unter Windows. 

 

Automatisierung von Rechenzentren

Um Ansible auf einem Windows-Rechner zu installieren, wird Windows 10 oder Windows Server 2019 benötigt. In Windows 10 wird dazu die PowerShell mit Administrator-Rechten gestartet. Das ist bei Windows Server 2019 nicht notwendig. Die Installation des Windows-Subsystem für Linux wird mit folgendem Befehl vorgenommen:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Nach der Installation muss der Rechner neu gestartet werden. Durch die Installation von WSL befindet sich noch kein Linux-System in Windows, sondern es wurde lediglich die Funktion installiert, dass ein solches Linux-System integriert werden kann.

Beim Einsatz von Windows 10 sind die verschiedenen Linux-System im Windows-Store zu finden. Dazu muss lediglich nach „linux“ gesucht werden. Für die Installation von Ansible kann Debian sinnvoll sein. Sobald Debian installiert und gestartet ist, kann die Ansible-Installation mit folgenden Befehlen durchgeführt werden:

apt-get update && sudo apt-get -y upgrade
apt-get -y install python-pip python-dev libffi-dev libssl-dev
pip install ansible

Oft wird noch „Sudo“ für die Installation benötigt. Danach steht Ansible zur Verfügung und kann für Test- und Entwicklungssysteme genutzt werden. 

Verbindungsaufbau zu Exchange Online mit der PowerShell

Im ersten Schritt sollten Sie die Anmeldedaten eines Administrators, der das Recht hat eine Verbindung zu Exchange Online aufzubauen, in einer Variablen speichern:

„$user = Get-Credential“

Die Speicherung in der Variablen hat den Vorteil, dass Sie so schnell Authentifizierungen durchführen können, da Sie an der entsprechenden Stelle nur die Variable einfügen müssen. Danach bauen Sie eine Sitzung zu Exchange Online auf. Die Sitzung speichern Sie in einer Variablen, da Sie dadurch die Möglichkeit haben die Sitzung ein einem geöffneten PowerShell-Fenster zu importieren:

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $user -Authentication Basic -AllowRedirection

Erscheint keine Fehlermeldung, können Sie die gespeicherte Sitzung in der PowerShell oder PowerShell Core importieren und mit Exchange Online arbeiten. Dazu verwenden Sie den Befehl:

Import-PSSession $session