Skip to content

Ansible Playbooks auf Servern mit SSH Key Authentifizierung verwenden

Manch einer automatisiert seine IT Umgebung via Ansible. Das Orchestrierungstool arbeitet über SSH und benötigt keine Agenten auf den Zielsystemen.

Ansible

 

Da gut konfigurierte Systeme neben einem Passwort durch einen SSH Key geschützt sind, muss beim Ausrollen eines Playbooks über die Kommandozeile theoretisch für jedes System ein Key geladen und ein Passwort eingegeben werden.

Dies lässt sich mit einem kleinen Trick umgehen, bzw. optimieren. Ich setze hier voraus, dass Geräte bereits für SSH Key Auth eingerichtet worden sind.

Ansible Playbooks mit SSH Keys nutzen

Soll ein Playbook ausgerollt werden, muss im Vorfeld der nötige Key eingelesen werden.

eval $(ssh-agent)

Enter passphrase for /home/itrig/.ssh/id_rsa: ******************

                Identity added: /home/itrig/.ssh/id_rsa

Nun kann das gewünschte Playbook ausgerollt werden.

ansible-playbook -l hostliste playbook.yml --ask-become-pass

Ein sudo Passwort wird weiterhin abgefragt, die Abfrage der Passphrase für jede Verbindung fällt nun jedoch weg. 

Nun bleibt noch die Frage, was ist eval?

eval: eval [arg ...]

    Execute arguments as a shell command.

    Combine ARGs into a single string, use the result as input to the shell,

    and execute the resulting commands.

    Exit Status:

    Returns exit status of command or success if command is null.

eval [arg ...]

    The  args  are read and concatenated together into a single com-

    mand.  This command is then read and executed by the shell,  and

    its  exit status is returned as the value of eval.  If there are

    no args, or only null arguments, eval returns 0.

 

Fertige Playbooks oder Beispiele lassen sich in der Ansible Galaxy finden.

Beispielsweise für eine Paketinstallation auf Linuxsystemen:

Ansible Playbook zur Installation der Open VMware Tools

- name: install open-vm-tools
  hosts: vmwareclients
  gather_facts: True
  become: true
  become_user: root
  tasks:
- name: debian install open-vm-tools
  apt: name=open-vm-tools state=present
  when: ansible_os_family == "Debian" and ansible_virtualization_type == "VMware"

- name: centos install open-vm-tools
  yum: name=open-vm-tools state=present
  when: ansible_os_family == "RedHat" or ansible_distribution == 'CentOS' and ansible_virtualization_type == "VMware"

 

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Formular-Optionen