Usando expressões em Cloud Provisioning and Governance

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 9 min. de leitura
  • As expressões em ações de política podem definir ou substituir valores. As expressões em blueprints podem acessar atributos de recursos e mapear valores para campos de formulário de solicitação. As expressões estão disponíveis em blocos de recursos, blueprints, políticas e em qualquer lugar Cloud Provisioning and Governance permite scripts.

    Usando expressões

    As expressões podem conter os valores das informações geradas dinamicamente no sistema, como os valores das seleções que os usuários fazem no Portal de usuário da nuvem. As expressões estão disponíveis em blocos de recursos, blueprints, políticas e em qualquer lugar Cloud Provisioning and Governance permite scripts.

    Usando expressões em blocos de recursos

    Cada operação de bloco de recursos usa uma expressão para conter um valor para cada parâmetro. A expressão pode usar valores codificados, dados da pilha que o usuário provisiona no Portal de usuário da nuvem, Dados no CMDB e dados derivados de scripts. Por padrão, Cloud Provisioning and Governance gera um conjunto de parâmetros e suas expressões para cada operação de bloco de recursos.

    Por exemplo, o parâmetro Location, que contém o datacenter ao qual um recurso pertence, usa a expressão Parameter.Location

    Figura 1. Expressões em um bloco de recursos
    Parâmetro de local para um bloco de recursos
    Usando expressões em blueprints

    Os blueprints podem usar expressões para mapear parâmetros de entrada para cada operação em um bloco de recursos. Por padrão, o plano gráfico exibe os mesmos parâmetros e valores especificados no bloco de recursos.

    Você pode acessar atributos de plano gráfico com expressões. A expressão em Mapeamento a coluna define atributos de plano gráfico para cada operação em uma etapa. Por exemplo, o. Local o atributo, que aparece no formulário de solicitação de pilha, pode ser acessado por meio do Parâmetro.Local) expressão. O parâmetro Local com Parameter.Location o valor aparece em Entradas quando você seleciona uma operação de plano gráfico.

    Figura 2. Expressões em um plano gráfico
    O parâmetro e a expressão do local
    Usando expressões em ações de política

    As ações de política podem usar expressões para substituir valores de parâmetro que os usuários enviam em um formulário de solicitação no Portal de usuário da nuvem. Você também pode acessar e substituir dados do usuário em operações de pilha. Por exemplo, use a seguinte expressão para renomear uma pilha: FormData.Stackname: "Your-naming-convention"; .

    Figura 3. Expressões em um script de política
    Script de exemplo de política

    Você pode acessar atributos de plano gráfico com expressões. A expressão em Mapeamento a coluna define atributos de plano gráfico para cada operação em uma etapa. Por exemplo, o. Local o atributo, que aparece no formulário de solicitação de uma máquina virtual, é acessado na seguinte expressão: Parâmetro.Local) .

    Tipos de expressão

    Expressões defincionais
    Expressões defincionais são uma forma de vinculação antecipada (ou vinculação estática). Essas vinculações se referem à vinculação em tempo de compilação e são avaliadas quando o usuário envia o formulário de solicitação de pilha (quando o provisionamento de pilha ou de recursos é iniciado). As expressões defincionais não têm acesso aos dados gerados durante Orquestração. As expressões defincionais estão entre chaves. Por exemplo: Parameter.CloudAccount
    Expressões de tempo de execução
    As expressões de tempo de execução são uma forma de vinculação atrasada (ou vinculação dinâmica). Essas vinculações se referem à vinculação de tempo de execução e têm acesso aos dados criados durante Orquestração(por exemplo, itens de pilha). As expressões de tempo de execução são avaliadas quando chamadas durante um Orquestração executar. Expressões de tempo de execução são normalmente usadas para referência com pontos para dados em tabelas. As expressões de tempo de execução estão entre parênteses. Por exemplo: (Stack.items[VM1].attributes[node_id])
    Expressões de definição/tempo de execução
    Algumas expressões incluem expressões defincionais e de tempo de execução.
    Expressões complexas
    Você pode aninhar expressões de qualquer tipo em outras expressões.

    Sintaxe de expressão de definição e exemplos

    A sintaxe permitida usa um cifrão e chaves. Estes tipos estão disponíveis:
    • (parâmetro. . Use este tipo de expressão para recuperar valores de atributos de entrada de processos como provisões de plano gráfico. Os dados não são obtidos de tabelas.
    • (Stack.items[]} . Use esta sintaxe para acessar atributos de itens específicos em uma pilha.
    • (RandomNumber) . Use esta sintaxe para gerar um número aleatório. Por exemplo, você pode provisionar uma VM com um nome de nó aleatório ou nome de pilha.
    Tabela 1. Exemplos de expressão de definição
    Exemplo Descrição
    Parâmetro.BillingCode Esta expressão mostra como um parâmetro de código de faturamento aparece em um plano gráfico.
    Parameter.formData.CatalogAttributeType Esta expressão usa um atributo de catálogo que é enviado por um usuário enquanto o usuário preenche o formulário de um item do catálogo no Portal de usuário da nuvem.
    (parameter.userData.userId} Esta expressão usa o ID de um usuário enquanto o usuário preenche o formulário de um item do catálogo no Portal de usuário da nuvem.
    Stack.items[Virtual Server.attributes[sys_id]] Esta expressão obtém o sys_id de um servidor virtual separado de uma pilha. Servidor virtual é o alias de um bloco de recursos usado na pilha.

    Sintaxe e exemplos de expressão de tempo de execução

    A sintaxe permitida usa um cifrão e parênteses. Estes tipos estão disponíveis:
    • (ic.tablename) onde tablename É uma tabela no sistema, geralmente uma tabela de IC no CMDB. Use esta sintaxe para acessar valores de campos na tabela.
    • (Stack.items[]) . Use esta sintaxe para acessar atributos de itens específicos em uma pilha.
    Tabela 2. Exemplos de expressão de tempo de execução
    Exemplo Descrição
    (ic.cmdb_ci_cloud_sub-net[ sys_id 12231231231231231231].cidr) Este ponto de expressão vai até a tabela de sub-rede em nuvem, encontra o registro específico com o sys_id fornecido e obtém o valor do cidr coluna.
    (ic.sn_cmp_ip_pool [parâmetro.formData.Subnet ID]) Esta expressão combina expressões de tipo de tempo de execução e definição. O sinal de igual é usado para avaliar um valor de uma correspondência. A expressão faz referência com pontos para a tabela Pool de IPs e procura a sub-rede que tem o ID de sub-rede que o usuário enviou.
    (ic.cmdb_ci_cloud_sub-net) Esta expressão combina expressões de tipo de tempo de execução e definição. A expressão usa o valor de cidr campo de uma sub-rede que o usuário escolheu durante o provisionamento. Colchetes [] Indique que a expressão faz referência com pontos à tabela de sub-rede em nuvem e, em seguida, verifica o valor da sub-rede que o usuário enviou em uma provisão de plano gráfico. A expressão captura o. cidr valor do campo e, em seguida, vai até o valor em cidr campo do sys_id da sub-rede.
    (Stack.items[Virtual Servidor].attributes[sys_id]) Como no exemplo de expressão de definição, esta expressão usa o sys_id de um servidor virtual que é separado de uma pilha.

    Expressão de exemplo

    (Script:CMPVMNICs.getNICs[arg Stack.items[Virtual].attributes[sys_id])]].private_ip)
    • $(ciExpressão de tempo de execução para recuperar dados da tabela.
    • cmdb_ci_nicIC para NIC (Placa de interface de rede).
    • $(ScriptExpressão baseada em script.
    • CMPVMNICsInclusão de script.
    • getNICs: Função dentro de uma inclusão de script.
    • argArgumentos para a função de inclusão de script. Os argumentos são separados por "," quando há vários atributos.
    • $(Stack.itemsExpressão de pilha de tempo de execução para recuperar o item de pilha de uma pilha. O argumento é o alias especificado no plano gráfico.
    • Virtual ServerAlias do recurso usado no plano gráfico.
    • $(Stack.items[Virtual Server].attributes[sys_id])Recupera o sys_id da instância de recurso do item de pilha ("Servidor virtual") em uma pilha.
    • private_ipAtributo de cmdb_ci_nic. Substitua por IP público, se necessário.

    Expressões

    Simple parameter mapping expression

    Este tipo de expressão recupera valores de atributos de entrada de processos, como operações de plano gráfico, blocos de recursos e políticas. Os dados não são obtidos de tabelas. Mapeia valores de uma camada para outra, como de um plano gráfico para um recurso para a API em nuvem.

    • Tipo: Definicional
    • Sintaxe: (parâmetro.
    • Exemplos:
      • Parâmetro.BillingCode retorna o código de faturamento.
      • Parameter.formData.CatalogAttributeType usa um atributo de catálogo que é enviado no formulário de solicitação no Portal de usuário da nuvem.
      • (parameter.userData.userId} Usa o ID de um usuário que trabalha no formulário de solicitação no Portal de usuário da nuvem.

    Stack item expression

    Uma instância de IC no CMDB representa cada item da pilha. Use Expressões de item de pilha para pesquisar propriedades de primeiro nível no IC que respalda o item de pilha ou no próprio item de pilha.

    • Tipo: Definitional/runtime
    • Sintaxe: (Stack.items[]} ou (Stack.items[])
    • Exemplos:

      (Stack.items[VirtualServer1].attributes[sys_id]} é uma expressão do tipo de definição que obtém o sys_id de um servidor virtual em uma pilha. VirtualServer1 é o alias de um bloco de recursos usado na pilha.

      (Stack.items[VirtualServer2].attributes[sys_id]) é uma expressão do tipo de tempo de execução que usa o sys_id de um servidor virtual que faz parte de uma pilha.

      (Stack.items[vm1].attributes[node_id]} node_id Atributo do IC que foi criado para a VM. vm1 é o nome do item da pilha (ou o alias do recurso no plano gráfico).

      (Stack.items[vm1].status) lê o status do item da pilha.

    Property override expressions in policies

    Em políticas, você pode substituir propriedades extraindo um valor do sistema ou usando um número aleatório. Você pode usar dados de ambos os formulários no Portal de usuário da nuveme do usuário que realizou a operação no formulário.

    • Tipo: Definitional/runtime
    • Sintaxe: Parameter.formData.xyz ou (this.parameter.userData.xyz}
    • Exemplos:

      O valor a seguir pode definir o nome da pilha como Stack_Bob.Smith@company.com: Stack_ parameter.userData.userId}

      Defina valores de pilha ou tabela usando expressões de tempo de execução usando a sub-rede da tabela Pools de IPs:

      (ic.sn_cmp_ip_pool [parâmetro.formData.Subnet ID])

      Em scripts, você pode atribuir valores da seguinte forma:

      _Server_nodename: "MyNodeName";

      "ServiceowuserId"; this.parameter.userData.userId

    • Consulte também Crie um script de ação de política.

    Script expression

    No exemplo, VMProperties é uma inclusão de script com uma função chamada GetIP . Uma expressão de script também é um exemplo de uma expressão complexa (a expressão está aninhada).

    • tempo de execução
    • Sintaxe: (Script:scriptName.function[])
    • Exemplos:

      (Script:VMPropertiesUtil.getIP[ arg](Stack.items[VM1].attributes[object_id])])

      Expressão para IP privado: (Script:CMPVMNICs.getNICs[arg Stack.items[Virtual].attributes[sys_id])]].private_ip)

      Expressão para IP público: (Script:CMPVMNICs.getNICs[arg Stack.items[Virtual].attributes[sys_id])]].public_ip)

      Expressão para obter o alias de credencial: Stack.items[Virtual Server.attributes[sys_id]]

      Expressão para obter o endereço IP: (Script:CMPVMUtils.getReachableIp[arg Stack.items[Virtual].attributes[sys_id])])

    CI lookup expression

    Acessa valores de campos em uma tabela, geralmente uma tabela de IC no CMDB.

    • Tipo: Definitional/runtime
    • Sintaxe: (ic.tablename)
    • Exemplos:

      (ic.sn_cmp_ip_pool [parâmetro.formData.Subnet ID]) combina tempo de execução e expressões de tipo de definição. O operador avalia um valor para uma correspondência. A expressão faz referência com pontos para a tabela Pool de IPs e procura a sub-rede que tem o ID de sub-rede que o usuário enviou.

      (ic.cmdb_ci_cloud_sub-net) usa o valor de cidr campo de uma sub-rede especificada pelo usuário durante o provisionamento. A expressão passeios com pontos para a tabela de sub-rede em nuvem examina o valor de sub-rede que o usuário enviou em uma provisão de plano gráfico e extrai o. cidr valor do campo e, em seguida, vai até o valor em cidr campo do sys_id da sub-rede.

    Random number expression

    Gera um número aleatório. Por exemplo, você pode provisionar uma VM com um nome de nó aleatório ou nome de pilha.

    • tempo de execução
    • Sintaxe e exemplo: (RandomNumber)

    Scratchpad expression/Resource operation output attribute expression

    Lê atributos de saída de uma operação para outra operação.

    • tempo de execução
    • Sintaxe: Varia
    • Exemplo: Para definir/expor saídas de uma operação:

      Compute Interface.CreateNode.Output.resp.nodeId}

      Para ler os atributos de saída (em que VM1.Provisionamento é a operação cujos atributos de saída são lidos):

      (Saídas[VM1.provisionar].NodeId)

    Conditions in expressions

    Você pode usar expressões condicionais em etapas de plano gráfico e etapas de operação de recursos para executar condicionalmente ou ignorar a etapa. As expressões condicionais são expressões JavaScript e oferecem suporte a substituições de expressão.

    • Tipo: Definitional/runtime
    • Sintaxe: Varia
    • Exemplos:

      "Parameter.CloudAccount" ("Conta do Amazon Cloud")

      (Stack.items[vm1].attributes[node_id]

    Complex expression

    Você pode aninhar expressões. No exemplo, Parameter.ServerID Mapeia o sys_id do IC e é substituído antes que a expressão externa seja consumida.

    • Tipo: Qualquer
    • Sintaxe: Varia
    • Exemplo: (ic.cmdb_ci_vm_instance

    Order context

    Esta expressão é útil para operações de ciclo de vida e permite que você faça referência com pontos nos atributos do pedido como parte do sn_cmp_ordertabela.

    • tempo de execução
    • Sintaxe: (context.order.column_name)
    • Exemplos:
      • Item da solicitação: (context.order.sc_req_item)
      • Referência com pontos no objeto de item da solicitação: (context.order.sc_req_item.number)
      • Expressão mista (constante e expressão): "ram(context.order.sc_req_item.number)"