Ansible ist "IT automation made simple". Mit ein wenig YAML, Jinja2 und einer Hand voll Commands können Sie Server, Netzwerkgeräte, Firewalls, Cloud Angebote und vieles mehr automatisieren.
Links:
Ansible funktioniert nach der Push Methode und daher ist kein Agent auf dem Zielsystem nötig. Auf dem Control Node werden verschiedene Linux Derivate unterstützt. Die Installation ist dann in wenigen Sekunden erledigt.
https://docs.ansible.com/ansible/latest/installation_guide/index.html
via Pip (für alle Linux Derivate)
$ python3 -m venv PATH
$ source PATH/bin/activate
$ pip install ansible
Fedora Linux 30+
$ sudo dnf install ansible
CentOS / Alma Linux OS / Rocky Linux 8+
$ sudo dnf install epel-release
$ sudo dnf install ansible
Red Hat Enterprise Linux 8+
$ sudo subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms
$ sudo dnf install ansible
Debian GNU/Linux
$ sudo apt-get update
$ sudo apt-get install ansible
openSUSE Linux
$ sudo zypper install ansible
Ansible bietet diverse Command Line Tools die die Arbeit mit Ansible deutlich erleichtern. Jedes der Werkzeuge bildet eigene Funktionalitäten ab. Alle untenstehenden Befehle unterstützen mindestens die folgenden Parameter.
# Hilfe
$ COMMAND -h
# Version anzeigen
$ COMMAND --version
# Verbose output
$ COMMAND -v
$ COMMAND -vv
$ COMMAND -vvv
$ COMMAND -vvvv
Das ansible Command wird in der Regel für Ad-Hoc Automation genutzt. (Dokumentation)
# Syntax
$ ansible -m MODUL -a MODULARGUMENT PATTERN
# Setup Modul (gather facts) auf localhost ausführen
$ ansible -m setup localhost
Das Kommando ansible-config kann genutzt werden um die effektive Konfiguration von Ansible einzusehen. (Dokumentation)
# Anzeigen der aktuellen Konfigurationsdatei
$ ansible-config view
# Liste der effektiven und veränderten Konfiguration
$ ansible-config dump --only-changed
Mit dem Command ansible-doc kann man auf einen großen Teil der Dokumentation zugreifen ohne die Kommandozeile zu verlassen. (Dokumentation)
# Alle Module plugins anzeigen
$ ansible-doc -l
# Auf Typen filtern (defaults to module)
$ ansible-doc -l -t PLUGINTYPE
# Doku eines Plugins anzeigen
$ ansible-doc PLUGIN
$ ansible-doc ansible.builtin.package
# Playbook Snippet anzeigen für ein Plugin
$ ansible-doc -s Plugin
$ ansible-doc -s ansible.builtin.package
Das ansible-playbook Kommando wird genutzt um Playbooks auszuführen und abzuspielen. (Dokumentation)
# ein Playbook ausführen
$ ansible-playbook playbook.yml
# SSH Passwort abfragen
$ ansible-playbook -k playbook.yml
# SUDO Passwort abfragen
$ ansible-playbook -K playbook.yml
# Inventory angeben
$ ansible-playbook -i /path/to/inventory playbook.yml
Mit dem ansible-inventory Kommando können Sie mit Inventories interagieren und lesen. (Dokumentation)
# Syntax
$ ansible -m MODUL -a MODULARGUMENT PATTERN
# Setup Modul (gather facts) auf localhost ausführen
$ ansible -m setup localhost
Um Ansible Vaults zu managen kommt das ansible-vault Kommando zum Einsatz. Es kann verschlüsseln, entschlüsseln, lesen und editieren.(Dokumentation)
# Create a vault file
$ ansible-vault create /path/to/vault
# Decrypt a vault file
$ ansible-vault decrypt /path/to/vault
# Edit an encrypted vault file
$ ansible-vault edit /path/to/vault
# View content of an encrypted vault file
$ ansible-vault view /path/to/vault
Mit dem Kommando ansible-galaxy managen Sie Rollen und Collections für Ansible. (Dokumentation)
# Init a new role
$ ansible-galaxy role init ROLE_NAME
# Init a new collection COLLECTION_NAME
$ ansible-galaxy collection init ROLE_NAME
# Install a role from galaxy
$ ansible-galaxy role install ROLE_NAME
# Install a collection from
$ ansible-galaxy collection install ROLE_NAME
Mit dem Kommando ansible-builder können Sie execution environments (container) erstellen.
Voraussetzung: Docker/Podman ist auf dem System vorhanden. (Dokumentation)
pip install ansible-builder
# Create a new execution environment
$ ansible-builder build
# Increase verbosity
$ ansible-builder -v <0|1|2|3>
# Create a new context (Containerfile and dependencies)
# for execution environment
# The container file can be found in the 'context' folder in
# the current directory
$ ansible-builder create
Das Kommando ansible-navigator stellt eine Erweiterung/Ergänzung der o.g. "klassischen" Tools dar, die mit Execution Environments umgehen kann. Das Tool stellt außerdem ein textbasiertes User Interface (TUI) zu Verfügung.
Voraussetzung: Docker/Podman ist auf dem System vorhanden. (Dokumentation)
Gehört nicht zur Ansible "Standardinstallation" und muss separat nachinstalliert werden:
pip install ansible-navigator
# Run a playbook inside the configured exeecution environment
$ ansible-navigator run playbook.yml
# Show locally available execution environments
$ ansible-navigator images
# Show available collections inside default execution environment
$ ansible-navigator collections
# Explore the current ansible configuration
ansible-navigator config
# Review documentation for a module or plugin
$ ansible-navigator doc
# Run a command within an execution environment
$ ansible-navigator exec
# Explore an inventory
$ ansible-navigator inventory
# Lint a file or directory for common errors and issues
$ ansible-navigator lint
Im Allgemeinen verhält sich Ansible für Windows Ziele analog zur Anwendung für Linux. Einige Änderungen ergeben sich z.B. bei Pfadangaben und betriebssystem spezifischen Aufgaben. Für diese stehen eigene Module zur Verfügung
Windows Module sind in Powershell statt Python geschrieben
https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html#windows-modules
https://docs.ansible.com/ansible/latest/user_guide/windows_usage.html
Die Kommunikation mit Windows hosts erfolgt üblicherweise via WinRM statt ssh. Dazu muss der Windwos host entsprechend konfiguriert werden. Die Konfiguration ist hier etwas umfangreicher als für ssh basierte Verbindungen unter Linux.
Eine detaillierte Anleitung findet sich unter:
https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html
Für WinRM basierte Verbindungen ist als Inventarvariable der Parameter
ansible_connection: winrm
zu setzen.
Je nach genauem WinRM Setup müssen weitere Details ergänzt werden z.B. zur Authentifzierungsmethode (Basic, Certificates, NTLM, Kerberos, CredSSP) und dem Zielport. Dies kann im Inventory in host_vars oder in ansible.cfg erfolgen.
Eine detaillierte Anleitung zu den jeweiligen Methoden und daraus folgenden Parametern findet sich hier:
https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html
Gern stehen wir Ihnen mit Know-how, konkreten Unterstützungsleistungen und zugehörigen Lizenz- und Supportangeboten zur Verfügung.