Используя привилегии программного архитектора, можно создать компонент MySQL Программное обеспечение для установки MySQL на компьютерах vSphere CentOS. При разработке компонента MySQL Программное обеспечение для виртуальной машины CentOS нужно настроить параметры и сценарии установки, настройки и запуска для операционных систем Linux.

Необходимые условия

Процедура

  1. Выберите Проектирование > Компоненты программного обеспечения.
  2. Выберите значок Создать (Добавить).
  3. В текстовом поле Имя введите MySQL для виртуальных машин Linux.
  4. Убедитесь, что идентификатор указывается с учетом указанного имени.
    Например, Software.MySQLforLinuxVirtualMachines.
  5. В текстовом поле Описание введите Установка и настройка MySQL.
  6. В раскрывающемся меню Контейнер выберите Компьютер.
    Так как MySQL нужно установить только непосредственно на компьютер, нужно установить для архитекторов ограничение, согласно которому они не могут добавлять компоненты Программное обеспечение MySQL поверх других компонентов Программное обеспечение.
  7. Нажмите кнопку Далее.
  8. Нажмите кнопку Создать и добавьте и настройте каждое из следующих свойств для сценария установки.
    Нажмите кнопку ОК, чтобы сохранить каждое из свойств.
    Архитекторы могут настроить свойства Программное обеспечение таким образом, чтобы они отображались в форме запроса для пользователей. Архитекторы могут использовать параметр «Показать в запросе», который позволяет отображать запрос на указание значений свойств, помеченных как допускающие переопределение.
    Имя Описание Type Значение Зашифровано Переопределение Обязательно Вычисл.
    db_root_username Имя пользователя root базы данных Строка root Нет Да Да Нет
    JAVA_HOME Каталог, в котором установлена среда JRE 1.8 или более поздняя версия Строка /opt/vmware-jre Нет Да Да Нет
    global_ftp_proxy URL-адрес прокси-сервера FTP, если такой имеется. Необязательная строка. Строка Нет Да Нет Нет
    db_port Порт базы данных MySQL Строка Нет Да Да Нет
    db_root_password Пароль пользователя root базы данных Строка пароль Да Да Да Нет
    global_http_proxy URL-адрес прокси-сервера HTTP, если такой имеется. Необязательная строка. Строка Нет Да Нет Нет
    global_https_proxy URL-адрес прокси-сервера HTTPS, если такой имеется. Необязательная строка. Строка Нет Да Нет Нет
    max_allowed_packet_size Максимально допустимый размер пакета на сервере Integer 1024 Нет Да Нет Нет
  9. Нажмите кнопку Далее.
  10. Настройте действие «Установить».
    1. а. В раскрывающемся списке Тип сценария выберите пункт Bash.
    2. б. Щелкните Чтобы редактировать, щелкните здесь.
    3. в. Вставьте следующий сценарий.
      #!/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. г. Нажмите кнопку ОК.
  11. Настройте действие «Настроить».
    1. а. В раскрывающемся списке Тип сценария выберите пункт Bash.
    2. б. Щелкните Чтобы редактировать, щелкните здесь.
    3. в. Вставьте следующий сценарий.
      #!/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. г. Нажмите кнопку ОК.
  12. Настройте действие «Пуск».
    1. а. В раскрывающемся списке Тип сценария выберите пункт Bash.
    2. б. Щелкните Чтобы редактировать, щелкните здесь.
    3. в. Вставьте следующий сценарий.
      #!/bin/sh
      
      echo "The maximum allowed packet size is: "
      
       
    4. г. Поместите курсор между двоеточием и кавычкой.
    5. д. В раскрывающемся списке Выбрать сценарий, который нужно вставить выберите max_allowed_packet_size.
      Теперь сценарий содержит свойство.
      #!/bin/sh
      
      echo "The maximum allowed packet size is: $max_allowed_packet_size" 
      
       
    6. е. Нажмите кнопку ОК.
  13. Нажмите кнопку Далее.
  14. Щелкните элемент Готово.
  15. Выберите строку, содержащую «MySQL для виртуальных машин Linux» и щелкните Опубликовать.

Результаты

Компонент MySQL Программное обеспечение доступен для других архитекторов на странице проекта схемы элементов, но компоненты Программное обеспечение остаются недоступными, пока их не объединили с компьютером.

Дальнейшие действия

Используя привилегии программного архитектора, проектировщика архитектуры приложений или архитектора инфраструктуры как услуги, можно объединить компоненты MySQL и CentOS для схемы элементов программных компонентов. См. раздел Сценарий: создание контейнера для MySQL в схеме элементов CentOS Rainpole.