Ansible Playbooks auf Servern mit SSH Key Authentifizierung verwenden
Posted by Guenny onManch einer automatisiert seine IT Umgebung via Ansible. Das Orchestrierungstool arbeitet über SSH und benötigt keine Agenten auf den Zielsystemen.
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
Trackback specific URI for this entryThis link is not meant to be clicked. It contains the trackback URI for this entry. You can use this URI to send ping- & trackbacks from your own blog to this entry. To copy the link, right click and select "Copy Shortcut" in Internet Explorer or "Copy Link Location" in Mozilla.
No Trackbacks
Comments
Display comments as Linear | ThreadedNo comments