2017-08-28 1 views
0

Ich verwende Ansible, um meine Django-App bereitzustellen.Wie erstelle ich Django Superuser in Ansible in idempotenter Weise?

Ich habe diesen Schritt in meinem ansible Textbuch für einen Super-User zu erstellen:

- name: django create superuser 
    django_manage: 
     virtualenv: /.../app 
     app_path: /.../app 
     command: "createsuperuser --noinput --username=admin [email protected]{{ inventory_hostname }}" 

Aber wenn ich mein Textbuch nicht ein zweites Mal ausführen es mit Datenbank-Einschränkungsfehler, da ein Super-User mit bestimmten Benutzername existieren bereits. Ich möchte, dass Ansible den Benutzer nur einmal erstellt.

Wie mache ich diesen Schritt idempotent?

Antwort

1

Dies ist nicht getestet, aber es sollte funktionieren:

- name: Check if django superuser exists 
    django_manage: 
    virtualenv: /.../app 
    app_path: /.../app 
    command: shell -c 'import sys; from django.contrib.auth.models import User; sys.exit(0 if User.objects.filter(username="admiin").count() > 0 else 1)' 
    register: checksuperuser 
    check_mode: True 
    ignore_errors: True 
    changed_when: False  

- name: django create superuser 
    django_manage: 
    virtualenv: /.../app 
    app_path: /.../app 
    command: "createsuperuser --noinput --username=admin [email protected]{{ inventory_hostname }}" 
    when: checksuperuser.rc != 0 
Verwandte Themen