main.yml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. ---
  2. # tasks file for nextcloud
  3. - name: Main... Set Nextcloud db_port to ProxySQL port instead of default MySQL
  4. set_fact:
  5. db_port: "6033"
  6. when: "'db_lbal_servers' in groups.keys()"
  7. - name: Main... Ovewrite Nextcloud db_host if no SQL_loadBalancer
  8. set_fact:
  9. db_host: "{{ groups['db_servers'][0] }}"
  10. when: "('db_lbal_servers' not in groups.keys()) and ('db_servers' in groups.keys())"
  11. - name: Main... Ovewrite Nextcloud db_host if no db_servers
  12. set_fact:
  13. db_host: localhost
  14. when: "'db_servers' not in groups.keys()"
  15. - name: Main... Set variables based on web_servers group
  16. set_fact:
  17. nb_web_servers: "{{ groups['web_servers'] | length }}"
  18. main_web_server: "{{ groups['web_servers'][0] }}"
  19. when: "'web_servers' in groups.keys()"
  20. - name: Main... Set variables if no web_servers group
  21. set_fact:
  22. nb_web_servers: 1
  23. main_web_server: "{{ hostvars[ansible_fqdn]['ansible_host'] }}"
  24. when: "'web_servers' not in groups.keys()"
  25. - name: Main... Show Selinux variable
  26. debug: var=ansible_selinux
  27. - include_tasks: "prep_os/{{ ansible_distribution }}.yml"
  28. - name: Main... Create shared directories (web & data)
  29. file:
  30. path: "{{ item }}"
  31. state: directory
  32. owner: "{{ nextcloud_websrv_user }}"
  33. group: "{{ nextcloud_websrv_group }}"
  34. mode: 0750
  35. with_items:
  36. - "{{ nc_data_dir }}"
  37. - "{{ http_webroot }}"
  38. ignore_errors: yes
  39. - name: Main... Mount shared directories
  40. include_tasks: "nc_gluster.yml"
  41. when: "(nb_web_servers | int) > 1 and 'gluster_servers' in groups.keys()"
  42. - name: Main... Check if Nextcloud is already in the web repo
  43. stat:
  44. path: "{{ http_webroot }}/nextcloud/index.php"
  45. register: nc_nextcloud_downloaded
  46. delegate_to: "{{ main_web_server }}"
  47. run_once: true
  48. - name: Main... Download and Install Nextcloud
  49. include_tasks: "nc_download.yml"
  50. args:
  51. apply:
  52. delegate_to: "{{ main_web_server }}"
  53. run_once: true
  54. when: (nc_nextcloud_downloaded.stat.isreg is undefined) or (not nc_nextcloud_downloaded.stat.isreg)
  55. - name: Main... Start {{ http_service_name }} service
  56. service:
  57. name: "{{ http_service_name }}"
  58. state: started
  59. - name: Main... Check Nextcloud status
  60. become: yes
  61. become_user: "{{ nextcloud_websrv_user }}"
  62. shell: "{{ php_bin }} occ status --output=json"
  63. args:
  64. chdir: "{{ http_webroot }}/nextcloud"
  65. register: jsoncontent
  66. delegate_to: "{{ main_web_server }}"
  67. run_once: true
  68. - name: Main... Set Nextcloud variables status
  69. set_fact:
  70. nc_status: "{{ jsoncontent.stdout | from_json }}"
  71. delegate_to: "{{ main_web_server }}"
  72. run_once: true
  73. - name: Main... Check the nc_status content
  74. debug: var=nc_status
  75. delegate_to: "{{ main_web_server }}"
  76. run_once: true
  77. - name: Main... Loading Ceph object primary storage
  78. include_tasks: "nc_ceph.yml"
  79. when: "'ceph_servers' in groups.keys() and objectstore_s3_install"
  80. - name: Main... Install and deploy Nextcloud if needed
  81. include_tasks: nc_install.yml
  82. args:
  83. apply:
  84. delegate_to: "{{ main_web_server }}"
  85. run_once: true
  86. when: nc_status.installed|bool == false
  87. - name: Main... Setup nextcloud
  88. include_tasks: nc_setup.yml
  89. args:
  90. apply:
  91. delegate_to: "{{ main_web_server }}"
  92. run_once: true
  93. #when: nc_status.installed|bool == false
  94. - name: Main... Set Trusted Local Domain lists
  95. set_fact:
  96. list_zero:
  97. - "{{ nc_global_name | default() }}"
  98. list_one: "{{ groups['lbal_servers'] | default([]) }}"
  99. list_two: "{{ groups['web_servers'] | default([]) }}"
  100. - name: Main... Merge the Trusted lists
  101. set_fact:
  102. trusted_dom: "{{ list_zero + list_one + list_two }}"
  103. #- name: Main... Set a local redirect name
  104. # set_fact:
  105. # redirect_name: "{{ main_web_server }}"
  106. #
  107. #- name: Main... Set a global redirect name if loadbalancing
  108. # set_fact:
  109. # redirect_name: "{{ nc_global_name | default(nc.test) }}"
  110. # when: groups['lbal_servers'] is defined and (groups['lbal_servers']|length>0)
  111. - name: Main... Set Trusted Local Domain
  112. become_user: "{{ nextcloud_websrv_user }}"
  113. become: true
  114. shell: "{{ php_bin }} occ config:system:set trusted_domains {{ occ_idx }} --value={{ item }}"
  115. args:
  116. chdir: "{{ http_webroot }}/nextcloud"
  117. loop: "{{ trusted_dom }}"
  118. loop_control:
  119. index_var: occ_idx
  120. pause: 2
  121. delegate_to: "{{ main_web_server }}"
  122. run_once: true
  123. - name: Main... Set Nextcloud overwrite url and host
  124. become_user: "{{ nextcloud_websrv_user }}"
  125. become: true
  126. shell: "{{ php_bin }} occ config:system:set {{ item.name }} --value={{ item.value }}"
  127. args:
  128. chdir: "{{ http_webroot }}/nextcloud"
  129. with_items:
  130. #- { name: 'overwritehost', value: '{{ redirect_name }}' }
  131. #- { name: 'overwrite.cli.url', value: 'https://{{ redirect_name }}' }
  132. - { name: 'overwritehost', value: '{{ nc_global_name }}' }
  133. - { name: 'overwrite.cli.url', value: 'https://{{ nc_global_name }}' }
  134. delegate_to: "{{ main_web_server }}"
  135. run_once: true
  136. - name: Setup... Configure Cron
  137. cron:
  138. name: "Nextcloud Cronjob"
  139. minute: "*/{{ nc_cron_period }}"
  140. user: "{{ nextcloud_websrv_user }}"
  141. job: "{{ php_bin }} -f {{ http_webroot }}/nextcloud/cron.php"
  142. cron_file: "nextcloud"
  143. when: (nc_background_cron | bool)
  144. delegate_to: "{{ main_web_server }}"
  145. run_once: true
  146. - name: Main... Check Selinux
  147. include_tasks: "prep_os/selinux.yml"
  148. when: ansible_selinux.status == "enabled"
  149. - name: Main... Restart {{ http_service_name }} service
  150. service:
  151. name: "{{ http_service_name }}"
  152. state: restarted
  153. - name: Main... First run Cron
  154. become_user: "{{ nextcloud_websrv_user }}"
  155. become: true
  156. shell: "{{ php_bin }} -f cron.php"
  157. args:
  158. chdir: "{{ http_webroot }}/nextcloud"
  159. delegate_to: "{{ main_web_server }}"
  160. run_once: true