Lier un paramètre à un pool de ressources

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 3 minutes de lecture
  • Pour rendre la commande catalogue moins sujette aux erreurs, vous pouvez lier un paramètre à un pool de ressources (pool fourni dans le système de base). Les paramètres basés sur un pool de ressources répertorient uniquement les valeurs spécifiées à partir des tables existantes sur le formulaire de commande de catalogue dans le portail de l'utilisateur dans le cloud.

    Avant de commencer

    Rôle requis : sn.cmp.cloud_service_designer

    Pourquoi et quand exécuter cette tâche

    Le formulaire de commande de catalogue répertorie uniquement les valeurs de paramètres dont la source de données est spécifiée. Par exemple, si vous utilisez le paramètre Resource Group Name dans votre modèle, vous pouvez lier le champ Nom du groupe de ressources à un pool SN existant (ResourceGroupPool) dans la section Métadonnées.

    Lorsque vous créez un bloc de ressources à l'aide d'un modèle dans le cloud, vous pouvez lier un paramètre à un pool SN dans la section Métadonnées du modèle Azure Resource Manager (ARM) ou CloudFormation (CF). Tous les pools SN sont répertoriés dans la procédure.

    Procédure

    1. Dans le portail d’administration du cloud, accédez à Conception > Éléments de Catalogue dans le cloud.
    2. Sélectionnez un modèle existant ou cliquez sur Nouveau pour créer un nouveau modèle dans le cloud.

      Si vous sélectionnez un modèle existant, renommez-le.

      À l'étape suivante, modifiez la définition du modèle pour le type de modèle approprié (choisissez ARM ou CloudFormation). Spécifiez le filtre de pool SN comme valeur de datasource.

      Tableau 1. Pools SN à utiliser comme valeur de source de données
      Pool SN Filtre
      AvailabilityZonePool

      getAllObjects : utilise toutes les zones de disponibilité.

      getObjectsByLDC : utilise la zone de disponibilité en fonction du LDC.

      HardwareTypePool
      ImagePool
      LoadBalancerPool Tout : utilise tous les équilibreurs de charge.
      NetworkPool

      getAllObjects : utilise tous les réseaux.

      getObjectsByLDC : utilise les réseaux en fonction du LDC.

      ResourceGroupPool getObjectsByLDC : utilise des groupes de ressources en fonction du LDC.
      SecurityGroupPool getObjectsByNetwork : utilise tous les groupes de sécurité.
      SecurityGroupProfilePool Tout : utilise tous les profils de groupe de sécurité.
      SSHKeyPool UserKeys : utilise toutes les clés SSH.
      StorageAccountPool getObjectsByLDC : utilise des comptes de stockage en fonction du LDC.
      StorageVolumePool Tout : utilise tous les volumes de stockage.
      SubnetPool getObjectsByNetwork : utilise tous les sous-réseaux.
      VirtualMachinePool getByAvailabilityZone : utilise tous les ordinateurs virtuels.
    3. Modifiez une définition de modèle ARM :
      1. Ajoutez l'attribut SNC::Parameter::Metadata dans la section Métadonnées des parameters.
      2. Pour l’attribut SNC::Parameter::Metadata , ajoutez la source de données en tant que clé et entrez un filtre de pool SN pour la valeur, tel que StorageAccountPool.getObjectsByLDC , comme indiqué dans cet exemple.
        "parameters": {
            "newStorageAccountName": {
              "type": "string",
              "metadata": {
                "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed.",
                 "SNC::Parameter::Metadata": {
                 "allowedPattern": "[0-9a-z]{1,11}",
                 "ConstraintDescription": "must be a alphanumeric ",
                 "datasource":"ServiceNow::Pools::StorageAccountPool.getObjectsByLDC",
         
                } 
              }
            }
        
    4. Modifier une définition de modèle CloudFormation :
      1. Ajoutez l’attribut SNC::Parameter::Metadata et définissez le nom d’attribut personnalisé (VpcId) avec un datasource.
        Pour la datasource valeur, entrez un filtre de pool SN tel que NetworkPool.getObjectsByLDC dans cet exemple.
      2. Définissez l'attribut de mappage datasourceFilter pour lier le nom personnalisé (VpcId) au nom d'attribut réel (Network).
        "Parameters" : { 
         
              "VpcId" : {
              "Type" : "AWS::EC2::VPC::Id",
              "Description" : "VpcId of your existing Virtual Private Cloud (VPC)",
              "ConstraintDescription" : "must be the VPC Id of an existing Virtual Private Cloud."
            },
         
            "SubnetId" : {
              "Type" : "AWS::EC2::Subnet::Id",
              "Description" : "SubnetId of an existing subnet (for the primary network) in your Virtual Private Cloud (VPC)",
              "ConstraintDescription" : "must be an existing subnet in the selected Virtual Private Cloud."
            }
          },
          "Metadata": {
                  "SNC::Parameter::Metadata": {
                        "VpcId":{
                             "datasource":"ServiceNow::Pools::NetworkPool.getObjectsByLDC",
                             "datasourceFilter":{"Network":"VpcId"}
                         },
                         "SubnetId":{
                             "datasource":"ServiceNow::Pools::SubnetPool.getObjectsByNetwork",
                             "datasourceFilter":{"Network":"VpcId"}
                         }
         
                    }
            }
        
    5. Cliquez sur Envoyer.
    6. Une fois le bloc de ressources, le plan et les éléments de catalogue créés, l'utilisateur de services dans le cloud ne voit que la liste des valeurs des données de pool pour le paramètre du formulaire de commande de catalogue.