Usando expressões em Cloud Provisioning and Governance

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. 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 Governancepermite 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 Governancepermite scripts.

    Usando expressões em blocos de recursos

    Cada operação de bloco de recursos usa uma expressão para manter 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 Governancegera 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 blueprint exibe os mesmos parâmetros e valores especificados no bloco de recursos.

    Você pode acessar atributos de blueprint com expressões. A expressão no Mapeamento a coluna define atributos do blueprint 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 de Parâmetro.Local expressão. O parâmetro Local com (Parameter.Location) o valor aparece em Entradas quando você seleciona uma operação de blueprint.

    Figura 2. Expressões em um blueprint
    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: ForData.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 blueprint com expressões. A expressão no Mapeamento a coluna define atributos do blueprint 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 recurso é 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 tardia (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çãoexecutar. As 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 defincionais/de 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 e exemplos de expressão de definição

    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 blueprint. Os dados não são obtidos das 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 um nome de pilha.
    Tabela 1. Exemplos de expressão de definição
    Exemplo Descrição
    (Parameter.BillingCode) Esta expressão mostra como um parâmetro de código de faturamento aparece em um blueprint.
    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 Servidor].attributes[sys_id]) Esta expressão obtém o sys_id de um servidor virtual separado de uma pilha. O Virtual Server é o alias de um bloco de recursos usado na pilha.

    Exemplos e sintaxe 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 nome da tabela É 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-rede[ sys_id-12231231231231231231].cidr) Este ponto de expressão vai até a tabela de sub-rede de nuvem, encontra o registro específico com o sys_id fornecido e obtém o valor do cidr coluna.
    (ic.sn_cmp_ip_pool Esta expressão combina expressões de tipo de definição e tempo de execução. O sinal de igual é usado para avaliar um valor de uma correspondência. A expressão caminha 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).cidr) Esta expressão combina expressões de tipo de definição e tempo de execução. A expressão usa o valor de cidr campo de uma sub-rede que o usuário escolheu durante o provisionamento. Os colchetes [] Indique que a expressão caminha com pontos para a tabela de sub-rede de nuvem e, em seguida, examina o valor de sub-rede que o usuário enviou em uma provisão de blueprint. A expressão captura o. cidr valor do campo e, em seguida, caminha até o valor no 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 Server].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.
    • arg: Argumentos 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 blueprint.
    • Virtual ServerAlias do recurso usado no blueprint.
    • $(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_ip: Atributo de cmdb_ci_nic. Se necessário, substitua por IP público.

    Expressões

    Simple parameter mapping expression

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

    • Tipo: Defincional
    • Sintaxe: (parâmetro.)
    • Exemplos:
      • (Parameter.BillingCode) retorna o código de cobrança.
      • 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 está trabalhando 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: Defincional/tempo de execução
    • Sintaxe: (Stack.items[]} ou (Stack.items[])
    • Exemplos:

      (Stack.items[VirtualServer1].attributes[sys_id]} é uma expressão do tipo defincional que obtém o sys_id de um servidor virtual em uma pilha. VirtualServer 1 é 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]} lê o. node_id Atributo do IC que foi criado para a VM. vm1 é o nome do item da pilha (ou o alias do recurso no blueprint).

      (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: Defincional/tempo de execução
    • 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 de pools de IPs:

      (ic.sn_cmp_ip_pool

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

      App_Server_nodename: "MyNodeName";

      : this.parameter.userData.userId: "ServicenowuserId";

    • 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).

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

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

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

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

      Expressão para obter o alias da credencial: (Script:CMPVMUtils.getCredentialAlias[arg Stack.items[Virtual Server].attributes[sys_id]])

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

    CI lookup expression

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

    • Tipo: Defincional/tempo de execução
    • Sintaxe: (ic.tablename)
    • Exemplos:

      (ic.sn_cmp_ip_pool combina expressões de tipo de definição e tempo de execução. O operador avalia um valor para uma correspondência. A expressão caminha 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).cidr) obtém o valor de cidr campo de uma sub-rede que o usuário especificou durante o provisionamento. A expressão "pontos-passeia" para a tabela de sub-rede de nuvem examina o valor de sub-rede que o usuário enviou em uma provisão de blueprint e extrai o. cidr valor do campo e, em seguida, caminha até o valor no 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 um nome de pilha.

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

    Scratchpad expression/Resource operation output attribute expression

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

    • Tipo: 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 (onde VM1.Provisionamento é a operação cujos atributos de saída são lidos):

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

    Conditions in expressions

    Você pode usar expressões condicionais em etapas de blueprint 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ões.

    • Tipo: Defincional/tempo de execução
    • Sintaxe: Varia
    • Exemplos:

      "Parameter.CloudAccount": "Conta da 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 um acompanhamento com pontos nos atributos do pedido como parte do sn_cmp_ordertabela.

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