В код шаблона vRealize Automation Cloud Assembly можно добавить раздел cloudConfig, который будет содержать команды инициализации компьютера, выполняемые во время развертывания.

Формирование команд cloudConfig

  • В ОС Linux команды инициализации соответствуют открытому стандарту cloud-init.
  • В ОС Windows для поддержки команд инициализации используется служба Cloudbase-init.

В командах cloud-init (Linux) и Cloudbase-init (Windows) используется разный синтаксис. Раздел cloudConfig для одной операционной системы не будет работать в образе компьютера другой операционной системы.

Функции команд cloudConfig

Команды инициализации используются для автоматизации применения данных или параметров во время создания экземпляра. С их помощью можно настраивать пользователей, разрешения, устанавливаемые решения и любые другие операции на основе выполнения команд. Примеры

  • Настройка имени узла
  • Создание и настройка закрытых ключей SSH
  • Установка пакетов

Куда можно добавлять команды cloudConfig

Раздел cloudConfig можно добавить в код облачного шаблона, но при настройке инфраструктуры данный раздел также можно заранее добавить в образ компьютера. В этом случае выполняется одинаковая инициализация всех облачных шаблонов, ссылающихся на исходный образ.

Команды инициализации могут содержаться как в облачном шаблоне, так и в сопоставлении образа. Во время развертывания происходит объединение команд, и в службе vRealize Automation Cloud Assembly запускаются консолидированные команды.

Если команда присутствует и в схеме элементов, и в сопоставлении образа, но ее параметры различаются, то выполняется только команда из сопоставления образа.

Дополнительные сведения см. в разделе Дополнительные сведения о сопоставлении образов в vRealize Automation.

Примеры команд cloudConfig

Следующий пример раздела cloudConfig взят из кода облачного шаблона для сервера MySQL на базе Linux (этот код используется для примера использования WordPress).

Примечание:

Чтобы обеспечить правильную интерпретацию команд, всегда указывайте символ канала cloudConfig: |, как показано ниже.

      cloudConfig: |
        #cloud-config
        repo_update: true
        repo_upgrade: all
        packages:
         - apache2
         - php
         - php-mysql
         - libapache2-mod-php
         - php-mcrypt
         - mysql-client
        runcmd:
         - mkdir -p /var/www/html/mywordpresssite && cd /var/www/html && wget https://wordpress.org/latest.tar.gz && tar -xzf /var/www/html/latest.tar.gz -C /var/www/html/mywordpresssite --strip-components 1
         - i=0; while [ $i -le 5 ]; do mysql --connect-timeout=3 -h ${DBTier.networks[0].address} -u root -pmysqlpassword -e "SHOW STATUS;" && break || sleep 15; i=$((i+1)); done
         - mysql -u root -pmysqlpassword -h ${DBTier.networks[0].address} -e "create database wordpress_blog;"
         - mv /var/www/html/mywordpresssite/wp-config-sample.php /var/www/html/mywordpresssite/wp-config.php
         - sed -i -e s/"define( 'DB_NAME', 'database_name_here' );"/"define( 'DB_NAME', 'wordpress_blog' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_USER', 'username_here' );"/"define( 'DB_USER', 'root' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_PASSWORD', 'password_here' );"/"define( 'DB_PASSWORD', 'mysqlpassword' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_HOST', 'localhost' );"/"define( 'DB_HOST', '${DBTier.networks[0].address}' );"/ /var/www/html/mywordpresssite/wp-config.php
         - service apache2 reload

Если сценарий cloud-init имеет непредвиденное поведение, проверьте выходные данные на консоли в /var/log/cloud-init-output.log в ходе устранения неполадок. Дополнительные сведения о cloud-init см. в документации по cloud-init.

Команды и спецификации настройки не всегда можно использовать совместно

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

Пример взаимодействия команд и спецификаций настройки см. в Назначение статического IP-адреса vSphere в облачных шаблонах vRealize Automation Cloud Assembly.