ansible: make domotica create user task idempotent
authorKristof Provost <kp@FreeBSD.org>
Tue, 11 Feb 2025 21:02:26 +0000 (22:02 +0100)
committerKristof Provost <kp@FreeBSD.org>
Tue, 11 Feb 2025 21:02:26 +0000 (22:02 +0100)
Only create the user if it doesn't already exist. We can now re-execute the
playbook.

ansible/roles/domotica/tasks/domotica.yaml

index cea5013..e905814 100644 (file)
     - LD_LIBRARY_PATH: /home/kp/libs7comm/src/lib
     - DJANGO_SETTINGS_MODULE: domotica.settings
 - name: create user
-  shell: "cd /home/kp/domotica ; python manage.py shell -c 'from django.contrib.auth.models import User;user = User.objects.create_user(\"natalie\", \"natalie@sigsegv.be\", \"nienkeistwee\");user.save()'"
+  shell: |
+    cd /home/kp/domotica ; python manage.py shell -c '
+    import sys
+    from django.contrib.auth.models import User
+    if User.objects.get(username="natalie"):
+      sys.exit(0)
+    user = User.objects.create_user("natalie", "natalie@sigsegv.be", "nienkeistwee")
+    user.save()
+    '
   environment:
     - PYTHONPATH: /home/kp/libs7comm-python/
     - LD_LIBRARY_PATH: /home/kp/libs7comm/src/lib