AnsibleCheat Sheet

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:

Installation

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

Command Line Tools

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

ansible Command

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

ansible-config Command

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

ansible-doc Command

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

ansible-playbook Command

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

ansible-inventory Command

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

ansible-vault Command

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

ansible-galaxy Command

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

ansible-builder Command

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

ansible-navigator Command

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)

Installation

Gehört nicht zur Ansible "Standardinstallation" und muss separat nachinstalliert werden:

pip install ansible-navigator

Subkommandos

# 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

Ansible und Windows

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

Überblick über Windows Module

Windows Module sind in Powershell statt Python geschrieben

https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html#windows-modules

Allgemeiner Überblick zu Ansible für Windows targets

https://docs.ansible.com/ansible/latest/user_guide/windows_usage.html

Initiales Setup

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

Sprechen wir gemeinsam über Ihre Ziele und Wünsche

Sie haben Fragen?

Gern stehen wir Ihnen mit Know-how, konkreten Unterstützungsleistungen und zugehörigen Lizenz- und Supportangeboten zur Verfügung.

Background Image Mobile Version