ソースを参照

Arreglos FD3-463

gabriel 7 年 前
コミット
1d9bba3e5d
6 ファイル変更541 行追加466 行削除
  1. BIN
      tools/.readme.md.swp
  2. 4 1
      tools/mysql_scripts.sql
  3. 56 45
      tools/playbook.yml
  4. 38 4
      tools/readme.md
  5. 418 416
      tools/src/Release.php
  6. 25 0
      tools/user_system.json

BIN
tools/.readme.md.swp


+ 4 - 1
tools/mysql_scripts.sql

@@ -6,4 +6,7 @@ CREATE TABLE IF NOT EXISTS `fd_session`.`sessions` (
   `sess_time` int(10) unsigned NOT NULL,
   `sess_lifetime` mediumint(9) NOT NULL,
   PRIMARY KEY (`sess_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+
+GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '#password#';
+GRANT ALL ON *.* TO 'iksop'@'%' IDENTIFIED BY '#password#';

+ 56 - 45
tools/playbook.yml

@@ -15,14 +15,14 @@
   connection: local
   tags: start_mysql
   tasks:
-    - name: Docker build
-      command: "docker-compose build"
-
-    - name: Docker build mysql
-      command: "docker-compose pull mysql"
+#    - name: Docker build
+#      command: "docker-compose build"
+#
+#    - name: Docker build mysql
+#      command: "docker-compose pull mysql"
 
     - name: Docker mysql up
-      command: "docker-compose up -d mysql"
+      command: "docker-compose up -d --force-recreate mysql"
 
 - name: Configure mysql database. Tag=configure_mysql
   hosts: mysql
@@ -30,9 +30,6 @@
   gather_facts: no
   tags: configure_mysql
   tasks:
-    - name: Wait for docker mysql be ready
-      wait_for_connection:
-
     - name: Wait for mysql be ready
       wait_for:
         host: 127.0.0.1
@@ -108,17 +105,6 @@
         login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
         state: present
 
-    - copy:
-        src: "{{ playbook_dir }}/mysql_scripts.sql"
-        dest: /tmp/mysql_scripts.sql
-
-    - name: Run SQL commands against DB to create table
-      mysql_db:
-        login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
-        state: import
-        name: fd_session
-        target: "/tmp/mysql_scripts.sql"
-
     - copy:
         src: "{{ playbook_dir }}/freeradius_schema.sql"
         dest: /tmp/freeradius_schema.sql
@@ -138,11 +124,13 @@
         priv: '*.*:ALL'
         state: present
 
-    - name: Copy file mysql_scripts.sql
-      copy:
+    - copy:
         src: "{{ playbook_dir }}/mysql_scripts.sql"
         dest: /tmp/mysql_scripts.sql
 
+    - name: Replace password mysql_scripts.sql
+      shell: "sed -i -- 's/#password#/{{ lookup('env', 'MYSQL_PASSWORD') }}/g' /tmp/mysql_scripts.sql"
+
     - name: Run SQL commands against DB to create table
       mysql_db:
         login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
@@ -150,13 +138,31 @@
         name: fd_session
         target: "/tmp/mysql_scripts.sql"
 
+- name: Launch docker for amqp. Tag=start_amqp
+  hosts: 127.0.0.1
+  connection: local
+  tags: start_base
+  tasks:
+    - name: Docker base up
+      command: "docker-compose up -d amqp"
+
+    - name: "Wait for amqp. Timeout: 1 minutes"
+      pause:
+        minutes: 1
+
 - name: Launch docker for module base. Tag=start_base
   hosts: 127.0.0.1
   connection: local
   tags: start_base
   tasks:
     - name: Docker base up
-      command: "docker-compose up -d base"
+      command: "docker-compose up -d --force-recreate base"
+    - name: "Wait for autoload_classmap.php. Timeout: 10 minutes"
+      wait_for:
+        path: "{{ playbook_dir }}/base/vendor/composer/autoload_classmap.php"
+        state: present
+        sleep: 30
+        timeout: 600
 
 - name: Configure module base. Tag=configure_base
   hosts: base
@@ -165,21 +171,19 @@
   vars:
     uris: ""
   tasks:
-    - name: "Wait for autoload_classmap.php. Timeout: 10 minutes"
-      wait_for:
-        path: /opt/base/vendor/composer/autoload_classmap.php
-        state: present
-        sleep: 30
-        timeout: 600
+    - name: Chmod cache
+      file:
+        path: /opt/base/var/cache/
+        recurse: yes
+        mode: 777
 
-    - name: Cambio los permisos para las claves de acceso
-      shell: "chmod 0600  keys/bitbucket.id_rsa.pub keys/bitbucket.id_rsa"
+    - name: Clean cache
+      file:
+        state: absent
+        path: "/opt/base/var/cache/"
 
-    - name: Borra el cache, evita problemas
-      shell: "rm /opt/base/var/cache/* -rf"
-
-    - name: Doctrine schema update
-      shell: "eval $(ssh-agent) ;  ssh-add keys/bitbucket.id_rsa ; composer install"
+    - name: Composer install
+      shell: "eval $(ssh-agent) ;  ssh-add /opt/keys/bitbucket.id_rsa ; composer install --no-interaction"
 
     - name: Load redirections
       set_fact:
@@ -191,14 +195,10 @@
       args:
         executable: /bin/bash
 
-    - name: Copy file user_system.json
-      copy:
-        src: "{{ playbook_dir }}/user_system.json"
-        dest: /tmp/user_system.json
 
     - name: Update variable usersetting
       set_fact:
-        usersetting: "{{ lookup('file', playbook_dir+'/user_system.json')|from_json }}"
+        usersetting: "{{ lookup('file', '{{ playbook_dir }}/user_system.json')|from_json }}"
 
     - name: Create user iksop
       shell: "bin/console user:create {{ item.user }} {{ item.email }} {{ item.password }} {{ item.tenancy }} {{ item.extra }}"
@@ -211,6 +211,11 @@
       args:
         executable: /bin/bash
 
+    - name: Promote users to IKSOP
+      shell: " bin/console fos:user:promote iksop SUPER_ADMIN"
+      args:
+        executable: /bin/bash
+
     - name: Copy file oauth.data.log to host
       fetch:
         src: /opt/base/oauth.data.log
@@ -234,7 +239,7 @@
   tags: launch_dockers
   tasks:
     - name: "Dockers up"
-      command: "docker-compose up -d {{ item }}"
+      command: "docker-compose up -d --force-recreate {{ item }}"
       with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
 
 - name: "Run modules. Timeout: 10 minutes. Tag=run_modules"
@@ -258,10 +263,16 @@
     - name: "Doctrine schema update"
       shell: "bin/console doctrine:schema:update --force"
 
-- name: "Run nginx. Tag=nginx_run"
+- name: "Run up all. Tag=up_all"
   hosts: 127.0.0.1
   connection: local
-  tags: nginx_run
+  tags: up_all 
   tasks:
-    - name: Docker nginx up
+    - name: Docker up all modules
+      command: "docker-compose up -d "
+
+    - name: Docker stop nginx
+      command: "docker-compose stop nginx "
+
+    - name: Docker up nginx
       command: "docker-compose up -d nginx"

+ 38 - 4
tools/readme.md

@@ -65,8 +65,8 @@
     # -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
     # dind: es el nombre que le pusimos anteriormente al contenedor.
     # make:install: es el comando que se ejecuta dentro del docker para crear los archivos.
-    # galvez: nombre de la empresa que estoy instalando.
-    # --domain=galvez: es el nombre del dominio que se utilizará. El dominio final quedaría base.galvez.flowdat.com, ftth.galvez.flowdat.com, etc.
+    # $CLIENT: nombre de la empresa que estoy instalando.
+    # --domain=DOMINIO-INSTALACION: es el nombre del dominio que se utilizará. El dominio final quedaría base.DOMINIO-INSTALACION.flowdat.com, ftth.DOMINIO-INSTALACION.flowdat.com, etc.
     # para mas informacion ejecutar "docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind make:install --help"
 
 ####. Una vez dentro del docker entramos al directorio de instalación.
@@ -80,7 +80,7 @@
     # -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
     # dind: es el nombre que le pusimos anteriormente al contenedor.
     # get:source: es el comando que se ejecuta dentro del docker para obtener los fuentes.
-    # galvez/git.ini: es el nombre del archivo que posee los directorios a descargar.
+    # $(pwd)/git.ini: es el nombre del archivo que posee los directorios a descargar.
     # para mas informacion ejecutar "docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind get:source --help"
 
 ####. Renombramos los archivos innecesarios para el nginx.    
@@ -91,7 +91,7 @@
     # -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
     # dind: es el nombre que le pusimos anteriormente al contenedor.
     # fix:nginx: es el comando que se ejecuta dentro del docker para obtener los fuentes.
-    # galvez: nombre de la empresa que estoy instalando.            
+    # $(pwd): nombre de la empresa que estoy instalando.            
 
 ####. Entramos al docker para correr ansible y terminar la configuración
     docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind bash
@@ -102,6 +102,9 @@
     # dind: es el nombre que le pusimos anteriormente al contenedor.
     # bash: significa que se ejecutará un bash.
 
+####. Una vez dentro del docker entramos al directorio de instalación.
+    cd /opt/flowdat
+
 ####. Corremos ansible para finalizar la configuración e instalación
     eval $(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml
     # eval $(cat mysql.host.env running.env): se le pasa al ansible-playbook las variables de entorno definidas en los archivos mysql.host.env y running.env
@@ -131,3 +134,34 @@
     echo "deb-src http://ftp.us.debian.org/debian/ jessie-backports main" >> /etc/apt/sources.list
     # actualizo la version del kernel
     apt-get update ; apt-get install -t jessie-backports linux-image-amd64
+    
+## Errors
+#### Mysql no arranca
+    Este es un problema de permisos del directorio mysql. Realizar un chmod fuera del docker.
+
+#### Unknown database 'mysql'
+    Por alguna razón no se creo la base de datos de mysql.
+    Ingreso al docker de mysql
+        docker-compose exec mysql bash
+    Paro el servicio de mysql
+        service mysql stop
+    Ingreso al directorio mysql
+        cd /opt/flowdat/mysql
+    Borro todos los archivos del directorio mysql
+        rm -Rf *
+    Inicializo nuevamente la base de datos de forma insegura. Sin password para root
+        mysqld --initialize-insecure
+    Verifico que pueda acceder al mysql. Cuando pide el password lo dejamos en blando
+        mysql -u root -p 
+    Sino podemos entrar, entonces hay que reiniciar el password
+        apt update && apt install vi
+        su mysql
+        
+        235r2342gtfsw
+    Cambiar el password de root, seguimos com el ejemplo
+        
+    Salgo del docker
+        exit
+    Ejecuto nuevamente el playbook (ansible)
+
+    

ファイルの差分が大きいため隠しています
+ 418 - 416
tools/src/Release.php


+ 25 - 0
tools/user_system.json

@@ -0,0 +1,25 @@
+{
+    "users": [
+        {
+            "user": "admin",
+            "password": "admin",
+            "email": "admin@flowdat.com.ar",
+            "tenancy": 1,
+            "extra": ""
+        },
+        {
+            "user": "iksop",
+            "password": "gran5pe",
+            "email": "interno@flowdat.com.ar",
+            "tenancy": 1,
+            "extra": ""
+        },
+        {
+            "user": "interno",
+            "password": "gran5pe1nterno",
+            "email": "interno@flowdat.com.ar",
+            "tenancy": 1,
+            "extra": ""
+        }
+    ]
+}