É possível adicionar uma seção cloudConfig ao código de modelo do Cloud Assembly, na qual são adicionados comandos de inicialização de máquina, executados no momento da implantação.

formatos de comandos cloudConfig

  • Linux — os comandos de inicialização seguem o padrão aberto cloud-init.
  • Windows — os comandos de inicialização usam Cloudbase-init.

O Linux cloud-init e o Windows Cloudbase-init não compartilham a mesma sintaxe. Uma seção cloudConfig para um sistema operacional não funcionará em uma imagem de máquina do outro sistema operacional.

O que comandos cloudConfig podem fazer

Você usa comandos de inicialização para automatizar a aplicação de dados ou configurações no momento da criação da instância, o que pode personalizar usuários, permissões, instalações ou qualquer outra operação baseada em comando. Exemplos incluem:

  • Configuração de um nome do host
  • Geração e configuração de chaves privadas SSH
  • Instalação de pacotes

Onde comandos cloudConfig podem ser adicionados

Você pode adicionar uma seção cloudConfig ao código do modelo de nuvem, mas também pode adicionar uma seção a uma imagem de máquina com antecedência ao configurar a infraestrutura. Dessa forma, todos os modelos de nuvem que fizerem referência à imagem de origem terão a mesma inicialização.

É possível ter um mapa de imagem e um modelo de nuvem em que ambos contêm comandos de inicialização. No momento da implantação, os comandos são mesclados e o Cloud Assembly executa os comandos consolidados.

Quando o mesmo comando é exibido em ambos os locais, mas inclui parâmetros diferentes, somente o comando de mapa de imagem é executado.

Consulte Saiba mais sobre mapeamentos de imagem no vRealize Automation para obter mais detalhes.

Comandos cloudConfig de exemplo

A seção de exemplo a seguir do cloudConfig é obtida do código de modelo de nuvem para o servidor MySQL baseado em Linux do caso de uso do WordPress.

Observação:

Para garantir a interpretação correta de comandos, sempre inclua o caractere de pipe cloudConfig: |, conforme mostrado.

      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

Se um script de inicialização na nuvem se comportar inesperadamente, verifique a saída do console capturado no /var/log/cloud-init-output.log ao solucionar o problema. Para obter mais informações sobre cloud-init, consulte a documentação de cloud-init.

Comandos e especificações de personalização podem não se misturar

Ao implantar no vSphere, proceda com cuidado se tentar combinar o comando cloudConfig incorporado e a inicialização de especificação de personalização. Eles não são formalmente compatíveis e podem produzir resultados inconsistentes ou indesejados quando usados juntos.

Para obter um exemplo de como os comandos e as especificações de personalização interagem, consulte Endereços IP estáticos do vSphere no Cloud Assembly.