From 78aee8bb66b85667a53cda064b46d170dd9ca491 Mon Sep 17 00:00:00 2001
From: Mathieu Leguay <mathieu.leguay@teamdlab.com>
Date: Fri, 22 May 2020 11:46:13 +0200
Subject: [PATCH] [DLAB-4126] Fix authentication detection for mongo

---
 .../roles/mongo_init/tasks/check_auth.yml     | 47 ++++++++++---------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/deployment/roles/mongo_init/tasks/check_auth.yml b/deployment/roles/mongo_init/tasks/check_auth.yml
index 1591c358..56eb97b8 100644
--- a/deployment/roles/mongo_init/tasks/check_auth.yml
+++ b/deployment/roles/mongo_init/tasks/check_auth.yml
@@ -1,34 +1,39 @@
 ---
-
-- name: Check if authent is enabled
-  command: "mongo --host mongodb://{{ mongod_uri }}/admin?replicaSet={{ mongod_replicaset_name }} -u {{ mongodb.admin.user }} -p {{ mongodb.admin.password }} --quiet --eval 'db.help()'"
-  register: mongo_authent_enabled
-  failed_when: false
-  no_log: "{{ hide_passwords_during_deploy }}"
-  when: mongodb.docker is not defined or not mongodb.docker.enable
-
-- name: Load script in database (docker)
-  shell: "docker exec --tty {{ mongodb.docker.image_name }} /bin/bash -c \"mongo --host mongodb://{{ mongod_uri }}/admin?replicaSet={{ mongod_replicaset_name }} -u {{ mongodb.admin.user }} -p {{ mongodb.admin.password }} --quiet --eval 'db.help()'\""
-  no_log: "{{ hide_passwords_during_deploy }}"
-  failed_when: false
-  register: mongo_authent_enabled
-  when: mongodb.docker is defined and mongodb.docker.enable
-
 # Set mongo_no_auth facts
 - name: Set default mongo facts
   set_fact:
     mongo_credentials: ""
     mongo_no_auth: false
 
-- name: Set mongo_no_auth fact to true
-  set_fact:
-    mongo_no_auth: true
-  when: "mongo_authent_enabled.rc != 0"
+- block:
+  - name: Check if authent is enabled
+    command: "mongo --host mongodb://{{ mongod_uri }}/admin?replicaSet={{ mongod_replicaset_name }} -u {{ mongodb.admin.user }} -p {{ mongodb.admin.password }} --quiet --eval 'db.help()'"
+    register: mongo_authent_enabled
+    failed_when: false
+    no_log: "{{ hide_passwords_during_deploy }}"
+  
+  - name: Set mongo_no_auth fact to true
+    set_fact:
+      mongo_no_auth: true
+    when: "mongo_authent_enabled.rc != 0"
+  when: mongodb.docker is not defined or not mongodb.docker.enable
+
+- block:
+  - name: Load script in database (docker)
+    shell: "docker exec --tty {{ mongodb.docker.image_name }} /bin/bash -c \"mongo --host mongodb://{{ mongod_uri }}/admin?replicaSet={{ mongod_replicaset_name }} -u {{ mongodb.admin.user }} -p {{ mongodb.admin.password }} --quiet --eval 'db.help()'\""
+    no_log: "{{ hide_passwords_during_deploy }}"
+    failed_when: false
+    register: mongo_authent_enabled
+
+  - name: Set mongo_no_auth fact to true
+    set_fact:
+      mongo_no_auth: true
+    when: "mongo_authent_enabled.rc != 0"
+  when: mongodb.docker is defined and mongodb.docker.enable
 
 # When authentication is required, we set mongodb admin credentials
 - name: Set mongodb authentication credentials
   set_fact:
     mongo_credentials: " -u {{ mongodb.admin.user }} -p {{ mongodb.admin.password }} --authenticationDatabase {{ mongodb.admin.db }} "
-  when: "mongo_authent_enabled.rc == 0"
+  when: not mongo_no_auth
   no_log: "{{ hide_passwords_during_deploy }}"
-
-- 
GitLab