playbook.yml 9.1 KB

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