Ansible - einfaches Playbook-Beispiel: sudoers anpassen
Im Eingangskapitel Grundlagen haben wir uns mit der Installation bereits befasst. Auch haben wir uns schon in den beiden Kapiteln Playbooks und YAML - was ist das? eingehend mit den Hintergrundinformationen beschäftigt, so dass wir uns nun mit unsere Playbooks beschäftigen können.
Beispiel 2: sudoers anpassen
Bei unserem zweiten Beispiel wollen wir lediglich dafür sorgen, dass die Nutzer der Gruppe wheel
beim Ausführen von Befehlen, die root-Berechtigungen erfordern, ihr Passwort eingeben müssen. Hierzu werden wir im Verzeichnis /etc/sudoers.d/
eine Datei mit dem Namen 10_passwd_sudo_wheel
ablegen, die nachfolgenden Inhalt aufweist.
# Allows people in group wheel to run all command
%wheel ALL=(ALL) ALL
Script anlegen
Hier legen wir nun unser Ansible-Script ab.
$ vim 02_passwd_sudo_wheel.yml
- 02_passwd_sudo_wheel.yml
--- - hosts: centos8 become: true vars: sudoers: ansible tasks: - name: All users from groub 'wheel' are allowed sudo users copy: content: "# Allows people in group wheel to run all command\n%wheel ALL=(ALL) ALL\n" dest: /etc/sudoers.d/10_passwd_sudo_wheel owner: root group: root mode: "0440" validate: visudo -cf %s ...
Script Beschreibung
Die einzelnen Zeilen/Blöcke haben dabei folgende Funktionen und Aufgaben. Zeile:
- Zeile 1 - 5: Der bereits bekannte Block aus dem ersten Beispiel, der Aussagen trifft, wo das Script laufen soll, unter welchen User-Rechten das passieren soll etc. pp..
- Zeile 6:
- Zeile 7:
tasks
Schlüsselwort mit den nachfolgenden Aufgaben, die mit dem Playbook dann abgearbeitet werden sollen. - Zeile 8:
name
: Beschreibender Text (All users from groub 'wheel' are allowed sudo users), der später beim Aufruf vonansible-playbooks
ausgegeben werden soll. - Zeile 9 - 15:
copy:
Ansible Module copy welches zum Kopieren, verändern und auch Löschen von Dateien herangezogen werden kann. - Zeile 16:
...
Endekennzeichen der YML-Datei
Script ausführen
Nun wollen wir unser ersten Playbook ausführen, um auf dem Zielhost eine Datei mit dem gewünschten Inhalt ablegen; hierzu rufen wir unser Script wie folgt auf:
$ ansible-playbook -v 02_passwd_sudo_wheel.yml
Using /etc/ansible/ansible.cfg as config file BECOME password: PLAY [centos8] **************************************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************************************** ok: [www8.dmz.nausch.org]
TASK [All users from groub 'wheel' are allowed sudo users] ***************************************************************************** changed: [www8.dmz.nausch.org] => {"changed": true, "checksum": "b51f017f799aca0d0aef9fa29b7da87006ea5c29", "dest": "/etc/sudoers.d/10_passwd_sudo_wheel", "gid": 0, "group": "root", "md5sum": "a7c4cc84eb0dbbf844d2a8d4fbe64164", "mode": "0440", "owner": "root", "secontext": "system_u:object_r:etc_t:s0", "size": 80, "src": "/home/ansible/.ansible/tmp/ansible-tmp-1578174240.9800038-82649856412743/source", "state": "file", "uid": 0}
PLAY RECAP *************************************************************************************************************************************** www8.dmz.nausch.org : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ergebnis
Auf dem Zielhost findet sich nun unsere gewünschte Datei mit dem zugehörigen Inhalt.
# cat /etc/sudoers.d/10_passwd_sudo_wheel
- /etc/sudoers.d/10_passwd_sudo_wheel
# Allows people in group wheel to run all command %wheel ALL=(ALL) ALL