사용자 정의 매크로
매크로는 무인 파일이나 설치 후 스크립트에 가변 데이터(구성 설정)를 추가할 수 있는 기능을 제공합니다. Lenovo XClarity Administrator에서 JSON 형식을 사용하여 사용자 지정 구성 설정 파일을 만들어 사용자 정의 설정을 정의할 수 있습니다.
각 사용자 정의 구성 설정의 값은 OS 배포 중에 지정된 사용자 입력에 따라 다릅니다.
사용자 정의 구성 설정을 XClarity Administrator로 가져올 때 XClarity Administrator에서 JSON 스키마의 유효성을 검사합니다. 유효성 검사가 통과되면 XClarity Administrator가 각 설정에 대해 사용자 지정 매크로를 생성합니다.
무인 파일이나 설치 후 스크립트에 사용자 정의 매크로를 삽입하려면, 오브젝트의 고유한 이름을 사용하고 마침표를 사용하여 중첩된 오브젝트를 구분한 다음 매크로 이름을 해시 기호(#)로 묶습니다(예, # server_settings.server0.locale#).
오브젝트 이름을 포함하지 마십시오.
템플리트에서 오브젝트를 작성할 때, 이름은 0부터 시작하는 고유 번호(예, server0 및 server1)로 추가됩니다.
각 사용자 정의 설정 옆에 있는 도움말 아이콘() 위에 놓으면 사용자 정의 설정 탭의 OS 이미지 배포 대화 상자에서 각 매크로의 이름을 볼 수 있습니다.
구성 설정
모든 대상 서버에 공통이거나 특정 대상 서버에 고유합니다.
OS 이미지 프로필을 배포할 때 정적(구성 불가능) 값 또는 동적(구성 가능) 값을 입력합니다.
템플릿을 기반으로 다양한 요소를 갖습니다. 예를 들어 배포 중에 0~3 개의 NTP 서버를 지정하는 구성 설정을 정의할 수 있습니다.
- 일반 설정
OS 배포 중에 OS 이미지 배포 대화 상자의 일반 설정 탭에 있는 UI 요소가 content 오브젝트에 표시된 오브젝트를 기반으로 렌더링됩니다. 오브젝트는 모든 대상 서버에서 OS 배포에 필요한 설정 및 값을 설명합니다.
모든 서버에 공통적인 설정을 표시하려면 JSON 파일에 "common":true 이름/값 쌍이 포함된 중첩된 오브젝트가 있는 상위 오브젝트가 있어야 합니다.
다음 예제에서는 모든 서버에 동일한 구성 가능(동적) NTP 서버를 사용합니다.{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"template": [{
"autoCreateInstance": true,
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
...,
}다음 예제에서는 동일한 구성 가능(정적) 설치 후 스크립트 로그 디렉토리를 사용합니다.{
"category": "dynamic",
"content": [{
"category": "static",
"common": true,
"description": "Directory location for post-installation script logging.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
},
...,
}- 서버 특정 설정
OS 배포 중에 OS 이미지 배포 대화 상자의 서버 특정 설정 탭에 있는 UI 요소가 템플릿의 content 오브젝트에 표시된 오브젝트를 기반으로 렌더링됩니다. 오브젝트는 특정 대상 서버에서 OS 배포에 필요한 설정 및 값을 설명합니다.
서버 특정 값이 UI에 수집되면 template 오브젝트를 기반으로 각 대상 서버에 대한 content 오브젝트가 JSON에 생성됩니다. 각 content 오브젝트에는 고유한 name 및 targetServer 필드가 있으며 해당 서버에 대한 값이 입력되어 있습니다.
서버 특정 설정을 표시하려면 JSON 파일에 다음 내용이 포함된 상위 오브젝트가 있어야 합니다.
"category":"dynamic" 이름/값 쌍.
"common":false 이름/값 쌍이 포함된 중첩된 오브젝트. 상위 오브젝트의 콘텐츠에서는 한 "common": false 오브젝트만 지원됩니다.
내장 콘텐츠 오브젝트가 있는 템플릿 오브젝트. 이 템플릿 배열에는 하나의 객체만 포함될 수 있습니다.
예를 들어 각 대상 서버에 대해 고유한 OS 로케일을 정의하는 경우{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"template": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
...,
}
JSON 사양
다음 표는 JSON 사양에서 허용되는 필드를 설명합니다.
매개변수 | 필수/옵션 | 유형 | 설명 | ||
---|---|---|---|---|---|
autoCreateInstance | 옵션 | Boolean | 배포 시 템플릿 오브젝트의 인스턴스가 JSON 파일에 자동으로 생성되는지 여부를 나타냅니다. 이는 다음 값 중 하나입니다.
주 이 필드는 템플릿 오브젝트에만 배치할 수 있습니다. | ||
category | 필수 | String | 각 설정의 값이 채워지는 방법을 나타냅니다. 이는 다음 값 중 하나입니다.
중첩된 오브젝트는 상위 오브젝트에서 이 필드의 값을 상속받습니다. category가 상위 오브젝트에서 static으로 설정된 경우 모든 중첩된 오브젝트에서도 static으로 설정되어야 합니다. category가 상위 오브젝트에서 dynamic으로 설정된 경우 중첩된 오브젝트에서 static 또는 dynamic으로 설정될 수 있습니다. | ||
choices | 옵션 | type 속성과 일치하는 값의 배열 | OS 배포(예, ["enabled","disabled"]) 중에 선택할 수 있는 구성 설정의 정적 값(예, string 또는 integer) 배열. | ||
common | 옵션 | Boolean | 이 구성 스키마가 모든 대상 서버에 적용되는지 여부를 나타냅니다.
중첩된 오브젝트는 상위 오브젝트에서 이 필드의 값을 상속받습니다. common이 상위 오브젝트에서 true로 설정된 경우 모든 중첩된 오브젝트에서도 true로 설정되어야 합니다. common이 상위 오브젝트에서 false로 설정된 경우 모든 중첩된 오브젝트에서 false로 설정되어야 합니다. | ||
content | 옵션 | 오브젝트 배열 | 스키마에서 중첩된 오브젝트를 나타내는 패턴입니다. OS 배포 중에 사용자 입력 데이터가 수집되면 이 필드는 배포용으로 생성된 구성 설정 파일의 인스턴스에서 지정된 템플릿의 최종 값을 나타내는 데 사용됩니다. | ||
default | 옵션 | type에 따라 다름 | 기본값. | ||
description | 옵션 | String | 오브젝트에 대한 설명입니다. | ||
label | 옵션 | String | OS 배포 중에 표시되는 사용자 인터페이스의 설정 레이블입니다. | ||
max | 옵션 | Integer | type이 정수로 설정된 경우 최대값입니다. 기본값은 무제한입니다. | ||
maxElements | 옵션 | Integer | 이 오브젝트에 대한 배열의 최대 항목 수입니다. | ||
-min | 옵션 | Integer | type이 정수로 설정된 경우 최소값입니다. 기본값은 0입니다. | ||
minElements | 옵션 | Integer | 이 오브젝트에 대한 배열의 최소 항목 수입니다. | ||
name | 필수 | String | 오브젝트의 고유 이름입니다. 이 이름에는 영숫자(az, AZ 및 0-9), 밑줄(_) 및 대시(-)만 사용할 수 있습니다. name을 무인 파일의 사용자 지정 매크로로 참조할 수 있습니다. 중첩된 name 오브젝트를 참조하는 경우 마침표를 사용하여 각 오브젝트를 구분합니다(예: mydeploy.node.locale). | ||
optional | 필수 | Boolean | 오브젝트가 옵션인지 여부를 나타냅니다. 이는 다음 값 중 하나입니다.
| ||
regex | 옵션 | String | 값의 유효성을 검사하는 정규 표현식입니다(예, "[\\w\\.]{1,64}$"). | ||
script | 옵션 | 문자열 배열 | 이 오브젝트의 데이터에 대한 종속성이 있는 스크립트 목록(쉼표로 구분)입니다(예, ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]). 주 스크립트는 설치 스크립트 또는 사용자 지정 소프트웨어로 OS 이미지 프로필에 사용할 수 있어야 합니다. | ||
targetServer | 옵션 | String | OS 배포의 대상이 되는 서버의 UUID입니다. common이 true인 경우 이 필드는 비어 있거나 Null일 수 있으며 대상 서버는 OS 배포 중에 지정됩니다. | ||
template | 옵션 | 오브젝트 배열 | 재사용 가능한 오브젝트를 나타내는 패턴입니다. OS 배포 중에 이 템플릿은 오브젝트의 여러 인스턴스를 나타낼 수 있습니다. minElements 및 maxElements 필드를 사용하여 인스턴스 수를 제한할 수 있습니다. 다음 예제에서는 템플릿을 사용하여 1 - 3 NTP 서버 배열을 나타냅니다.
OS 배포 중에 사용자 입력 값이 수집되면 OS가 배포될 각 장치에 대한 특정 콘텐츠가 포함된 구성 설정 파일의 인스턴스가 만들어집니다.
주
| ||
type | 필수 | String | 오브젝트의 데이터 유형입니다. 이는 다음 값 중 하나입니다.
| ||
value | 옵션 | String | 구성 설정에 대한 단일 정적 값입니다. 주
|
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"template": [{
"autoCreateInstance": true,
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"template": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
{
"category": "static",
"common": true,
"description": "Directory for post-installation script logging.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
}],
"description": "Custom configuration file for deployment of custom locale, NTP server,
and directory for post-installation script logs.",
"label": "My Custom Deployment",
"name": "myCustomDeploy",
"optional": false,
"type": "array"
}
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"content": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server0",
"optional": false,
"type": "assoc_array",
"targetServer": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server1",
"optional": false,
"type": "assoc_array",
"targetServer": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
}],
"template": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"content": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver0,
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string",
"value": "192.0.2.1"
},
{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver1",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string",
"value": "192.0.2.2"
}],
"template": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
{
"category": "static",
"common": true,
"description": "Directory for post-installation script logs.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
}],
"description": "Custom configuration file for deployment of custom locale, NTP server,
and directory for post-installation script logs.",
"label": "My Custom Deployment",
"name": "myCustomDeploy",
"optional": false,
"type": "array"
}