playbook.yml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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.dist {{ playbook_dir }}/base/app/config/parameters.yml"
  8. - name: "Parameters"
  9. command: "cp {{ playbook_dir }}/{{ item }}/app/config/parameters.yml.dist {{ playbook_dir }}/{{ item }}/app/config/parameters.yml"
  10. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  11. - stat:
  12. path: "{{ playbook_dir }}/kea"
  13. register: kea_dir
  14. - name: Parameters for base
  15. command: "cp {{ playbook_dir }}/kea/1.4.0/kea-ik/conf/kea-dhcp4.conf.dist {{ playbook_dir }}/kea/1.4.0/kea-ik/conf/kea-dhcp4.conf"
  16. when: kea_dir.stat.isdir is defined and kea_dir.stat.isdir
  17. - name: Launch docker for mysql database. Tag=start_mysql
  18. hosts: 127.0.0.1
  19. connection: local
  20. tags: start_mysql
  21. tasks:
  22. - name: Docker mysql up
  23. command: "docker-compose up -d --force-recreate mysql"
  24. - name: Configure mysql database. Tag=configure_mysql
  25. hosts: mysql
  26. connection: docker
  27. gather_facts: no
  28. tags: configure_mysql
  29. tasks:
  30. - name: Wait for mysql be ready
  31. wait_for:
  32. host: 127.0.0.1
  33. port: 3306
  34. state: started
  35. delay: 5
  36. connect_timeout: 15
  37. timeout: 360
  38. - name: Create database fd_session
  39. mysql_db:
  40. name: fd_session
  41. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  42. state: present
  43. - name: Create database freeradius
  44. mysql_db:
  45. name: freeradius
  46. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  47. state: present
  48. - name: Create database grafana
  49. mysql_db:
  50. name: grafana
  51. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  52. state: present
  53. - name: Create database statsd_db
  54. mysql_db:
  55. name: statsd_db
  56. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  57. state: present
  58. - name: Create database base
  59. mysql_db:
  60. name: fd3_base
  61. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  62. state: present
  63. - name: Create database ftth
  64. mysql_db:
  65. name: fd3_ftth
  66. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  67. state: present
  68. - name: Create database stats
  69. mysql_db:
  70. name: fd3_stats
  71. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  72. state: present
  73. - name: Create database cablemodem
  74. mysql_db:
  75. name: fd3_cablemodem
  76. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  77. state: present
  78. - name: Create database Radius
  79. mysql_db:
  80. name: fd3_radius
  81. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  82. state: present
  83. - name: Create database dhcp
  84. mysql_db:
  85. name: fd3_dhcp
  86. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  87. state: present
  88. - name: Create database kea
  89. mysql_db:
  90. name: kea
  91. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  92. state: present
  93. - copy:
  94. src: "{{ playbook_dir }}/freeradius_schema.sql"
  95. dest: /tmp/freeradius_schema.sql
  96. - name: Create freeradius MySQL schema
  97. mysql_db:
  98. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  99. state: import
  100. name: freeradius
  101. target: "/tmp/freeradius_schema.sql"
  102. - name: Create user iksop
  103. mysql_user:
  104. name: 'iksop'
  105. password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  106. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  107. priv: '*.*:ALL'
  108. state: present
  109. - copy:
  110. src: "{{ playbook_dir }}/mysql_scripts.sql"
  111. dest: /tmp/mysql_scripts.sql
  112. - name: Replace password mysql_scripts.sql
  113. shell: "sed -i -- 's/#password#/{{ lookup('env', 'MYSQL_PASSWORD') }}/g' /tmp/mysql_scripts.sql"
  114. - name: Run SQL commands against DB to create table
  115. mysql_db:
  116. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  117. state: import
  118. name: fd_session
  119. target: "/tmp/mysql_scripts.sql"
  120. - name: Launch docker for amqp. Tag=start_amqp
  121. hosts: 127.0.0.1
  122. connection: local
  123. tags: start_base
  124. tasks:
  125. - name: Docker amqp up
  126. command: "docker-compose up -d amqp"
  127. - name: "Wait for amqp. Timeout: 1 minutes"
  128. pause:
  129. minutes: 1
  130. - name: Launch docker for module base. Tag=start_base
  131. hosts: 127.0.0.1
  132. connection: local
  133. tags: start_base
  134. tasks:
  135. - name: Docker base up
  136. command: "docker-compose up -d --force-recreate base"
  137. - name: Configure module base. Tag=configure_base
  138. hosts: base
  139. connection: docker
  140. tags: configure_base
  141. vars:
  142. uris: ""
  143. tasks:
  144. - name: "Wait for autoload_classmap.php. Timeout: 10 minutes"
  145. wait_for:
  146. path: "/opt/base/vendor/composer/autoload_classmap.php"
  147. state: present
  148. sleep: 30
  149. timeout: 600
  150. - name: Chmod cache
  151. file:
  152. path: /opt/base/var/cache/
  153. recurse: yes
  154. mode: 777
  155. - name: Clean cache
  156. file:
  157. state: absent
  158. path: "/opt/base/var/cache/"
  159. - name: Load redirections
  160. set_fact:
  161. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/login_check"
  162. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  163. - name: Load redirections app_dev
  164. set_fact:
  165. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/app_dev.php/login_check"
  166. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  167. - name: Create oauth client
  168. shell: "bin/console oauth:client:createRedirects {{ uris }} > oauth.data.log"
  169. args:
  170. executable: /bin/bash
  171. - name: Copy file oauth.data.log to host
  172. fetch:
  173. src: /opt/base/oauth.data.log
  174. dest: /tmp/
  175. flat: yes
  176. - name: Configure oauth data for other container. Tag=configure_oauth
  177. hosts: 127.0.0.1
  178. connection: local
  179. tags: configure_oauth
  180. tasks:
  181. - name: "Add outh client id"
  182. shell: "cp /tmp/oauth.data.log {{ item }}.oauth.env"
  183. args:
  184. executable: /bin/bash
  185. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  186. - name: "Launch docker's. Tag=launch_dockers"
  187. hosts: 127.0.0.1
  188. connection: local
  189. tags: launch_dockers
  190. tasks:
  191. - name: "Dockers up"
  192. command: "docker-compose up -d --force-recreate {{ item }}"
  193. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  194. - name: "Wait to load containers. Timeout: 10 minutes. Tag=run_modules"
  195. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  196. connection: docker
  197. tags: run_modules
  198. tasks:
  199. - name: "Waiting"
  200. wait_for:
  201. path: "./vendor/composer/autoload_classmap.php"
  202. state: present
  203. sleep: 30
  204. timeout: 600
  205. - name: "Run doctrine:schema:update for modules. Tag=dsu_modules"
  206. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  207. connection: docker
  208. tags: dsu_modules
  209. tasks:
  210. - name: "Doctrine schema update"
  211. shell: "bin/console doctrine:schema:update --force"
  212. # Generate self-signed cert files for Nginx (intended for development, please replace with proper ones)
  213. - name: "Generate self-signed cert files for Nginx"
  214. hosts: 127.0.0.1
  215. connection: local
  216. tags: self_cert
  217. tasks:
  218. - name: "Make sure certs dir exists"
  219. shell: "mkdir -p /opt/flowdat/certs"
  220. - name: "Generate self-signed certs for Nginx"
  221. 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'"
  222. - name: "Copy certs dir to nginx/certs"
  223. hosts: 127.0.0.1
  224. connection: local
  225. tags: copy_cert
  226. tasks:
  227. - name: "Copy certs directory"
  228. shell: "cp -nr /opt/flowdat/certs/* /opt/flowdat/nginx/certs"
  229. - name: "Run up all. Tag=up_all"
  230. hosts: 127.0.0.1
  231. connection: local
  232. tags: up_all
  233. tasks:
  234. - name: Docker up all modules
  235. command: "docker-compose up -d "
  236. - name: Docker stop nginx
  237. command: "docker-compose stop nginx "
  238. - name: Docker up nginx
  239. command: "docker-compose up -d nginx"
  240. - name: "Clear all cache. Tag=clear_cache_all"
  241. hosts: 127.0.0.1
  242. connection: local
  243. tags: clear_cache_all
  244. tasks:
  245. - name: "Chmod cache"
  246. command: "chmod 777 -R /opt/flowdat/{{ item }}/var/cache"
  247. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"