playbook_v2.yml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. ---
  2. - name: Launch docker for mysql database. Tag=start_mysql
  3. hosts: 127.0.0.1
  4. connection: local
  5. tags: start_mysql
  6. tasks:
  7. - name: Docker mysql up
  8. command: "docker-compose up -d --force-recreate mysql"
  9. - name: Configure mysql database. Tag=configure_mysql
  10. hosts: mysql
  11. connection: docker
  12. gather_facts: no
  13. tags: configure_mysql
  14. tasks:
  15. - name: Wait for mysql be ready
  16. wait_for:
  17. host: 127.0.0.1
  18. port: 3306
  19. state: started
  20. delay: 5
  21. connect_timeout: 15
  22. timeout: 360
  23. - name: Create database fd_session
  24. mysql_db:
  25. name: fd_session
  26. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  27. state: present
  28. - name: Create database freeradius
  29. mysql_db:
  30. name: freeradius
  31. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  32. state: present
  33. - name: Create database grafana
  34. mysql_db:
  35. name: grafana
  36. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  37. state: present
  38. - name: Create database statsd_db
  39. mysql_db:
  40. name: statsd_db
  41. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  42. state: present
  43. - name: Create database base
  44. mysql_db:
  45. name: fd3_base
  46. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  47. state: present
  48. - name: Create database ftth
  49. mysql_db:
  50. name: fd3_ftth
  51. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  52. state: present
  53. - name: Create database mapas
  54. mysql_db:
  55. name: fd3_mapas
  56. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  57. state: present
  58. - name: Create database stats
  59. mysql_db:
  60. name: fd3_stats
  61. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  62. state: present
  63. - name: Create database cablemodem
  64. mysql_db:
  65. name: fd3_cablemodem
  66. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  67. state: present
  68. - name: Create database Radius
  69. mysql_db:
  70. name: fd3_radius
  71. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  72. state: present
  73. - name: Create database dhcp
  74. mysql_db:
  75. name: fd3_dhcp
  76. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  77. state: present
  78. - copy:
  79. src: "{{ playbook_dir }}/freeradius_schema.sql"
  80. dest: /tmp/freeradius_schema.sql
  81. - name: Create freeradius MySQL schema
  82. mysql_db:
  83. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  84. state: import
  85. name: freeradius
  86. target: "/tmp/freeradius_schema.sql"
  87. - name: Create user iksop
  88. mysql_user:
  89. name: 'iksop'
  90. password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  91. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  92. priv: '*.*:ALL'
  93. state: present
  94. - copy:
  95. src: "{{ playbook_dir }}/mysql_scripts.sql"
  96. dest: /tmp/mysql_scripts.sql
  97. - name: Replace password mysql_scripts.sql
  98. shell: "sed -i -- 's/#password#/{{ lookup('env', 'MYSQL_PASSWORD') }}/g' /tmp/mysql_scripts.sql"
  99. - name: Run SQL commands against DB to create table
  100. mysql_db:
  101. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  102. state: import
  103. name: fd_session
  104. target: "/tmp/mysql_scripts.sql"
  105. - name: Launch docker for amqp. Tag=start_amqp
  106. hosts: 127.0.0.1
  107. connection: local
  108. tags: start_base
  109. tasks:
  110. - name: Docker base up
  111. command: "docker-compose up -d amqp"
  112. - name: "Wait for amqp. Timeout: 1 minutes"
  113. pause:
  114. minutes: 1
  115. - name: Launch docker for module base. Tag=start_base
  116. hosts: 127.0.0.1
  117. connection: local
  118. tags: start_base
  119. tasks:
  120. - name: Docker base up
  121. command: "docker-compose up -d --force-recreate base"
  122. - name: Configure module base. Tag=configure_base
  123. hosts: base
  124. connection: docker
  125. tags: configure_base
  126. vars:
  127. uris: ""
  128. tasks:
  129. - name: "Wait for autoload_classmap.php. Timeout: 10 minutes"
  130. wait_for:
  131. path: "/opt/base/vendor/composer/autoload_classmap.php"
  132. state: present
  133. sleep: 30
  134. timeout: 600
  135. - name: Load redirections
  136. set_fact:
  137. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.flowdat.net/login_check"
  138. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  139. - name: Load redirections app_dev
  140. set_fact:
  141. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.flowdat.net/app_dev.php/login_check"
  142. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  143. - name: Create oauth client
  144. shell: "bin/console oauth:client:createRedirects {{ uris }} > oauth.data.log"
  145. args:
  146. executable: /bin/bash
  147. - name: Update variable usersetting
  148. set_fact:
  149. usersetting: "{{ lookup('file', '{{ playbook_dir }}/user_system.json')|from_json }}"
  150. - name: Create user iksop
  151. shell: "bin/console user:create {{ item.user }} {{ item.email }} {{ item.password }} {{ item.tenancy }} {{ item.extra }}"
  152. args:
  153. executable: /bin/bash
  154. with_items: "{{ usersetting.users }}"
  155. - name: Promote users to ADMIN
  156. shell: " bin/console fos:user:promote admin ROLE_ADMIN"
  157. args:
  158. executable: /bin/bash
  159. - name: Promote users to IKSOP
  160. shell: " bin/console fos:user:promote iksop ROLE_SUPER_ADMIN"
  161. args:
  162. executable: /bin/bash
  163. - name: Copy file oauth.data.log to host
  164. fetch:
  165. src: /opt/base/oauth.data.log
  166. dest: /tmp/
  167. flat: yes
  168. - name: Configure oauth data for other container. Tag=configure_oauth
  169. hosts: 127.0.0.1
  170. connection: local
  171. tags: configure_oauth
  172. tasks:
  173. - name: "Add outh client id"
  174. shell: "cp /tmp/oauth.data.log {{ item }}.oauth.env"
  175. args:
  176. executable: /bin/bash
  177. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  178. - name: "Launch docker's. Tag=launch_dockers"
  179. hosts: 127.0.0.1
  180. connection: local
  181. tags: launch_dockers
  182. tasks:
  183. - name: "Dockers up"
  184. command: "docker-compose up -d --force-recreate {{ item }}"
  185. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  186. - name: "Run modules. Timeout: 10 minutes. Tag=run_modules"
  187. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  188. connection: docker
  189. tags: run_modules
  190. tasks:
  191. - name: "Docker's schema update"
  192. wait_for:
  193. path: "./vendor/composer/autoload_classmap.php"
  194. state: present
  195. sleep: 30
  196. timeout: 600
  197. - name: "Run doctrine:schema:update for modules. Tag=dsu_modules"
  198. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  199. connection: docker
  200. tags: dsu_modules
  201. tasks:
  202. - name: "Doctrine schema update"
  203. shell: "bin/console doctrine:schema:update --force"
  204. # Generate self-signed cert files for Nginx (intended for development, please replace with proper ones)
  205. - name: "Generate self-signed cert files for Nginx"
  206. hosts: 127.0.0.1
  207. connection: local
  208. tags: self_cert
  209. tasks:
  210. - name: "Make sure certs dir exists"
  211. shell: "mkdir -p /opt/flowdat/certs"
  212. - name: "Generate self-signed certs for Nginx"
  213. shell: "openssl req -x509 -nodes -batch -days 365 -newkey rsa:2048 -keyout /opt/flowdat/certs/privkey.pem -out /opt/flowdat/certs/fullchain.pem -subj '/C=AR/ST=Santa Fe/L=Rosario/O=Interlink/OU=R&D/CN=*.{{ lookup('env','CLIENT') }}.{{ lookup('env','DOMAIN') }}/emailAddress=idev@interlink.com.ar'"
  214. - name: "Copy certs dir to extra/nginx/certs"
  215. hosts: 127.0.0.1
  216. connection: local
  217. tags: copy_cert
  218. tasks:
  219. - name: "Copy certs directory"
  220. shell: "cp -nr /opt/flowdat/certs/* /opt/flowdat/extra/nginx/certs"
  221. - name: "Run up all. Tag=up_all"
  222. hosts: 127.0.0.1
  223. connection: local
  224. tags: up_all
  225. tasks:
  226. - name: Docker up all modules
  227. command: "docker-compose up -d "
  228. - name: Docker stop nginx
  229. command: "docker-compose stop nginx "
  230. - name: Docker up nginx
  231. command: "docker-compose up -d nginx"