Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:ansible_tower_password_handling

Ansible Tower - Wie verhindere ich Klarschrift Passwörter in PlayBooks

Aufgabe:

In den Playbook sollten keine Passwörter vorkommen. Wie kann das Playbook nun auf die im Anisble Tower hinterlegten Credential zugreifen?

Zu Tower siehe auch ⇒ Ansible Tower / AWX unter Cent OS Linux 8

Ziel ist es einen Management User auf jeden Server mit den selben Passwort anzulegen.

Im ersten Schritt ist im Template das User Passwort unter „Extra Variables“ hinterlegt:

---
management_user_pwd: Secret1

Das ist aber nicht sehr schön, da es nun in Klarschrift vorliegt und nicht dynamisch verändert werden kann!

Die Variable „management_user_pwd“ wird dann später im Playbook referenziert, ohne Tower wäre das Password z.B. in der „all group_vars“ verschlüsselt (mit ansible-vault) hinterlegt. So bleibt das Skript auch ohne Tower lauffähig.

Ablauf:

  • Custom Credential Objekt definieren
  • Credential von diesem Typ anlegen
  • Credential im Playbook Template aufnehemen
  • Über {{ mypassword }} referenzieren

Custom Credential Objekt verwenden

Custom Credential anlegen

Über „Administration/Credential Types“ in Tower zuerst einen eigenen Typ von Credential Objekt anlegen.

Input Configuratoin (Definiert wie das Passwort gespeichert werden soll):

fields:
  - id: ansiblesvcuser
    type: string
    label: Anisble Username
  - id: ansiblesvcpassword
    type: string
    label: Ansible Password
    secret: true
required:
  - ansiblesvcuser
  - ansiblesvcpassword

Injector Configuration (Definiert über welche Variablen von „außen“ auf das Credential zugriffen werden kann):

extra_vars:
  ansiblesvcpassword: '{{ ansiblesvcpassword }}'
  ansiblesvcuser: '{{ ansiblesvcuser  }}'

Der ganze Trick dahinter ist das richtige Referenzieren der Variablen, in der Input Konfiguration wird definiert wie das gespeichert werden soll, in der Injector Configuration wird die Ausgabe der Werte nach außen definiert.

Wird dann das Credential Objekt im Template hinterlegt, kann auf die im Injector definierten Variablen zugegriffen werden.

Password und User Name hinterlegen

Neues Credential über „Credentials“ mit diesem Typ anlegen.

Credential im Playbook einbinden

Im Playbook nun diese Credential hinterlegen unter „Credentials“.

Unter „Extera Variables“ kann nun das Password einer Variablen zugewiesen werden (Extra nicht im Playbook, damit dieses auch ohne Tower funktioniert):

---
management_user_pwd: "{{ ansiblesvcpassword }}"

Beim Aufruf wird nun das Credential Objekt mit dem Playbook über das Template verknüpft und in der Runtime Umgebung des Templates kann über den vorab definierten Name der Credential Variable auf diese Zugriff werden.


Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
linux/ansible_tower_password_handling.txt · Zuletzt geändert: 2021/11/12 15:54 von gpipperr