2017-08-28 5 views
0

私はDjangoアプリケーションを展開するためにAnsibleを使用しています。象徴的な方法でAnsibleでDjangoスーパーユーザーを作成するには?

私はスーパーユーザを作成するための私のAnsible脚本のこのステップがあります。

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

をしかし、私は二度目の私の脚本を実行したときに指定したユーザ名を持つスーパーユーザがすでに存在するためには、データベースの制約エラーで失敗します。私は、ユーザーを一度しか作成できないようにします。

このステップを冪等化する方法を教えてください。

答えて

1

これはテストされていないですが、それは動作するはずです:

- 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 
関連する問題