Maak met behulp van uw privileges als softwarearchitect een MySQL Software-onderdeel om MySQL te installeren op vSphere CentOS-machines. Wanneer u het MySQL Software-onderdeel ontwerpt voor een virtual machine met CentOS, configureert u de installatie-, configuratie- en startparameters en de scripts voor het Linux-besturingssysteem.

Voordat u begint

Procedure

  1. Selecteer Ontwerpen > Softwareonderdelen.
  2. Klik op het pictogram Nieuw (Toevoegen).
  3. Voer MySQL voor Linux virtual machines in het tekstvak Naam in.
  4. Controleer of de id wordt gevuld op basis van de opgegeven naam.

    Bijvoorbeeld: Software.MySQLforLinuxVirtualMachines

  5. Voer MySQL-installatie en -configuratie in het tekstvak Beschrijving in.
  6. Selecteer Machine in het vervolgkeuzemenu Container.

    Omdat u MySQL alleen rechtstreeks op een machine wilt laten installeren, beperkt u de mogelijkheden van architecten om het MySQL-Softwareonderdeel boven op andere Softwareonderdelen te plaatsen.

  7. Klik op Volgende.
  8. Klik op Nieuw en voeg de volgende eigenschappen toe aan het installatiescript en configureer deze.

    Klik op OK om elke eigenschap op te slaan.

    Architecten kunnen de Softwareeigenschappen zo configureren dat deze in het aanvraagformulier aan gebruikers worden getoond. Architecten kunnen de optie Weergeven in aanvraag gebruiken om te vereisen of aan te vragen dat gebruikers waarden invullen voor eigenschappen die u als overschrijfbaar aanduidt.

    Naam

    Beschrijving

    Type

    Waarde

    Versleuteld

    Overschrijven toestaan

    Vereist

    Berekend

    db_root_username

    Gebruikersnaam van de databaseroot

    String

    root

    Nee

    Ja

    Ja

    Nee

    JAVA_HOME

    De directory waarin JRE 1.7 wordt geïnstalleerd

    String

    /opt/vmware-jre

    Nee

    Ja

    Ja

    Nee

    global_ftp_proxy

    De URL van de FTP-proxy (indien aanwezig). Niet vereist.

    String

    Nee

    Ja

    Nee

    Nee

    db_port

    MySQL-databasepoort

    String

    Nee

    Ja

    Ja

    Nee

    db_root_password

    Wachtwoord van de databaseroot

    String

    wachtwoord

    Ja

    Ja

    Ja

    Nee

    global_http_proxy

    De URL van de HTTP-proxy (indien aanwezig). Niet vereist.

    String

    Nee

    Ja

    Nee

    Nee

    global_https_proxy

    De URL van de HTTPS-proxy (indien aanwezig). Niet vereist.

    String

    Nee

    Ja

    Nee

    Nee

    max_allowed_packet_size

    De maximaal toegestane pakketgrootte voor de server

    Integer

    1024

    Nee

    Ja

    Nee

    Nee

  9. Klik op Volgende.
  10. Configureer de actie Installeren.
    1. Selecteer Bash in het vervolgkeuzemenu Scripttype.
    2. Klik op Klik hier om te bewerken.
    3. Plak het volgende 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. Klik op OK.
  11. Configureer de actie Configureren.
    1. Selecteer Bash in het vervolgkeuzemenu Scripttype.
    2. Klik op Klik hier om te bewerken.
    3. Plak het volgende 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. Klik op OK.
  12. Configureer de actie Starten.
    1. Selecteer Bash in het vervolgkeuzemenu Scripttype.
    2. Klik op Klik hier om te bewerken.
    3. Plak het volgende script.
      #!/bin/sh
      
      echo "The maximum allowed packet size is: "
      
       
    4. Plaats de cursor tussen de dubbele punt en het aanhalingsteken.
    5. Selecteer max_allowed_packet_size in het vervolgkeuzemenu Eigenschap selecteren die u wilt invoegen.

      De eigenschap is nu aan het script toegevoegd.

      #!/bin/sh
      
      echo "The maximum allowed packet size is: $max_allowed_packet_size" 
      
       
    6. Klik op OK.
  13. Klik op Volgende.
  14. Klik op Voltooien.
  15. Selecteer de rij die MySQL voor Linux virtual machines bevat en klik op Publiceren.

Resultaten

Uw MySQL Software-onderdeel is beschikbaar voor andere architecten op de pagina met blueprintontwerpen, maar u kunt Software-onderdelen niet beschikbaar stellen zolang ze niet met een machine zijn gecombineerd.

Volgende stappen

Combineer uw MySQL-onderdeel met de softwaremachineblueprint voor CentOS met behulp van uw privileges als softwarearchitect, toepassingsarchitect of IaaS-architect. Zie Scenario: een blueprint samenstellen en testen om MySQL te leveren op gekloonde machines die zijn gekoppeld aan Rainpole.