playbook.yml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. ---
  2. - name: Implementation parameters
  3. hosts: 127.0.0.1
  4. connection: local
  5. tasks:
  6. - name: Parameters for base
  7. command: "cp {{ playbook_dir }}/base/app/config/parameters.yml.docker {{ playbook_dir }}/base/app/config/parameters.yml"
  8. - name: "Parameters"
  9. command: "cp {{ playbook_dir }}/{{ item }}/app/config/parameters.yml.docker {{ playbook_dir }}/{{ item }}/app/config/parameters.yml"
  10. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  11. - name: Launch docker for mysql database. Tag=start_mysql
  12. hosts: 127.0.0.1
  13. connection: local
  14. tags: start_mysql
  15. tasks:
  16. - name: Docker build
  17. command: "docker-compose build"
  18. - name: Docker mysql up
  19. command: "docker-command pull mysql ; docker-compose up -d mysql"
  20. - name: Configure mysql database. Tag=configure_mysql
  21. hosts: mysql
  22. connection: docker
  23. gather_facts: no
  24. tags: configure_mysql
  25. tasks:
  26. - name: Wait for docker mysql be ready
  27. wait_for_connection:
  28. - name: Wait for mysql be ready
  29. wait_for:
  30. host: 127.0.0.1
  31. port: 3306
  32. state: started
  33. delay: 5
  34. connect_timeout: 15
  35. timeout: 360
  36. - name: Create database fd_session
  37. mysql_db:
  38. name: fd_session
  39. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  40. state: present
  41. - name: Create database freeradius
  42. mysql_db:
  43. name: freeradius
  44. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  45. state: present
  46. - name: Create database grafana
  47. mysql_db:
  48. name: grafana
  49. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  50. state: present
  51. - name: Create database statsd_db
  52. mysql_db:
  53. name: statsd_db
  54. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  55. state: present
  56. - name: Create database base
  57. mysql_db:
  58. name: fd3_base
  59. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  60. state: present
  61. - name: Create database ftth
  62. mysql_db:
  63. name: fd3_ftth
  64. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  65. state: present
  66. - name: Create database mapas
  67. mysql_db:
  68. name: fd3_mapas
  69. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  70. state: present
  71. - name: Create database stats
  72. mysql_db:
  73. name: fd3_stats
  74. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  75. state: present
  76. - name: Create database cablemodem
  77. mysql_db:
  78. name: fd3_cablemodem
  79. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  80. state: present
  81. - name: Create database Radius
  82. mysql_db:
  83. name: fd3_radius
  84. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  85. state: present
  86. - name: Create database dhcp
  87. mysql_db:
  88. name: fd3_dhcp
  89. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  90. state: present
  91. - copy:
  92. src: "{{ playbook_dir }}/mysql_scripts.sql"
  93. dest: /tmp/mysql_scripts.sql
  94. - name: Run SQL commands against DB to create table
  95. mysql_db:
  96. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  97. state: import
  98. name: fd_session
  99. target: "/tmp/mysql_scripts.sql"
  100. - copy:
  101. src: "{{ playbook_dir }}/freeradius_schema.sql"
  102. dest: /tmp/freeradius_schema.sql
  103. - name: Create freeradius MySQL schema
  104. mysql_db:
  105. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  106. state: import
  107. name: freeradius
  108. target: "/tmp/freeradius_schema.sql"
  109. - name: Create user iksop
  110. mysql_user:
  111. name: 'iksop'
  112. password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  113. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  114. priv: '*.*:ALL'
  115. state: present
  116. - name: Copy file mysql_scripts.sql
  117. copy:
  118. src: "{{ playbook_dir }}/mysql_scripts.sql"
  119. dest: /tmp/mysql_scripts.sql
  120. - name: Run SQL commands against DB to create table
  121. mysql_db:
  122. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  123. state: import
  124. name: fd_session
  125. target: "/tmp/mysql_scripts.sql"
  126. - name: Launch docker for module base. Tag=start_base
  127. hosts: 127.0.0.1
  128. connection: local
  129. tags: start_base
  130. tasks:
  131. - name: Docker base up
  132. command: "docker-compose up -d base"
  133. - name: Configure module base. Tag=configure_base
  134. hosts: base
  135. connection: docker
  136. tags: configure_base
  137. vars:
  138. uris: ""
  139. tasks:
  140. - name: "Wait for autoload_classmap.php. Timeout: 10 minutes"
  141. wait_for:
  142. path: /opt/base/vendor/composer/autoload_classmap.php
  143. state: present
  144. sleep: 30
  145. timeout: 600
  146. - name: Doctrine schema update
  147. shell: "eval $(ssh-agent) ; ssh-add keys/bitbucket.id_rsa ; composer install"
  148. - name: Load redirections
  149. set_fact:
  150. uris: "{{ uris }} --redirect_uri=http://{{ item }}.{{ lookup('env', 'CLIENT') }}.flowdat.com/login_check"
  151. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  152. - name: Create oauth client
  153. shell: "bin/console oauth:client:createRedirects {{ uris }} > oauth.data.log"
  154. args:
  155. executable: /bin/bash
  156. - name: Copy file user_system.json
  157. copy:
  158. src: "{{ playbook_dir }}/user_system.json"
  159. dest: /tmp/user_system.json
  160. - name: Update variable usersetting
  161. set_fact:
  162. usersetting: "{{ lookup('file', playbook_dir+'/user_system.json')|from_json }}"
  163. - name: Create user iksop
  164. shell: "bin/console user:create {{ item.user }} {{ item.email }} {{ item.password }} {{ item.tenancy }} {{ item.extra }}"
  165. args:
  166. executable: /bin/bash
  167. with_items: "{{ usersetting.users }}"
  168. - name: Promote users to ADMIN
  169. shell: " bin/console fos:user:promote admin ROLE_ADMIN"
  170. args:
  171. executable: /bin/bash
  172. - name: Copy file oauth.data.log to host
  173. fetch:
  174. src: /opt/base/oauth.data.log
  175. dest: /tmp/
  176. flat: yes
  177. - name: Configure oauth data for other container. Tag=configure_oauth
  178. hosts: 127.0.0.1
  179. connection: local
  180. tags: configure_oauth
  181. tasks:
  182. - name: "Add outh client id"
  183. shell: "cp /tmp/oauth.data.log {{ item }}.oauth.env"
  184. args:
  185. executable: /bin/bash
  186. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  187. - name: "Launch docker's. Tag=launch_dockers"
  188. hosts: 127.0.0.1
  189. connection: local
  190. tags: launch_dockers
  191. tasks:
  192. - name: "Dockers up"
  193. command: "docker-compose up -d {{ item }}"
  194. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  195. - name: "Run modules. Timeout: 10 minutes. Tag=run_modules"
  196. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  197. connection: docker
  198. tags: run_modules
  199. tasks:
  200. - name: "Docker's schema update"
  201. wait_for:
  202. path: "./vendor/composer/autoload_classmap.php"
  203. #path: "/opt/{{ play_hosts }}/vendor/composer/autoload_classmap.php"
  204. state: present
  205. sleep: 30
  206. timeout: 600
  207. - name: "Run doctrine:schema:update for modules. Tag=dsu_modules"
  208. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  209. connection: docker
  210. tags: dsu_modules
  211. tasks:
  212. - name: "Doctrine schema update"
  213. shell: "bin/console doctrine:schema:update --force"
  214. - name: "Run nginx. Tag=nginx_run"
  215. hosts: 127.0.0.1
  216. connection: local
  217. tags: nginx_run
  218. tasks:
  219. - name: Docker nginx up
  220. command: "docker-compose up -d nginx"