มาโครแบบกำหนดเอง
มาโคร ช่วยให้คุณสามารถเพิ่มข้อมูลตัวแปร (การตั้งค่าการกำหนดค่า) ให้กับไฟล์แบบอัตโนมัติหรือสคริปต์หลังการติดตั้ง Lenovo XClarity Administrator ช่วยให้คุณสามารถกำหนดการตั้งค่าแบบกำหนดเองของคุณเองด้วยการสร้างไฟล์การตั้งค่าการกำหนดค่าแบบกำหนดเองที่ใช้รูปแบบ JSON
ค่าสำหรับการตั้งค่าการกำหนดค่าแบบกำหนดเองแต่ละรายการ จะแตกต่างกันออกไปตามอินพุตของผู้ใช้ที่ระบุระหว่างการปรับใช้ OS
เมื่อคุณนำเข้าการตั้งค่าการกำหนดค่าแบบกำหนดเองลงใน XClarity Administrator แล้ว XClarity Administrator จะตรวจสอบความถูกต้องของสคีมา JSON หากผ่านการตรวจสอบ XClarity Administrator จะสร้างมาโครแบบกำหนดเองให้กับการตั้งค่าแต่ละรายการ
ในการใส่มาโครแบบกำหนดเองในไฟล์แบบอัตโนมัติหรือสคริปต์หลังการติดตั้ง ให้ใช้ชื่อออบเจกต์ที่ไม่ซ้ำกัน คั่นออบเจกต์ที่ซ้อนกันด้วยเครื่องหมายจุด และคร่อมชื่อมาโครด้วยเครื่องหมายสี่เหลี่ยม (#) ตัวอย่างเช่น#server_settings.server0.locale#
อย่ารวมชื่อออบเจกต์ระดับบนสุด
เมื่อสร้างออบเจกต์จากเทมเพลต ชื่อจะต่อท้ายด้วยตัวเลขที่ไม่ซ้ำกันโดยเริ่มต้นที่ 0 (ตัวอย่างเช่น server0 และ server1)
คุณสามารถดูชื่อของมาโครแต่ละรายการได้จากกล่องโต้ตอบ ปรับใช้อิมเมจ OS ในแท็บ การตั้งค่าแบบกำหนดเอง โดยวางเมาส์ไว้เหนือไอคอน วิธีใช้ () ถัดจากการตั้งค่าแบบกำหนดเองแต่ละรายการ
การตั้งค่าการกำหนดค่า
ใช้ร่วมกันได้กับเซิร์ฟเวอร์เป้าหมายทั้งหมด หรือกำหนดให้ใช้กับเครื่องใดเครื่องหนึ่งโดยเฉพาะก็ได้
มีค่าแบบคงที่ (ไม่สามารถกำหนดค่าได้) หรือค่าแบบไดนามิก (กำหนดค่าได้) ที่ป้อนขณะปรับใช้โปรไฟล์อิมเมจ OS
มีองค์ประกอบจำนวนต่างๆ ตามเทมเพลต ตัวอย่างเช่น คุณสามารถกำหนดการตั้งค่าการกำหนดค่าที่ให้คุณสามารถระบุเซิร์ฟเวอร์ NTP 0 - 3 รายการในระหว่างการปรับใช้
- การตั้งค่าทั่วไป
ระหว่างการปรับใช้ OS องค์ประกอบ UI บนแท็บการตั้งค่าทั่วไปในกล่องโต้ตอบปรับใช้อิมเมจ OS จะแสดงตามออบเจกต์ต่างๆ ที่พบในออบเจกต์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 องค์ประกอบ UI บนแท็บการตั้งค่าเฉพาะเซิร์ฟเวอร์ในกล่องโต้ตอบปรับใช้อิมเมจ OS จะแสดงตามออบเจกต์ต่างๆ ที่พบในออบเจกต์ content ของเทมเพลต ออบเจกต์เหล่านี้จะบอกให้ทราบถึงการตั้งค่าและค่าต่างๆ ที่เซิร์ฟเวอร์เป้าหมายเฉพาะรายการจำเป็นต้องใช้ในการปรับใช้ OS
หลังจากรวบรวมค่าเฉพาะเซิร์ฟเวอร์ใน UI แล้ว ระบบจะสร้างออบเจกต์ content ในรูปแบบ JSON สำหรับเซิร์ฟเวอร์เป้าหมายแต่ละเครื่องตามออบเจกต์ template ออบเจกต์ 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 | เสริม | บูลีน | ระบุว่าอินสแตนซ์ของออบเจกต์เทมเพลตถูกสร้างขึ้นโดยอัตโนมัติในไฟล์ JSON ในเวลาที่ปรับใช้หรือไม่ ซึ่งสามารถเป็นค่าใดค่าหนึ่งต่อไปนี้
หมายเหตุ คุณสามารถวางฟิลด์นี้ได้ในออบเจกต์เทมเพลตเท่านั้น | ||
ประเภท | จำเป็น | สตริง | บ่งชี้ว่าค่าของการตั้งค่าแต่ละรายการจะถูกป้อนอย่างไร ซึ่งสามารถเป็นค่าใดค่าหนึ่งต่อไปนี้
ออบเจกต์ที่ซ้อนกันจะรับค่าของฟิลด์นี้จากออบเจกต์หลัก หาก category ถูกตั้งค่าไว้เป็น static ในออบเจกต์หลัก ก็จะต้องตั้งค่าเป็น static ในออบเจกต์ที่ซ้อนกันทั้งหมดด้วย หาก category ถูกตั้งค่าไว้เป็น dynamic ในออบเจกต์หลัก อาจตั้งค่าเป็น static หรือ dynamic ก็ได้ในออบเจกต์ที่ซ้อนกัน | ||
ตัวเลือก | เสริม | อาร์เรย์ของค่าที่ตรงกับคุณสมบัติ type | อาร์เรย์ของค่าแบบคงที่ (เช่น สตริงหรือจำนวนเต็ม) ของการตั้งค่าการกำหนดค่าที่ผู้ใช้สามารถเลือกได้ระหว่างการปรับใช้ OS (เช่น ["enabled","disabled"]) | ||
ทั่วไป | เสริม | บูลีน | บ่งชี้ว่าสคีมาการกำหนดค่านี้มีผลใช้งานกับเซิร์ฟเวอร์เป้าหมายทั้งหมดหรือไม่
ออบเจกต์ที่ซ้อนกันจะรับค่าของฟิลด์นี้จากออบเจกต์หลัก หาก common ถูกตั้งค่าไว้เป็น true ในออบเจกต์หลัก ก็จะต้องตั้งค่าเป็น true ในออบเจกต์ที่ซ้อนกันทั้งหมดด้วย หาก common ถูกตั้งค่าไว้เป็น false ในออบเจกต์หลัก ก็จะต้องค่าเป็น false ในออบเจกต์ที่ซ้อนกันทั้งหมด | ||
เนื้อหา | เสริม | อาร์เรย์ของออบเจกต์ | รูปแบบที่แสดงถึงออบเจกต์ที่ซ้อนกันในสคีมา หลังจากรวบรวมข้อมูลที่ผู้ใช้ป้อนระหว่างการปรับใช้ OS แล้ว ฟิลด์นี้จะใช้แสดงถึงค่าสุดท้ายของเทมเพลตที่ระบุในอินสแตนซ์ของไฟล์การตั้งค่าการกำหนดค่าที่สร้างขึ้นสำหรับการปรับใช้ดังกล่าว | ||
ค่าเริ่มต้น | เสริม | แตกต่างกันไปตามฟิลด์ type | ค่าเริ่มต้น | ||
รายละเอียด | เสริม | สตริง | รายละเอียดเกี่ยวกับออบเจกต์ | ||
ป้าย | เสริม | สตริง | ป้ายกำกับสำหรับการตั้งค่าในส่วนติดต่อผู้ใช้ที่แสดงระหว่างการปรับใช้ OS | ||
สูงสุด | เสริม | จำนวนเต็ม | ค่าสูงสุดเมื่อตั้งค่า type เป็นจำนวนเต็ม ค่าเริ่มต้นคือ ไม่จำกัด | ||
maxElements | เสริม | จำนวนเต็ม | จำนวนสูงสุดของรายการในอาร์เรย์สำหรับออบเจกต์นี้ | ||
min | เสริม | จำนวนเต็ม | ค่าต่ำสุดเมื่อตั้งค่า type เป็นจำนวนเต็ม ค่าเริ่มต้นคือ 0 | ||
minElements | เสริม | จำนวนเต็ม | จำนวนต่ำสุดของรายการในอาร์เรย์สำหรับออบเจกต์นี้ | ||
name | จำเป็น | สตริง | ชื่อเฉพาะของออบเจกต์ ชื่อสามารถประกอบด้วยอักขระต่อไปนี้เท่านั้น: อักขระตัวเลขและตัวอักษร (a-z, A-Z และ 0-9), ขีดล่าง (_) และขีด (-) คุณสามารถใช้ name เพื่ออ้างอิงมาโครแบบกำหนดเองในไฟล์แบบอัตโนมัติได้ เมื่ออ้างอิงออบเจกต์ name ที่ซ้อนกัน ให้คั่นแต่ละออบเจกต์ด้วยจุด (เช่น mydeploy.node.locale) | ||
ตัวเลือกเสริม | จำเป็น | บูลีน | บ่งชี้ว่าออบเจกต์เป็นตัวเลือกเสริมหรือไม่ ซึ่งสามารถเป็นค่าใดค่าหนึ่งต่อไปนี้
| ||
regex | เสริม | สตริง | นิพจน์ปกติสำหรับการตรวจสอบความถูกต้องของค่า (เช่น "[\\w\\.]{1,64}$") | ||
สคริปต์ | เสริม | อาร์เรย์ของสตริง | รายการสคริปต์ที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งมีการอ้างอิงข้อมูลในออบเจกต์นี้ (เช่น ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]) หมายเหตุ สคริปต์ต้องใช้ได้กับโปรไฟล์อิมเมจ OS ในรูปแบบสคริปต์การติดตั้งหรือซอฟต์แวร์แบบกำหนดเอง | ||
targetServer | เสริม | สตริง | UUID ของเซิร์ฟเวอร์ที่เป็นเป้าหมายของการปรับใช้ OS หากฟิลด์ common มีค่าเป็น true ฟิลด์นี้จะว่างเปล่าหรือเป็นนัล และจะมีการระบุเซิร์ฟเวอร์เป้าหมายระหว่างการปรับใช้ OS | ||
เทมเพลต | เสริม | อาร์เรย์ของออบเจกต์ | รูปแบบที่แสดงถึงออบเจกต์ที่นำมาใช้ใหม่ได้ ระหว่างการปรับใช้ OS เทมเพลตนี้อาจแสดงถึงอินสแตนซ์หลายรายการของออบเจกต์นี้ ฟิลด์ minElements และ maxElements สามารถใช้จำกัดจำนวนอินสแตนซ์ได้ ตัวอย่างต่อไปนี้จะใช้เทมเพลตเพื่อแสดงถึงอาร์เรย์ของเซิร์ฟเวอร์ NTP 1 - 3 เครื่อง
หลังจากรวบรวมค่าที่ผู้ใช้ป้อนระหว่างการปรับใช้ OS แล้ว ระบบจะสร้างอินสแตนซ์ของไฟล์การตั้งค่าการกำหนดค่าด้วยเนื้อหาที่เฉพาะเจาะจงสำหรับอุปกรณ์แต่ละเครื่องที่ปรับใช้ OS ดังกล่าว
หมายเหตุ
| ||
type | จำเป็น | สตริง | ประเภทข้อมูลสำหรับออบเจกต์ ซึ่งสามารถเป็นค่าใดค่าหนึ่งต่อไปนี้
| ||
value | เสริม | สตริง | ค่าคงที่รายการเดียวสำหรับการตั้งค่าการกำหนดค่า หมายเหตุ
|
{
"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"
}