Ansible Playbook: Linux User mit SSH Public Key und Sudo Rechten einrichten.
Das folgende Playbook erlaubt es schnell einen neuen Nutzer unter Linux einzurichten, den öffentlichen Schlüssel an die richtige Stelle zu kopieren und die gewünschten Sudo Rechte zu vergeben. Die Idee hierzu kam mir durch diesen Beitrag
Ausgangspunkt ist dabei ein “neues” Linux System auf das noch mit dem Root User und Kennwort zugegriffen werden kann. Zusätzlich ist der öffentliche Schlüssel über http erreichbar. Ist dieser Anwender eingerichtet sollte der Rootzugriff per Kennwort am besten ausgeschaltet werden
Zuerst die notwendige Software installieren
sudo apt-get install sshpass
Dann das Playbook
vi install-deployment-user.yml
---
- hosts: '{{ target }}'
remote_user: root
vars:
username: newuser
tasks:
- name: add user and create ssh key
user: name={{username}}
- name: download pubkey and placed as authorized_keys
get_url: url="yourpublickeyurl" dest=/tmp/temp.authorized_keys
delegate_to: 127.0.0.1
- name: Create authorized_keys from the file that just downloaded
authorized_key: user={{username}} key="{{ lookup('file', '/tmp/temp.authorized_keys') }}"
- name: Create a sudoer file
template:
src=install-deployment-user-sudoers.j2
dest=/etc/sudoers.d/{{username}}
und das SUDOER Template erstellen (die Berechtigungen natürlich wunschgemäß anpassen)
vi install-deployment-user-sudoers.j2
ALL=(ALL:ALL) NOPASSWD: ALL
Aufgerufen wird das ganze dann so
ansible-playbook -k --extra-vars "target=die-neue-ip-address" install-deployment-user.yml