From baa4d5583b64e0cb254eeb1cb8984505835f3686 Mon Sep 17 00:00:00 2001 From: Mathieu Leguay <mathieu.leguay@teamdlab.com> Date: Mon, 25 May 2020 18:10:45 +0200 Subject: [PATCH] [DEVOPS] Improve mongo deployment --- .../roles/mongo_init/tasks/execute_script.yml | 41 ------------------- deployment/roles/mongo_init/tasks/main.yml | 29 ++++++++++++- .../roles/mongo_init/tasks/prepare_script.yml | 29 +++++++++++++ .../mongo_init/templates/main_script.js.j2 | 7 ++++ 4 files changed, 63 insertions(+), 43 deletions(-) delete mode 100644 deployment/roles/mongo_init/tasks/execute_script.yml create mode 100644 deployment/roles/mongo_init/tasks/prepare_script.yml create mode 100644 deployment/roles/mongo_init/templates/main_script.js.j2 diff --git a/deployment/roles/mongo_init/tasks/execute_script.yml b/deployment/roles/mongo_init/tasks/execute_script.yml deleted file mode 100644 index e21930a4..00000000 --- a/deployment/roles/mongo_init/tasks/execute_script.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- - -- fail: msg="Variable '{{ mongo_file }}' is not defined" - when: mongo_file is undefined - -- name: - debug: - msg: ">>>> Execution of the file {{ mongo_file.finalname }}<<<<" - -- name: Check if the script exists - stat: - path: "{{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" - register: stat_result - -- block: - - fail: msg="The file '{{ mongo_file.finalname }}' is not exist" - when: not stat_result.stat.exists - - - name: Get script content. - shell: "cat {{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" - register: script_content - - - name: Compute versionned script files - template: - src: "versioned_script.js.j2" - dest: "{{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" - owner: "{{ vitamui_defaults.users.vitamuidb }}" - group: "{{ vitamui_defaults.users.group }}" - mode: 0755 - - when: mongodb.versioning is defined and mongodb.versioning.enable - -- name: Load script in database - shell: "mongo \"mongodb://{{ mongod_uri }}/admin\" {{ mongo_credentials }} {{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" - no_log: "{{ hide_passwords_during_deploy }}" - when: mongodb.docker is not defined or not mongodb.docker.enable - -- name: Load script in database (docker) - command: "docker exec --tty {{ mongodb.docker.image_name }} /bin/bash -c \"mongo \\\"mongodb://{{ mongod_uri }}/admin\\\" {{ mongo_credentials }} {{ mongodb.docker.internal_dir}}/app/mongod/{{ mongo_file.finalname }}\"" - no_log: "{{ hide_passwords_during_deploy }}" - when: mongodb.docker is defined and mongodb.docker.enable diff --git a/deployment/roles/mongo_init/tasks/main.yml b/deployment/roles/mongo_init/tasks/main.yml index fb02030c..ab8ea65a 100644 --- a/deployment/roles/mongo_init/tasks/main.yml +++ b/deployment/roles/mongo_init/tasks/main.yml @@ -78,8 +78,33 @@ mode: 0755 loop: "{{ mongod_eligible_files | unique }}" -- name: "Execute file" - include_tasks: "execute_script.yml" +- name: "Prepare file" + include_tasks: "prepare_script.yml" + when: mongodb.versioning is defined and mongodb.versioning.enable loop: "{{ mongod_eligible_files | unique }}" loop_control: loop_var: mongo_file + +- name: Compute main script file + template: + src: "main_script.js.j2" + dest: "{{ mongod_output_dir_entry_point }}/main_script.js" + owner: "{{ vitamui_defaults.users.vitamuidb }}" + group: "{{ vitamui_defaults.users.group }}" + mode: 0755 + +- name: Load script in database + shell: "mongo \"mongodb://{{ mongod_uri }}/admin\" {{ mongo_credentials }} {{ mongod_output_dir_entry_point }}/main_script.js" + no_log: "{{ hide_passwords_during_deploy }}" + when: mongodb.docker is not defined or not mongodb.docker.enable + +- name: Load script in database (docker) + command: "docker exec --tty {{ mongodb.docker.image_name }} /bin/bash -c \"mongo \\\"mongodb://{{ mongod_uri }}/admin\\\" {{ mongo_credentials }} {{ mongodb.docker.internal_dir}}/app/mongod/main_script.js \"" + no_log: "{{ hide_passwords_during_deploy }}" + when: mongodb.docker is defined and mongodb.docker.enable + +# - name: "Execute file" +# include_tasks: "execute_script.yml" +# loop: "{{ mongod_eligible_files | unique }}" +# loop_control: +# loop_var: mongo_file \ No newline at end of file diff --git a/deployment/roles/mongo_init/tasks/prepare_script.yml b/deployment/roles/mongo_init/tasks/prepare_script.yml new file mode 100644 index 00000000..c3787047 --- /dev/null +++ b/deployment/roles/mongo_init/tasks/prepare_script.yml @@ -0,0 +1,29 @@ +--- + +- fail: msg="Variable '{{ mongo_file }}' is not defined" + when: mongo_file is undefined + +- name: + debug: + msg: ">>>> Execution of the file {{ mongo_file.finalname }}<<<<" + +- name: Check if the script exists + stat: + path: "{{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" + register: stat_result + +- fail: msg="The file '{{ mongo_file.finalname }}' is not exist" + when: not stat_result.stat.exists + +- name: Get script content. + shell: "cat {{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" + register: script_content + +- name: Compute versionned script files + template: + src: "versioned_script.js.j2" + dest: "{{ mongod_output_dir_entry_point }}/{{ mongo_file.finalname }}" + owner: "{{ vitamui_defaults.users.vitamuidb }}" + group: "{{ vitamui_defaults.users.group }}" + mode: 0755 + diff --git a/deployment/roles/mongo_init/templates/main_script.js.j2 b/deployment/roles/mongo_init/templates/main_script.js.j2 new file mode 100644 index 00000000..11983d16 --- /dev/null +++ b/deployment/roles/mongo_init/templates/main_script.js.j2 @@ -0,0 +1,7 @@ +{% for script in mongod_eligible_files %} + {% if mongodb.docker is defined and mongodb.docker.enable %} + load('{{ mongodb.docker.internal_dir}}/app/mongod/{{ script.finalname }}'); + {% else %} + load('{{mongod_output_dir_entry_point}}/{{ script.finalname }}'); + {% endif %} +{% endfor %} \ No newline at end of file -- GitLab