playbook_v2.yml 9.2 KB

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