Menu Docs

Criar configurações de modelo com expansões

O Atlas App Services oferece suporte a um operador de substituição (%()) que resolve dinamicamente expansões JSON como %%environment em seus arquivos de configuração. Quando você cria um novo aplicativo com arquivos de configuração que incluem expansões (com o App Services CLI ou por meio do GitHub), o App Services resolve automaticamente as expansões e usa os arquivos de configuração resolvidos para criar o aplicativo.

Os arquivos de configuração que usam o operador de substituição são modelos. Após criar um aplicativo a partir de um modelo, o aplicativo utiliza uma cópia dos arquivos de configuração que refletem os valores resolvidos no momento em que o aplicativo foi criado. Você pode usar o mesmo modelo para criar vários aplicativos com configurações diferentes.

Importante

Atualmente, o operador de substituição é suportado apenas para campos de configuração com valores de string. Você não pode usar expansões para valores booleanos, numéricos, de objeto ou de array.

Por exemplo, você pode utilizar expansões para modelar o campo clusterName :

Configuração da fonte de dados do modelo válido
{
"name": "mongodb-atlas",
"type": "mongodb-atlas",
"config": {
"clusterName": "%(%%environment.values.clusterName)",
"readPreference": "primaryPreferred",
"wireProtocolEnabled": false
}
}

Mas você não pode usar expansões para modelar o campo wireProtocolEnabled porque ele tem um valor booleano:

Configuração do conjunto de dados do modelo inválido
{
"name": "mongodb-atlas",
"type": "mongodb-atlas",
"config": {
"clusterName": "Cluster0",
"readPreference": "primaryPreferred",
"wireProtocolEnabled": %(%%environment.values.wireProtocolEnabled)
}
}
1

Você pode usar expansões para criar o modelo de qualquer ambiente. Para cada ambiente que você utiliza, defina valores que você referencia em seus arquivos de configuração.

Exemplo

Os seguintes ambientes configuram diferentes nomes de MongoDB Atlas cluster:

environments/development.json
{
"values": {
"clusterName": "atlas-development"
}
}
environments/production.json
{
"values": {
"clusterName": "atlas-production"
}
}
2

Você pode referenciar qualquer valor de ambiente de um arquivo de configuração com o operador de substituição %() e a expansão %%environment . Defina expansões para cada arquivo de configuração que você deseja modelar.

Exemplo

O seguinte arquivo de configuração de modelo para o conjunto de dados mongodb-atlas utiliza expansões para resolver dinamicamente clusterName com base no ambiente:

data_sources/mongodb-atlas/config.json
{
"name": "mongodb-atlas",
"type": "mongodb-atlas",
"config": {
"clusterName": "%(%%environment.values.clusterName)",
"readPreference": "primaryPreferred",
"wireProtocolEnabled": true
}
}
3

Escolha em qual ambiente implantar seu aplicativo e, em seguida, atualize a configuração do aplicativo com o nome do ambiente:

root_config.json
{
"name": "MyApp",
"environment": "development",
"deployment_model": "LOCAL",
"location": "aws-us-east-1"
}

Dica

Se você não especificar um ambiente, as expansões do %%environment resolverão para valores no environments/no-environment.json.

4

Agora você pode usar seus arquivos de configuração modelo para criar um novo aplicativo no ambiente escolhido.

Exemplo

O App Services usa a configuração do modelo para gerar novos arquivos de configuração resolvidos na importação:

appservices push
data_sources/mongodb-atlas/config.json
{
"name": "mongodb-atlas",
"type": "mongodb-atlas",
"config": {
"clusterName": "atlas-development",
"readPreference": "primaryPreferred",
"wireProtocolEnabled": true
}
}

Você pode usar expansões de configuração para qualquer aplicação, mas o caso mais útil é para equipe que desenvolve um aplicativo de produção com arquivos de código-fonte armazenados em um sistema de controle de versão externo como o GitHub. Você pode criar aplicativos independentes para desenvolver recursos ou testar alterações e usar expansões para personalizar os aplicativos com base em seu ambiente.

  1. Crie uma cópia do modelo comum com o ambiente configurado para development . Se você estiver usando o Git, crie uma nova ramificação no GitHub e confira uma cópia local.

  2. Faça alterações e teste-as localmente no aplicativo de desenvolvimento. Quaisquer alterações feitas no aplicativo não afetarão o aplicativo de produção, embora eles ainda possam ler e gravar conjunto de dados e serviços de produção, a menos que você configure alternativas.

  3. Confirme as alterações e mescle-as de volta à produção. Você pode configurar um pipeline CI/CD, que pode criar uma aplicação no ambiente test , para validar e mesclar suas alterações na ramificação de produção.

  4. Depois que suas alterações forem mescladas, você poderá excluir o aplicativo de desenvolvimento com segurança e limpar quaisquer outros serviços associados.