Mediante el uso de sus privilegios de arquitecto de software, cree un componente de Software MySQL para instalar MySQL en máquinas de vSphere CentOS. Cuando diseña el componente de Software MySQL para una máquina virtual de CentOS, configura los parámetros de instalación, configuración e inicio, además de los scripts para los sistemas operativos Linux.

Antes de empezar

Procedimiento

  1. Seleccione Diseño > Componentes de software.
  2. Haga clic en el icono Nuevo (Añadir).
  3. Escriba MySQL para máquinas virtuales de Linux en el cuadro de texto Nombre.
  4. Compruebe que se rellene el identificador en función del nombre proporcionado.

    Por ejemplo, Software.MySQLparamáquinasvirtualesdeLinux.

  5. Escriba Instalación y configuración de MySQL en el cuadro de texto Descripción.
  6. Seleccione Máquina en el menú desplegable Contenedor.

    Como solo quiere que MySQL se instale directamente en una máquina, impida que los arquitectos coloquen su componente de Software MySQL sobre otros componentes de Software.

  7. Haga clic en Siguiente.
  8. Haga clic en Nuevo y añada y configure cada una de las siguientes propiedades para el script de instalación.

    Haga clic en Aceptar para guardar cada propiedad.

    Los arquitectos pueden configurar las propiedades de Software para mostrárselas a los usuarios en el formulario de solicitud. Los arquitectos pueden usar la opción Mostrar en solicitud para requerir o solicitar que los usuarios proporcionen valores para las propiedades que marque como reemplazables.

    Nombre

    Descripción

    Tipo

    Valor

    Cifrada

    Permitir reemplazo

    Obligatoria

    Computada

    db_root_username

    Nombre de usuario raíz de la base de datos

    Cadena

    root

    No

    No

    JAVA_HOME

    Directorio donde se instala JRE 1.7

    Cadena

    /opt/vmware-jre

    No

    No

    global_ftp_proxy

    URL del proxy FTP, si lo hay. No es necesaria.

    Cadena

    No

    No

    No

    db_port

    Puerto de base de datos MySQL

    Cadena

    No

    No

    db_root_password

    Contraseña de usuario raíz de la base de datos

    Cadena

    contraseña

    No

    global_http_proxy

    URL del proxy HTTP, si lo hay. No es necesaria.

    Cadena

    No

    No

    No

    global_https_proxy

    URL del proxy HTTPS, si lo hay. No es necesaria.

    Cadena

    No

    No

    No

    max_allowed_packet_size

    Tamaño máximo permitido de paquete de servidor

    Integer

    1024

    No

    No

    No

  9. Haga clic en Siguiente.
  10. Configure la acción Instalar.
    1. Seleccione Bash en el menú desplegable Tipo de script.
    2. Haga clic en Haga clic aquí para editar.
    3. Pegue el siguiente script.
      #!/bin/bash
      
      #Setting proxies
      export ftp_proxy=${ftp_proxy:-$global_ftp_proxy}
      echo "Setting ftp_proxy to $ftp_proxy"
      
      export http_proxy=${http_proxy:-$global_http_proxy}
      echo "Setting http_proxy to $http_proxy"
      
      export https_proxy=${https_proxy:-$global_https_proxy}
      echo "Setting https_proxy to $https_proxy"
      
      #
      # Determine operating system and version 
      #
      export OS=
      export OS_VERSION=
      
      if [ -f /etc/redhat-release ]; then
          # For CentOS the result will be 'CentOS'
          # For RHEL the result will be 'Red'
          OS=$(cat /etc/redhat-release | awk {'print $1'})
      
          if [ -n $OS ] && [ $OS = 'CentOS' ]; then
              OS_VERSION=$(cat /etc/redhat-release | awk '{print $3}')
          else
              # RHEL
              OS_VERSION=$(cat /etc/redhat-release | awk '{print $7}')
          fi
      
      elif [ -f /etc/SuSE-release ]; then
          OS=SuSE
      
          MAJOR_VERSION=$(cat /etc/SuSE-release | grep VERSION | awk '{print $3}')
          PATCHLEVEL=$(cat /etc/SuSE-release | grep PATCHLEVEL | awk '{print $3}')
      
          OS_VERSION="$MAJOR_VERSION.$PATCHLEVEL"
      
      elif [ -f /usr/bin/lsb_release ]; then
          # For Ubuntu the result is 'Ubuntu'
          OS=$(lsb_release -a 2> /dev/null | grep Distributor | awk '{print $3}')
          OS_VERSION=$(lsb_release -a 2> /dev/null | grep Release | awk '{print $2}')
      
      fi
      
      echo "Using operating system '$OS' and version '$OS_VERSION'"
      
      if [ "x${global_http_proxy}" == "x" ] || [ "x${global_https_proxy}" == "x" ] ||
         [ "x${global_ftp_proxy}" == "x" ]; then
         echo ""
         echo "###############################################################"
         echo "#  One or more PROXY(s) not set. Network downloads may fail   #"
         echo "###############################################################"
         echo ""
      fi
      
      export PATH=$PATH:$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      set -e
      
      # Tested on CentOS
      if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
          # SELinux can be disabled by setting "/usr/sbin/setenforce Permissive"
          echo 'SELinux in enabled on this VM template.  This service requires SELinux to be disabled to install successfully'
          exit 1
      fi
      
      if [ "x$OS" != "x" ] && [ "$OS" = 'Ubuntu' ]; then
          # Fix the linux-firmware package 
          export DEBIAN_FRONTEND=noninteractive
          apt-get install -y linux-firmware < /dev/console > /dev/console 
          # Install MySQL package 
          apt-get install -y mysql-server
      else 
          yum --nogpgcheck --noplugins -y install -x MySQL-server-community mysql-server
      fi
      
      # Set Install Path to the default install path (For monitoring)
      Install_Path=/usr
      echo Install_Path is set to $Install_Path, please modify this script if the install path is not correct.
    4. Haga clic en Aceptar.
  11. Configure la acción Configurar.
    1. Seleccione Bash en el menú desplegable Tipo de script.
    2. Haga clic en Haga clic aquí para editar.
    3. Pegue el siguiente script.
      #!/bin/bash
      
      #Setting proxies
      export ftp_proxy=${ftp_proxy:-$global_ftp_proxy}
      echo "Setting ftp_proxy to $ftp_proxy"
      
      export http_proxy=${http_proxy:-$global_http_proxy}
      echo "Setting http_proxy to $http_proxy"
      
      export https_proxy=${https_proxy:-$global_https_proxy}
      echo "Setting https_proxy to $https_proxy"
      
      #
      # Determine operating system and version 
      #
      export OS=
      export OS_VERSION=
      
      if [ -f /etc/redhat-release ]; then
          # For CentOS the result will be 'CentOS'
          # For RHEL the result will be 'Red'
          OS=$(cat /etc/redhat-release | awk {'print $1'})
      
          if [ -n $OS ] && [ $OS = 'CentOS' ]; then
              OS_VERSION=$(cat /etc/redhat-release | awk '{print $3}')
          else
              # RHEL
              OS_VERSION=$(cat /etc/redhat-release | awk '{print $7}')
          fi
      
      elif [ -f /etc/SuSE-release ]; then
          OS=SuSE
      
          MAJOR_VERSION=$(cat /etc/SuSE-release | grep VERSION | awk '{print $3}')
          PATCHLEVEL=$(cat /etc/SuSE-release | grep PATCHLEVEL | awk '{print $3}')
      
          OS_VERSION="$MAJOR_VERSION.$PATCHLEVEL"
      
      elif [ -f /usr/bin/lsb_release ]; then
          # For Ubuntu the result is 'Ubuntu'
          OS=$(lsb_release -a 2> /dev/null | grep Distributor | awk '{print $3}')
          OS_VERSION=$(lsb_release -a 2> /dev/null | grep Release | awk '{print $2}')
      
      fi
      
      echo "Using operating system '$OS' and version '$OS_VERSION'"
      
      if [ "x${global_http_proxy}" == "x" ] || [ "x${global_https_proxy}" == "x" ] ||
         [ "x${global_ftp_proxy}" == "x" ]; then
         echo ""
         echo "###############################################################"
         echo "#  One or more PROXY(s) not set. Network downloads may fail   #"
         echo "###############################################################"
         echo ""
      fi
      
      export PATH=$PATH:$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      set -e
      
      # Locate the my.cnf file 
      my_cnf_file=
      if [ -f /etc/my.cnf ]; then 
          my_cnf_file=/etc/my.cnf
      elif [ -f /etc/mysql/my.cnf ]; then 
          my_cnf_file=/etc/mysql/my.cnf
      fi
      
      if [ "x$my_cnf_file" = "x" ]; then 
          echo "Neither /etc/my.cnf nor /etc/mysql/my.cnf can be found, stopping configuration"
          exit 1
      fi
      
      # update mysql configuration to handle big packets
      sed -ie "s/\[mysqld\]/\[mysqld\]\n\
      max_allowed_packet=$max_allowed_packet/g" $my_cnf_file
      # update listening port
      sed -ie "s/\[mysqld\]/\[mysqld\]\n\
      port=$db_port/g" $my_cnf_file
      
      sed -i "s/port.*=.*[0-9]*/port=$db_port/g" $my_cnf_file
      
      if [ "x$OS" != "x" ] && [ "$OS" = 'Ubuntu' ]; then
          # Make sure that MySQL is started 
          service mysql restart
      else 
          # set up auto-start on booting
          chkconfig mysqld on
          # restart mysqld service
          service mysqld start
      fi
      
      # this will assign a password for mysql admin user 'root'
      mysqladmin -u $db_root_username password $db_root_password
       
    4. Haga clic en Aceptar.
  12. Configure la acción Iniciar.
    1. Seleccione Bash en el menú desplegable Tipo de script.
    2. Haga clic en Haga clic aquí para editar.
    3. Pegue el siguiente script.
      #!/bin/sh
      
      echo "The maximum allowed packet size is: "
      
       
    4. Coloque el cursor entre los dos puntos y el signo de comillas.
    5. Seleccione max_allowed_packet_size en el menú desplegable Seleccione una propiedad para insertar.

      Ahora el script incluye la propiedad.

      #!/bin/sh
      
      echo "The maximum allowed packet size is: $max_allowed_packet_size" 
      
       
    6. Haga clic en Aceptar.
  13. Haga clic en Siguiente.
  14. Haga clic en Finalizar.
  15. Seleccione la fila que contiene MySQL para máquinas virtuales de Linux y haga clic en Publicar.

Resultados

Su componente de Software MySQL está disponible para otros arquitectos en la página de diseño de blueprint, pero no puede poner a disposición los componentes de Software hasta que los combine con una máquina.

Qué hacer a continuación

Mediante el uso de sus privilegios de arquitecto de software, arquitecto de aplicaciones o arquitecto de IaaS, combine su componente de MySQL con CentOS para blueprint de máquina de Software. Consulte Escenario: Ensamblar y probar un blueprint para suministrar MySQL en máquinas de clones vinculados de Rainpole.