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

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

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

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

Служба vRealize Automation Cloud Assembly также позволяет предварительно добавлять команды инициализации в образ компьютера при настройке инфраструктуры. Для всех облачных шаблонов, ссылающихся на исходный образ, выполняется одинаковая инициализация.

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

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

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

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

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

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

      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