Base de conhecimento  /  Gerenciador de aplicativos em nuvem  /  Automatização de implementações
Base de conhecimento  /  Gerenciador de aplicativos em nuvem  /  Automatização de implementações

Parametrização de caixas com variáveis

Atualizado por Julio Castanar em dez 28, 2018
Código do artigo: kb/413

Neste artigo:

Visão geral

O ciclo de vida de implementação de um aplicativo é parametrizado em caixas usando variáveis. Os parâmetros denotam dados dinâmicos, como as cadeias de conexão com o banco de dados, os pontos de extremidade e as configurações do aplicativo. Já que não há como conhecer todos os valores possíveis para os diferentes ambientes e como você não deseja codificar de modo permanente informações confidenciais, como senhas, é uma boa ideia definir esses dados como variáveis.

Funciona assim: definir variáveis na automação da caixa. Em seguida, faça referências a elas nos scripts de evento da caixa com a sintaxe de modelos Jinja.
Para cada ambiente, como desenvolvimento, preparo e produção, você pode personalizar as implementações ao transmitir valores diferentes para as variáveis. O Cloud Application Manager executa os scripts de evento, substituindo as variáveis pelos valores que você informa no momento da implementação.

Público

Usuários do Cloud Application Manager que utilizam recursos de Application Lifecycle Management (ALM - gerenciamento de ciclo de vida de aplicativos).

Pré-requisitos

  • Acesso ao site Applications (módulo Application Lifecycle Management) do Cloud Application Manager como um usuário autorizado de uma conta ativa do Cloud Application Manager.

  • Um provedor já configurado no Cloud Application Manager. Consulte administrar provedores.

Criação de variáveis

Em uma página de gerenciamento de caixa, na guia Código, clique em Novo e selecione um tipo de variável. Em seguida, especifique um nome e um valor.

Variáveis obrigatórias

Marque as variáveis como porta, texto, arquivo, opções, senha e número como obrigatórias se estiver esperando um valor customizado antes da implementação. Suponha que você defina uma caixa de banco de dados que precisa de um nome de usuário e uma senha para estabelecer a conexão. Nesse ponto, você sabe que eles são necessários, mas não consegue obter seus valores antes do momento da implementação. Portanto, você os marca como obrigatórios.

Visibilidade da variável

Algumas configurações determinam a privacidade da variável, tais como Pública, Privada e Interna.
As variáveis têm visibilidade pública por padrão.

Visibilidade Descrição
Pública: Permite personalizar valores no momento da implementação.
Permite que as caixas primárias e as associações (bindings) vejam e acessem os valores.
Privada: Equivalente à configuração pública, exceto pelo fato de que a associação (bindings) não consegue acessar seus valores.
Interna: Oculta as variáveis no momento da implementação.
As associações (bindings) não conseguem acessar seus valores.

Tipos de variáveis de caixa

As caixas aceitam oito tipos de variáveis, dependendo do tipo de dados ou da utilização, como em qualquer linguagem de programação. São eles: caixa, associação, porta, texto, arquivo, opções, senha e número. Veja a seguir informações sobre cada tipo.

Tipo de caixa

Adicione uma variável de tipo de caixa para consumir a configuração de outra caixa em seu espaço de trabalho. É dessa forma que você cria uma pilha para alcançar aplicativos de várias camadas. Caixas secundárias internas são implementadas na mesma infraestrutura virtual da caixa primária.

Empilhe quantas caixas secundárias quiser, desde que elas correspondam ao tipo Windows ou Linux da caixa primária. Para entender a ordem na qual os scripts das caixas primária e secundárias são executados, consulte Ordem de execução de eventos.

Adicionar uma variável de tipo de caixa

Visibilidade da caixa primária sobre as caixas secundárias
  • Quando empilha uma caixa secundária, você consome suas variáveis e scripts na caixa primária.
  • Não é possível alterar a configuração da caixa secundária na caixa primária, mas você pode alterar os valores das variáveis e os scripts para adequá-los à implementação da caixa primária.

As caixas podem ter versões, que são instantâneos da configuração estável. Ao empilhar uma caixa, selecione uma versão específica (se disponível) ou use a configuração mais recente.

Exemplo

Temos aqui uma variável de caixa chamada INSTALLER que indica a caixa Programa de instalação do pacote, como mostrado.

Você pode acessar todas as variáveis da caixa Programa de instalação do pacote com esta sintaxe:

`{{ BOX_VARIABLE_NAME.VARIABLE_NAME }}`

Você pode também sobregravar seus valores no contexto da caixa primária.

Por exemplo, para acessar a variável UPGRADE_ON_INSTALL na caixa Programa de instalação do pacote a partir de um script de evento na caixa primária, faça o seguinte:

#!/bin/bash
if [[{{ INSTALLER.UPGRADE_ON_INSTALL }} = “false”]] then
echo “It’s false”
fi

Tipo de associação (binding)

As associações (bindings) garantem a conectividade de componentes com aplicativos de várias camadas, pools de balanceamento de carga, serviços de cache e clusters. Cada associação (binding) pode conectar uma ou mais instâncias. Os modelos Jinja nos scripts de configuração da caixa ajudam a consultar os dados de conexão da associação, tais como endereços públicos ou privados, cadeias de conexão, senhas, tokens, portas e muito mais, tudo a partir das instâncias de associação.

Definir associações (bindings)

Para definir uma associação (binding), adicione uma variável do tipo Associação. Em seguida, defina seus critérios de uma destas formas:

  • Qualquer instância de caixa No menu suspenso Valor, selecione Qualquer instância de caixa para fazer a associação (binding) com qualquer instância ativa no espaço de trabalho atual.

    Adicionar a variável do tipo associação (binding)

  • Tipo de caixa específico. No menu suspenso Valor, escolha um tipo de caixa particular dentre as caixas compatíveis com o SO (computação do Windows ou Linux) no espaço de trabalho. É recomendável essa opção, pois ela permite a associação com instâncias ativas no espaço de trabalho que correspondem ao tipo de caixa.

Conectar instâncias no momento da implementação usando associações (bindings)

Para conectar instâncias no momento da implementação usando associações, consulte o documento sobre associação.

Obtendo dados de conexão da associação

Aplique os modelos Jinja às variáveis de associação no script de configuração da caixa para obter os dados de conexão da instância ou outros valores.

Exemplo

Neste exemplo, para uma associação chamada bindingA, podemos obter os dados de conexão de todas as instâncias às quais a bindingA aponta com esta referência Jinja:

{% for binding in bindingA %}
        server {{ binding.address.private or binding.address.public }}:{{ binding.http or
                    binding.https or fallback_binding_port }};
{% endfor %}
}

Para obter o valor de uma variável denominada como connection_string, aplicamos este Jinja para pesquisar a associação com a primeira instância implementada:

`{{ bindingA[0].connection_string }}`

Como alternativa ao Jinja, você pode fazer a mesma coisa usando expressões de texto. Por exemplo, como as caixas do CloudFormation não comportam scripts de evento, você pode usar variáveis de expressão de texto para processar as conexões de associação.

Tipo de porta

Use-o para armazenar informações da porta TCP/IP. Acesse-o a partir dos scripts de evento usando Jinja, exatamente como as variáveis de texto. No momento da implementação, o Cloud Application Manager usa essa porta para abrir uma conexão com a instância, case você selecione a opção de grupo de segurança Automático no perfil de implementação.

Adicionar uma variável de tipo de porta

Tipo de texto

Use esse tipo para armazenar cadeias, como nomes de usuário, caminhos, nomes de arquivo, cadeias de conexão, URL de ponto de extremidade, valores de associação e assim por diante.

Adicionar uma variável de tipo de texto

Especifique-as em texto sem formatação ou como expressões.

  • O texto sem formatação pode conter qualquer valor de cadeia.
  • Uma expressão pode combinar valores de cadeia, bem como variáveis nas caixas primária ou secundárias.

Mais sobre as expressões de texto:

  • Use expressões para gerar cadeias para associações (bindings) ou transmitir valores entre caixas durante a implementação.

  • As expressões de texto lhe poupam a complexidade de armazenar e transmitir as cadeias em scripts de evento. Elas permitem gerenciar as alterações de configuração das caixas em um local, em vez de em vários scripts.

  • Os modelos do CloudFormation não permitem scripts de evento. Portanto, ao fazer associações de caixas do CloudFormation, use expressões de texto para armazenar referências de variável de associação.

  • Para fazer referência às variáveis, siga esta sintaxe Jinja: você pode percorrer qualquer número de caixas secundárias.

    * Parent box variables: `{{ variable_name }}`
    * Child box variables one level deep: `{{ child_box.variable_name }}`
    * Child box variables two levels deep: `{{ child_box_1.child_box_2.variable_name }}`
    
Exemplos
  • Uma variável de texto sem formatação chamada USERNAME é usada para criar um diretório na máquina virtual utilizando o nome de usuário fornecido pelo usuário que implementa a caixa. Veja como ela é usada no script de evento para fazer isso:

    #!/bin/bash
    su - {{ USERNAME }} “mkdir .ssh”
    
  • Veja aqui outro exemplo de duas caixas do CloudFormation que se conectam por meio de uma associação usando uma expressão de texto:
    Uma caixa EC2 se associa a uma caixa do CloudFormation do grupo de segurança por meio de uma associação chamada CFBinding. Para transmitir a cadeia de conexão da associação, a caixa EC2 tem uma expressão de texto definida como

    `{{ CFBinding.InstanceID }}`
    

    Aqui, CFBinding se refere à caixa do CloudFormation do grupo de segurança, na qual InstanceId é uma variável. Como resultado, quando implementada, a caixa EC2 inicia uma instância do Linux em um grupo de segurança usando o CloudFormation.

Tipo de arquivo

Use-o para carregar um arquivo com dados binários ou ASCII. Normalmente, os arquivos armazenam dados de configuração usados por aplicativos.

Adicionar uma variável de tipo de arquivo

Mais sobre as variáveis de tipo de arquivo:

  • Cada arquivo pode ter até 10 MB.
  • Use um script de evento na caixa para baixar o arquivo na máquina virtual durante a implementação.
  • Os arquivos podem conter referências a variáveis, inclusive variáveis de tipo de caixa ou associação. Mas para tomar medidas com base nelas, você deve executar o arquivo com um comando config em um script de evento da caixa.
Exemplo

Suponha que você carregue um arquivo de configuração em uma variável de arquivo chamada CONFIG_PARAMS. E seu código se refere a algumas variáveis na caixa.

Para acessar esse arquivo a partir de um script de evento na caixa, use um comando como cURL ou WGET para baixar e gravar no arquivo do sistema de arquivos da máquina virtual.

#!/bin/bash
curl -ks {{ CONFIG_PARAMS }} -o

Como o arquivo se refere às variáveis na caixa, transmita o arquivo por meio do comando config do Cloud Application Manager de um script de evento, como mostrado. O Cloud Application Manager substitui essas variáveis por valores dinâmicos ao implementar a caixa:

#!/bin/bash
curl -ks {{ CONFIG_PARAMS }} | elasticbox config -o /tmp/configfile.cf

Tipo de opções

Use-o para fornecer um menu suspenso de valores para que os usuários escolham ao implementar a caixa.

Adicionar a variável de tipo de opções

Exemplo

Veja aqui uma variável chamada TRUE_OR_FALSE com dois valores possíveis: verdadeiro e falso.
Acesse a variável de opção a partir de um script de evento exatamente como você faria com a variável de texto.

#!/bin/bash
if [[ “{{ TRUE_OR_FALSE }}” = “true” ]] then
echo “the value is true”
fi

Tipo de senha

Use-o para atribuir um valor de cadeia confidencial que é oculto pela interface do Cloud Application Manager. Acesse-o exatamente como variáveis de texto nos scripts de evento. Tipicamente, você usa senhas para conceder acesso às contas administrativas à máquina virtual ou ao aplicativo nela.

Adicionando uma variável de tipo de senha

Exemplo

Este script retorna o valor de uma variável de senha.

echo This returns the value of {{ DB_PASSWORD }}

Tipo de número

Use-o para armazenar valores inteiros e acessá-los nos scripts de evento exatamente como variáveis de texto.

Adicionar uma variável de tipo de texto

Exemplo

Este script retorna o valor de uma variável de número.

echo This returns the value of ${COUNT}

Como contatar o suporte do Cloud Application Manager

Lamentamos que você tenha encontrado um problema com o Cloud Application Manager. Consulte as dicas de troubleshooting ou entre em contato com o suporte do Cloud Application Manager e apresente detalhes e capturas de tela, conforme possível.

Para problemas relacionados a chamadas de API, envie o corpo da solicitação junto com os detalhes referentes ao problema.

Em caso de erro de caixa, compartilhe a caixa no espaço de trabalho que sua organização e o Cloud Application Manager podem acessar e anexe os registros.

  • Linux: SSH e localize o registro em /var/log/elasticbox/elasticbox-agent.log
  • Windows: RDP na instância para localizar o registro em \ProgramData\ElasticBox\Logs\elasticbox-agent.log
Powered by Translations.com GlobalLink OneLink SoftwarePowered By OneLink