정책 작업 스크립트 만들기

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기6분
  • 정책 실행 스크립트를 사용하여 클라우드 요청의 값을 가져오거나 업데이트하거나 설정합니다.

    시작하기 전에

    필요한 역할: sn_cmp.cloud_governor 또는 admin

    이 태스크 정보

    스크립트 사용에 대한 자세한 내용은 클라우드 스크립트 및 클라우드 스크립트 템플릿 문서를 참조하십시오.

    프로시저

    1. 클라우드 관리자 포털에서 다음으로 이동합니다. Govern > 정책.
    2. 정책 작업 스크립트 탭에서 새로 만들기를 클릭하고 고유하고 설명적인 이름설명을 입력한 다음 양식을 채우고 제출을 클릭합니다.
      이름을 입력하면 입력한 이름을 사용하는 변수가 있는 스크립트가 나타납니다.
      필드 설명
      작업 스크립트 범주 다른 카테고리를 선택하거나 이전 단계에서 작성한 범주를 유지하십시오.
      스크립트 스크립트에서 customscripts 함수를 수정합니다. 스크립트에서 수정해야 하는 유일한 부분입니다.

    다음 예시 스크립트에서는 사용자가 사용자 그룹에 속하는지 여부를 확인한 다음 사용자 지정 애플리케이션 서버 노드 이름 값을 MyNodeName으로 재정의합니다.
    
    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },
    

    다음은 난수를 반환하는 예시입니다.

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

    다음 예시 스크립트는 기본 시스템 GlideDateTime 클래스를 사용하여 임대 날짜에 3시간을 추가합니다.

    
    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);
    

    다음 예시 스크립트는 사용자가 지정한 Azure WORDPRESS DNS 이름 필드를 양식에서 스택 이름과 같은 이름으로 설정합니다.

    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);