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