Mit Ihren Rechten als Softwarearchitekt erstellen Sie eine MySQL-Softwarekomponente, um MySQL auf vSphere CentOS-Maschinen zu installieren. Beim Entwerfen der MySQL-Softwarekomponente für eine virtuelle CentOS-Maschine konfigurieren Sie die Installations-, Konfigurations- und Startparameter sowie die Skripts für Linux-Betriebssysteme.

Vorbereitungen

Prozedur

  1. Wählen Sie Design > Softwarekomponenten aus.
  2. Klicken Sie auf das Symbol Neu (Hinzufügen).
  3. Geben Sie MySQL für virtuelle Linux-Maschinen in das Textfeld Name ein.
  4. Stellen Sie sicher, dass der Bezeichner dem angegebenen Namen entsprechend aufgefüllt wird.

    Beispiel: Software.MySQLforLinuxVirtualMachines

  5. Geben Sie MySQL-Installation und -Konfiguration in das Textfeld Beschreibung ein.
  6. Wählen Sie Maschine aus dem Dropdown-Menü Container aus.

    Da MySQL nur direkt auf einer Maschine installiert werden soll, wird vermieden, dass Architekten Ihre MySQL Software-Komponente auf anderen Software-Komponenten ablegen.

  7. Klicken Sie auf Weiter.
  8. Klicken Sie auf Neu, um daraufhin jede der folgenden Eigenschaften für das Installationsskript hinzuzufügen und zu konfigurieren.

    Klicken Sie auf OK, um die einzelnen Eigenschaften zu speichern.

    Architekten können Ihre Software-Eigenschaften so konfigurieren, dass diese Benutzern im Anforderungsformular angezeigt werden. Über die Option „In Anforderung anzeigen“ können Architekten von den Benutzern verlangen oder diese dazu auffordern, Werte für Eigenschaften einzugeben, die Sie als überschreibbar markieren.

    Name

    Beschreibung

    Typ

    Wert

    Verschlüsselt

    Überschreiben zulassen

    Erforderlich

    Computing

    db_root_username

    Root-Benutzername der Datenbank

    String

    root

    Nein

    Ja

    Ja

    Nein

    JAVA_HOME

    Das Verzeichnis, in dem JRE 1.8 oder höher installiert ist

    String

    /opt/vmware-jre

    Nein

    Ja

    Ja

    Nein

    global_ftp_proxy

    URL des FTP-Proxys, sofern vorhanden. Nicht erforderlich.

    String

    Nein

    Ja

    Nein

    Nein

    db_port

    MySQL-Datenbankport

    String

    Nein

    Ja

    Ja

    Nein

    db_root_password

    Root-Benutzerkennwort der Datenbank

    String

    Kennwort

    Ja

    Ja

    Ja

    Nein

    global_http_proxy

    URL des HTTP-Proxys, sofern vorhanden. Nicht erforderlich.

    String

    Nein

    Ja

    Nein

    Nein

    global_https_proxy

    URL des HTTPS-Proxys, sofern vorhanden. Nicht erforderlich.

    String

    Nein

    Ja

    Nein

    Nein

    max_allowed_packet_size

    Maximal zulässige Paketgröße für den Server

    Integer

    1024

    Nein

    Ja

    Nein

    Nein

  9. Klicken Sie auf Weiter.
  10. Konfigurieren Sie die Aktion „Installieren“.
    1. Wählen Sie Bash aus dem Dropdown-Menü Skripttyp aus.
    2. Klicken Sie auf Zum Bearbeiten hier klicken.
    3. Fügen Sie das folgende Skript ein.
      #!/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. Klicken Sie auf OK.
  11. Konfigurieren Sie die Aktion „Konfigurieren“.
    1. Wählen Sie Bash aus dem Dropdown-Menü Skripttyp aus.
    2. Klicken Sie auf Zum Bearbeiten hier klicken.
    3. Fügen Sie das folgende Skript ein.
      #!/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. Klicken Sie auf OK.
  12. Konfigurieren Sie die Aktion „Start“.
    1. Wählen Sie Bash aus dem Dropdown-Menü Skripttyp aus.
    2. Klicken Sie auf Zum Bearbeiten hier klicken.
    3. Fügen Sie das folgende Skript ein.
      #!/bin/sh
      
      echo "The maximum allowed packet size is: "
      
       
    4. Setzen Sie den Cursor zwischen den Doppelpunkt und das Anführungszeichen.
    5. Wählen Sie max_allowed_packet_size aus dem Dropdown-Menü Einzufügende Eigenschaft auswählen aus.

      Die Eigenschaft ist jetzt im Skript enthalten.

      #!/bin/sh
      
      echo "The maximum allowed packet size is: $max_allowed_packet_size" 
      
       
    6. Klicken Sie auf OK.
  13. Klicken Sie auf Weiter.
  14. Klicken Sie auf Fertig stellen.
  15. Wählen Sie die Zeile aus, die „MySQL für virtuelle Linux-Maschinen“ enthält, und klicken Sie auf Veröffentlichen.

Ergebnisse

Ihre MySQL-Softwarekomponente steht anderen Architekten auf der Blueprint-Design-Seite zur Verfügung. Softwarekomponenten können aber erst verfügbar gemacht werden, wenn Sie sie mit einer Maschine kombinieren.

Nächste Maßnahme

Mit Ihren Rechten als Softwarearchitekt, Anwendungsarchitekt oder IaaS-Architekt kombinieren Sie Ihre MySQL-Komponente mit dem Blueprint für die CentOS für Software-Maschine. Siehe Szenario: Zusammenfügen und Testen eines Blueprints zur Bereitstellung von MySQL auf Rainpole-verknüpften Klon-Maschinen.