Преглед на файлове

Correciones varias de la instalacion

gabriel преди 7 години
родител
ревизия
dfef93c4b2
променени са 6 файла, в които са добавени 131 реда и са изтрити 38 реда
  1. 1 1
      tools/Dockerfile
  2. 28 17
      tools/execute.sh
  3. 14 0
      tools/mysql_scripts.sql
  4. 27 4
      tools/playbook.yml
  5. 56 16
      tools/readme.md
  6. 5 0
      tools/src/Release.php

+ 1 - 1
tools/Dockerfile

@@ -5,7 +5,7 @@ EXPOSE 8000
 RUN apt-get update && apt-get install -yq wget apt-transport-https lsb-release ca-certificates software-properties-common gnupg2 curl iputils-ping
 RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
 RUN sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
-RUN apt-get update && apt-get install -yq python python-pip git vim tmux zip build-essential php7.1 iptables xz-utils
+RUN apt-get update && apt-get install -yq python python-pip git vim tmux zip build-essential php7.1 iptables xz-utils php7.1-mbstring php7.1-gmp
 # mysql-client php7.1 php7.1-mysql php7.1-curl php7.1-xml php7.1-zip php7.1-bcmath php7.1-mbstring php7.1-dom php7.1-amqp php7.1-soap php7.1-snmp
 ## install composer
 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

+ 28 - 17
tools/execute.sh

@@ -5,24 +5,35 @@ ssh-add /opt/keys/bitbucket.id_rsa
 
 if [ "$1" == "bash" ];
 then
-  eval /bin/bash
+  COMMAND="/bin/bash"
 else
-  echo "########################################################"
-  echo "########################################################"
-  echo "RUN BASH WITH OPTION bash. Ej: docker run ......... bash"
-  echo "########################################################"
-  echo "########################################################"
-  echo ""
-  echo ""
-
-  COMMAND="php cmd.php"
-
-  if [ "$#" -ne 0 ];
+  if [ "$1" == "composer" ];
   then
-    for word in "$@"
-    do
-      COMMAND="$COMMAND $word"
-    done
+    if [ "$#" -ne 0 ];
+    then
+      for word in "$@"
+      do
+        COMMAND="$COMMAND $word"
+      done
+    fi
+    COMMAND="sh -c '$COMMAND'"
+  else
+    echo "########################################################"
+    echo "########################################################"
+    echo "RUN BASH WITH OPTION bash. Ej: docker run ......... bash"
+    echo "########################################################"
+    echo "########################################################"
+    echo ""
+    echo ""
+    COMMAND="php cmd.php"
+    if [ "$#" -ne 0 ];
+    then
+      for word in "$@"
+      do
+        COMMAND="$COMMAND $word"
+      done
+    fi
   fi
-  eval $COMMAND
 fi
+
+eval $COMMAND

+ 14 - 0
tools/mysql_scripts.sql

@@ -0,0 +1,14 @@
+CREATE DATABASE IF NOT EXISTS fd_session;
+
+CREATE TABLE IF NOT EXISTS `fd_session`.`sessions` (
+  `sess_id` varchar(128) COLLATE utf8_bin NOT NULL,
+  `sess_data` longtext COLLATE utf8_bin NOT NULL,
+  `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;
+
+INSERT INTO `fd3_base`.`tenancy`
+(`id`, `name`, `enabled`) VALUES
+(1,    'Base', 1),
+(2,    'Inicial', 1);

+ 27 - 4
tools/playbook.yml

@@ -4,10 +4,10 @@
   connection: local
   tasks:
     - name: Parameters for base
-      command: "cp /home/gabriel/dev/dind/installer/tools/galvez/base/app/config/parameters.yml.docker /home/gabriel/dev/dind/installer/tools/galvez/base/app/config/parameters.yml"
+      command: "cp {{ playbook_dir }}/base/app/config/parameters.yml.docker {{ playbook_dir }}/base/app/config/parameters.yml"
 
     - name: "Parameters"
-      command: "cp /home/gabriel/dev/dind/installer/tools/galvez/{{ item }}/app/config/parameters.yml.docker /home/gabriel/dev/dind/installer/tools/galvez/{{ item }}/app/config/parameters.yml"
+      command: "cp {{ playbook_dir }}/{{ item }}/app/config/parameters.yml.docker {{ playbook_dir }}/{{ item }}/app/config/parameters.yml"
       with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}"
 
 - name: Launch docker for mysql database. Tag=start_mysql
@@ -32,6 +32,12 @@
         connect_timeout: 15
         timeout: 360
 
+    - name: Run SQL commands against DB to create table
+      mysql_db:
+        login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}"
+        state: import
+        target: "{{ playbook_dir }}/mysql_scripts.sql"
+
     - name: Create database base
       mysql_db:
         name: fd3_base
@@ -108,6 +114,16 @@
       args:
         executable: /bin/bash
 
+    - name: Create user iksop
+      shell: "bin/console user:create iksop soporte@interlink.com.ar gran5pe --super-admin 1"
+      args:
+        executable: /bin/bash
+
+    - name: Create user admin
+      shell: "bin/console user:create admin admi@interlink.com.ar admin 2"
+      args:
+        executable: /bin/bash
+
     - name: Copy file oauth.data.log to host
       fetch:
           src: /opt/base/oauth.data.log
@@ -154,7 +170,14 @@
     - name: "Wait for finished the process cache:clear"
       pause:
         minutes: 1
-    - name: "Doctrine schema update"
-      shell: "bin/console doctrine:schema:update --force'"
 
+    - name: "Doctrine schema update"
+      shell: "bin/console doctrine:schema:update --force"
 
+- name: "Run nginx. Tag=nginx_run"
+  hosts: 127.0.0.1
+  connection: local
+  tags: nginx_run
+  tasks:
+    - name: Docker nginx up
+      command: "docker-compose up -d nginx"

+ 56 - 16
tools/readme.md

@@ -1,33 +1,47 @@
 #Requerimientos
- * [curl](curl)
- * [git](git)
- * [python](python)
- * [pip](pip)
- * [docker](docker)
- * [docker-compose](docker-compose)
- * [php/composer](php/composer)
+ * curl
+ * git
+ * python
+ * pip
+ * docker
+ * docker-compose
+ * php/composer
 
 #Instalación de requerimientos:
 ### curl
     apt-get install curl
+
 ### git
     apt-get install git
+
 ### python
     apt-get install python
+
 ### pip
     # descargo el  archivo get-pip.py desde una url
-    curl https://bootstrap.pypa.io/get-pip.py -output get-pip.py
+    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      
     # instalo pip
     python get-pip.py
      
     # actualizo pip
     pip install -U pip
-### docker
-    pip install docker
+
+### docker (Versión funcional: apt-get install docker-ce=17.10.0~ce-0~debian    - Versión con errores: 17.11 )
+    # con sudo
+    curl -fsSL get.docker.com -o get-docker.sh
+    sudo sh get-docker.sh
+    sudo usermod -aG docker iksop
+            
+    # con root
+    curl -fsSL get.docker.com -o get-docker.sh
+    sh get-docker.sh
+    usermod -aG docker iksop
+        
 ### docker-compose
     pip install docker-compose
-### php/composer
+
+### php/composer-------------
     # con sudo
     curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
     sudo chmod 755 /usr/local/bin/composer
@@ -40,19 +54,32 @@
 # Pasos:
 ####. Crear un directorio para la instalación, puede ser en cualquier lugar del sistema. Tener en cuenta que en este directorio se descargará código fuente.
     mkdir flowdat  
+
 ####. Entrar la directorio.
     cd flowdat
+
 ####. Descargar el fuente de instalación.   
     # en código se descarga en el directorio actual
     git clone git@bitbucket.org:ikflowdat/installer.git .
+
+####. Entrar la directorio tools.
+    cd tools
+
 ####. Construir el docker que se utilizará durante la instalación.
     docker build --build-arg DIR_INSTALL=$(pwd) -t dind .     
     # --build-arg: es la forma de pasarle parámetros al docker.
     # -t: es el nombre que tendrá el contenedor.
     # .: indica que el fuente se descargará en el directorio actual.
     # para más información de los parámetros ejecutar "docker build --help"
+
+####. Instalamos con composer elementos adicionales.
+    docker build --build-arg DIR_INSTALL=$(pwd) -t dind composer install     
+    # --build-arg: es la forma de pasarle parámetros al docker.
+    # -t: es el nombre que tendrá el contenedor.
+    # para más información de los parámetros ejecutar "docker build --help"
+
 ####. Crear los archivos necesarios para la instalción. Dentro del directorio actual se crea un nuevo directorio con el nombre de la empresa. 
-    docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind make:install galvez --domain=galvez
+    docker run -it -v $(pwd):$(pwd) -v /root/galvez:/root/galvez -v /var/run/docker.sock:/tmp/docker.sock dind make:install galvez --domain=galvez
     # docker run: ejecuta un comando sobre el contenedor.
     # -it: significa que voy a tener un tty interativo.
     # -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directario.
@@ -62,8 +89,9 @@
     # 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.
     # para mas informacion ejecutar "docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind make:install --help"
+
 ####. Obtener los fuentes desde bitbucket
-    docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind get:source galvez/git.ini
+    docker run -it -v $(pwd):$(pwd) -v /root/galvez:/root/galvez -v /var/run/docker.sock:/tmp/docker.sock dind get:source galvez/git.ini
     # docker run: ejecuta un comando sobre el contenedor.
     # -it: significa que voy a tener un tty interativo.
     # -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directario.
@@ -72,8 +100,9 @@
     # 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.
     # 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.    
-    docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind fix:nginx galvez
+    docker run -it -v $(pwd):$(pwd) -v /root/galvez:/root/galvez -v /var/run/docker.sock:/tmp/docker.sock dind fix:nginx galvez
     # docker run: ejecuta un comando sobre el contenedor.
     # -it: significa que voy a tener un tty interativo.
     # -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directario.
@@ -81,20 +110,31 @@
     # 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.            
+
 ####. 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
+    docker run -it -v $(pwd):$(pwd) -v /root/galvez:/root/galvez -v /var/run/docker.sock:/tmp/docker.sock dind bash
     # docker run: ejecuta un comando sobre el contenedor.
     # -it: significa que voy a tener un tty interativo.
     # -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directario.
     # -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.
     # bash: significa que se ejecutará un bash.
+
 ####. Una vez dentro del docker entramos al directorio de instalación. 
     cd galvez
+
 ####. 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
     # -i inventory.ini: se el especifica el inventory.ini          
     # -u root: le digo que se ejecutarán las acciones como el usuario "root" 
     # playbook.yml: es el nombre del playbook a ejecutar
-   
+   
+   
+## Unistalls
+#### Docker
+    # con sudo
+    sudo apt-get remove docker docker-engine docker.io docker-ce
+            
+    # con root
+    apt-get remove docker docker-engine docker.io docker-ce

+ 5 - 0
tools/src/Release.php

@@ -194,6 +194,9 @@ class Release extends Command
             ->addOption('cablemodem-repo', null, InputOption::VALUE_REQUIRED, 'Git clone Url for the app Cablemodem', "git@bitbucket.org:ikflowdat/cablemodem.git")
             ->addOption('cablemodem-ref', null, InputOption::VALUE_REQUIRED, 'Git reference (branch or tag) to clone the Cablemodem files and apps', "master")
             ->addOption('cablemodem-build', null, InputOption::VALUE_REQUIRED, 'Generate image build', "false")
+            ->addOption('dhcp-repo', null, InputOption::VALUE_REQUIRED, 'Git clone Url for the app DHCP', "git@bitbucket.org:ikflowdat/dhcp.git")
+            ->addOption('dhcp-ref', null, InputOption::VALUE_REQUIRED, 'Git reference (branch or tag) to clone the DHCP files and apps', "master")
+            ->addOption('dhcp-build', null, InputOption::VALUE_REQUIRED, 'Generate image build', "false")
             ->addOption('extra-repo', null, InputOption::VALUE_REQUIRED, 'Git clone Url fot the app Base', "git@bitbucket.org:ikflowdat/extra.git")
             ->addOption('extra-ref', null, InputOption::VALUE_REQUIRED, 'Git reference (branch or tag) to clone the Extra files and apps', "master")
             ->addOption('extra-build', null, InputOption::VALUE_REQUIRED, 'Generate image build', "false")
@@ -271,6 +274,8 @@ class Release extends Command
             );
             // copio el playbook
             copy(getcwd() . "/playbook.yml", $dObj->dirExists()->realpath()->getPath() . "/playbook.yml");
+            // copio el script de base de datos inicial
+            copy(getcwd() . "/mysql_scripts.sql", $dObj->dirExists()->realpath()->getPath() . "/mysql_scripts.sql");
         } catch (\Throwable $error) {
             var_dump($error->getTraceAsString(), $error->getCode(), $error->getMessage());
         } finally {