Créer un script d'action de politique

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 2 minutes de lecture
  • Utilisez des scripts d'action de politique pour obtenir, mettre à jour ou définir des valeurs dans les demandes dans le cloud.

    Avant de commencer

    Rôle requis : sn_cmp.cloud_governor ou admin.

    Pourquoi et quand exécuter cette tâche

    Pour plus d'informations sur l'utilisation des scripts, consultez Scripts dans le cloud et modèles de scripts dans le cloud.

    Procédure

    1. Sur le portail d’administration du cloud, accédez à Piloter > Politiques.
    2. Dans l'onglet Scripts d'action de politique, cliquez sur Nouveau, entrez un Nom et une Description uniques et significatifs, puis cliquez sur Soumettre.
      Une fois que vous avez saisi un nom, un script s'affiche avec une variable qui utilise le nom que vous avez saisi.
      Champ Description
      Catégorie du script d'action Choisissez une autre catégorie ou conservez celle que vous avez créée à une étape antérieure.
      Script Modifiez la fonction customScripts dans le script. Il s'agit de la seule partie du script que vous devez modifier.

    Exemple

    L'exemple de script suivant détermine si l'utilisateur appartient à un groupe d'utilisateurs, puis remplace la valeur de nom de nœud de serveur d'applications spécifiée par l'utilisateur par la valeur MyNodeName.
    
    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },
    

    Cet exemple renvoie un nombre aléatoire :

    
    customScript : function(formData){
      var min = 10000;
      var max = 99999;
      var num = Math.floor(Math.random() * (max - min + 1)) + min;
      formData.randomNumber = num + "";  
      return formData;
    },
    

    Cet exemple de script ajoute trois heures à la date de bail à l'aide de la classe système-de-base GlideDateTime.

    
    var SetLeaseShort = Class.create();
    SetLeaseShort.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
                  // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		// this.info("id = " + formData.StackName);
    		
    		// var leaseValue = now();
    		// leaseValue = leaseValue.setHours(leaseValue.getHours()+4);
    		// formData.LeaseEndDate = leaseValue;
    		
    		if (formData.hasOwnProperty("LeaseEndDate")) {
    			gdt = new GlideDateTime();
    			// 10800 = 3 hours
    			gdt.addSeconds(10800);
    			formData.LeaseEndDate = gdt.getDisplayValue();
    		}	
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'SetLeaseShort'
    });	
    
    var SetLeaseShortObj = new SetLeaseShort(inputAttributes);
    var outputParams = SetLeaseShortObj.execute();
    gs.info( "Output of script is = " + outputParams);
    

    Cet exemple de script définit le champ de nom DNS Azure Wordpress spécifié par l'utilisateur du formulaire sur le même nom que le nom de la pile :

    var WordpressFill = Class.create();
    WordpressFill.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
            // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		//this.info("id = " + formData.StackName);
    		
    		formData.Azure_Wordpress_v6_vmDnsName = formData.StackName;
    		
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'WordpressFill'
    });	
    
    var WordpressFillObj = new WordpressFill(inputAttributes);
    var outputParams = WordpressFillObj.execute();
    gs.info( "Output of script is = " + outputParams);