playbookSupport.yml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  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 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 stats
  54. mysql_db:
  55. name: fd3_stats
  56. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  57. state: present
  58. - name: Create database cablemodem
  59. mysql_db:
  60. name: fd3_cablemodem
  61. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  62. state: present
  63. - name: Create database Radius
  64. mysql_db:
  65. name: fd3_radius
  66. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  67. state: present
  68. - name: Create database dhcp
  69. mysql_db:
  70. name: fd3_dhcp
  71. login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
  72. state: present
  73. - name: Create database kea
  74. mysql_db:
  75. name: kea
  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 amqp 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 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: Chmod cache
  130. file:
  131. path: /opt/base/var/cache/
  132. recurse: yes
  133. mode: 777
  134. - name: Clean cache
  135. file:
  136. state: absent
  137. path: "/opt/base/var/cache/"
  138. - name: Load redirections
  139. set_fact:
  140. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/login_check"
  141. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  142. - name: Load redirections app_dev
  143. set_fact:
  144. uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/app_dev.php/login_check"
  145. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  146. - name: Create oauth client
  147. shell: "bin/console oauth:client:createRedirects {{ uris }} > oauth.data.log"
  148. args:
  149. executable: /bin/bash
  150. - name: Copy file oauth.data.log to host
  151. fetch:
  152. src: /opt/base/oauth.data.log
  153. dest: /tmp/
  154. flat: yes
  155. - name: Configure oauth data for other container. Tag=configure_oauth
  156. hosts: 127.0.0.1
  157. connection: local
  158. tags: configure_oauth
  159. tasks:
  160. - name: "Add outh client id"
  161. shell: "cp /tmp/oauth.data.log {{ item }}.oauth.env"
  162. args:
  163. executable: /bin/bash
  164. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  165. - name: "Launch docker's. Tag=launch_dockers"
  166. hosts: 127.0.0.1
  167. connection: local
  168. tags: launch_dockers
  169. tasks:
  170. - name: "Dockers up"
  171. command: "docker-compose up -d {{ item }}"
  172. with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
  173. - name: "Wait to load containers. Timeout: 10 minutes. Tag=run_modules"
  174. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  175. connection: docker
  176. tags: run_modules
  177. tasks:
  178. - name: "Waiting"
  179. wait_for:
  180. path: "./vendor/composer/autoload_classmap.php"
  181. state: present
  182. sleep: 30
  183. timeout: 600
  184. - name: "Run doctrine:schema:update for modules. Tag=dsu_modules"
  185. hosts: "{{ lookup('env', 'MODULES_INSTALL') }}"
  186. connection: docker
  187. tags: dsu_modules
  188. tasks:
  189. - name: "Doctrine schema update"
  190. shell: "bin/console doctrine:schema:update --force"
  191. # Generate self-signed cert files for Nginx (intended for development, please replace with proper ones)
  192. - name: "Generate self-signed cert files for Nginx"
  193. hosts: 127.0.0.1
  194. connection: local
  195. tags: self_cert
  196. tasks:
  197. - name: "Make sure certs dir exists"
  198. shell: "mkdir -p ./certs"
  199. - name: "Generate self-signed certs for Nginx"
  200. shell: "openssl req -x509 -nodes -batch -days 365 -newkey rsa:2048 -keyout ./certs/privkey.pem -out ./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'"
  201. - name: "Copy certs dir to nginx/certs"
  202. hosts: 127.0.0.1
  203. connection: local
  204. tags: copy_cert
  205. tasks:
  206. - name: "Create certs directory"
  207. shell: "mkdir -p ./nginx/certs"
  208. - name: "Copy certs directory"
  209. shell: "cp -nr ./certs/* ./nginx/certs"
  210. - name: "Kea files"
  211. hosts: 127.0.0.1
  212. connection: local
  213. tags: kea_files
  214. tasks:
  215. - name: Check if get_kea_files.sh exists
  216. stat:
  217. path: get_kea_files.sh
  218. register: kea_files_result
  219. - name: Check if dir kea exists
  220. stat:
  221. path: kea
  222. register: kea_dir_result
  223. - name: Get kea image
  224. command: docker-compose pull kea
  225. when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False
  226. - name: Run chmod +x
  227. command: chmod +x get_kea_files.sh
  228. when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False
  229. - name: Execute get_kea_files.sh
  230. command: sh get_kea_files.sh
  231. when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False
  232. - name: "Supervisord files"
  233. hosts: 127.0.0.1
  234. connection: local
  235. tags: supervisord_files
  236. tasks:
  237. - name: Check if get_supervisord_files.sh exists
  238. stat:
  239. path: get_supervisord_files.sh
  240. register: supervisord_files_result
  241. - name: Check if supervisord exists
  242. stat:
  243. path: supervisord
  244. register: supervisord_dir_result
  245. - name: Get supervisord image
  246. command: docker-compose pull supervisord
  247. when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False
  248. - name: Run chmod +x
  249. command: chmod +x get_supervisord_files.sh
  250. when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False
  251. - name: Execute get_supervisord_files.sh
  252. command: sh get_supervisord_files.sh
  253. when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False
  254. - name: "Run up all. Tag=up_all"
  255. hosts: 127.0.0.1
  256. connection: local
  257. tags: up_all
  258. tasks:
  259. - name: Docker up all modules
  260. command: "docker-compose up -d "
  261. - name: Docker stop nginx
  262. command: "docker-compose stop nginx "
  263. - name: Docker up nginx
  264. command: "docker-compose up -d nginx"