From 3940d9165f431256eb8d7b4b07770b8eccc2c536 Mon Sep 17 00:00:00 2001 From: jbarfield Date: Wed, 4 Aug 2021 16:48:39 -0500 Subject: [PATCH 1/3] Update hardware requirements doc. Add compute node UUID work around for SmartOS/Triton. --- docs/hardware-requirements.md | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/docs/hardware-requirements.md b/docs/hardware-requirements.md index a4f028c..a0f1c8f 100644 --- a/docs/hardware-requirements.md +++ b/docs/hardware-requirements.md @@ -58,3 +58,61 @@ There are a few known hardware related issues with illumos. - There have been several issues with Intel CPUs regarding their C-States. SmartOS has worked around them, but you should consider disabling them in your BIOS. + +"SmartOS/Triton" Specific Known issues + +- SmartOS depends upon the hardware bios serial number in order to + generate a UUID on boot; which is then assigned to a given compute + node. (As displayed by the `sysinfo` command) In some rare cases, + such as with the "Dell PowerEdge c6100" blade-type line of servers, + the chassis sometimes incorrectly assigns the same serial number + across all of the blades installed in the same unit. This can cause + issues for some software such as "Triton Datacenter", "VMware ESXi", + as well as others that directly rely on the chassis serial number to + be entirely unique. + + In the case of "Triton Data Center" and the "Dell c6100", 1 compute + node, will be properly detected by "cnapi" and consequently, the + "Operator Portal", while the others will quietly PXE boot and never + be detected by Triton. To determine if this is the cause of your + issue, simply ssh into each of the compute nodes in question, and + run: `sysinfo | json UUID`. If more than 1 compute node share the + same UUID then this is probably the cause of the issue. You can + also verify the serial number matches on each node with: + + `ipmitool fru print 0` + + you should receive output like the following: + + `Chassis Type : Rack Mount Chassis + Chassis Part Number : + Chassis Serial : + Board Mfg Date : Wed Nov 7 02:43:00 2012 + Board Mfg : Dell Inc. + Board Product : PowerEdge + Board Serial : CN0D61XP747512B60255A08 + Board Part Number : 282BNP0616 + Product Manufacturer : Dell Inc. + Product Name : C6100 + Product Part Number : + Product Version : + Product Serial : DB3KYV1 + Product Asset Tag` + + + To work around the issue, you must set a unique serial number for + each compute node using `ipmitool`. SmartOS compute nodes come with + `ipmitool` preinstalled so this is as easy as: + + 1. SSH to the affected compute node + 2. On your local machine, randomly generate, as unicast as possible, + a new serial number. In my scenario I simply used `pwgen` on my Mac + to generate a 7 digit, random, alpha-numeric string. + `pwgen -sB 7 1` + 3. On each node run the following three commands: + `ipmitool fru edit 0 field c 1 ` + `ipmitool fru edit 0 field b 2 ` + `ipmitool fru edit 0 field p 4 ` + 4. Double check that the new serial number has been set: + `ipmitool fru print 0` + 5. Reboot the compute node, it should now be detected by Triton. From cd6ee7cc545fcd785985a41b2a52bf6d98ac8af8 Mon Sep 17 00:00:00 2001 From: jbarfield Date: Wed, 4 Aug 2021 17:37:57 -0500 Subject: [PATCH 2/3] Updated to pass lint checks, line wrapping, formatting, etc. --- docs/hardware-requirements.md | 70 ++++---- package-lock.json | 314 +++++++++++++++++++++++++++++++++- 2 files changed, 350 insertions(+), 34 deletions(-) diff --git a/docs/hardware-requirements.md b/docs/hardware-requirements.md index a0f1c8f..8c4f21a 100644 --- a/docs/hardware-requirements.md +++ b/docs/hardware-requirements.md @@ -59,55 +59,59 @@ There are a few known hardware related issues with illumos. their C-States. SmartOS has worked around them, but you should consider disabling them in your BIOS. -"SmartOS/Triton" Specific Known issues +SmartOS/Triton - SmartOS depends upon the hardware bios serial number in order to generate a UUID on boot; which is then assigned to a given compute - node. (As displayed by the `sysinfo` command) In some rare cases, - such as with the "Dell PowerEdge c6100" blade-type line of servers, - the chassis sometimes incorrectly assigns the same serial number - across all of the blades installed in the same unit. This can cause - issues for some software such as "Triton Datacenter", "VMware ESXi", - as well as others that directly rely on the chassis serial number to - be entirely unique. - - In the case of "Triton Data Center" and the "Dell c6100", 1 compute - node, will be properly detected by "cnapi" and consequently, the - "Operator Portal", while the others will quietly PXE boot and never - be detected by Triton. To determine if this is the cause of your - issue, simply ssh into each of the compute nodes in question, and - run: `sysinfo | json UUID`. If more than 1 compute node share the - same UUID then this is probably the cause of the issue. You can - also verify the serial number matches on each node with: - - `ipmitool fru print 0` - - you should receive output like the following: - - `Chassis Type : Rack Mount Chassis - Chassis Part Number : - Chassis Serial : + node. (As displayed by the `sysinfo` command) In some rare cases, such + as with the "Dell PowerEdge c6100" blade-type line of servers, the + chassis sometimes incorrectly assigns the same serial number across + all of the blades installed in the same unit. This can cause issues + for some software such as "Triton Datacenter" that directly rely upon + the chassis serial number and the subsequent UUID generated on boot + by SmartOS, to be entirely unique. + + Example: + + In the case of "Triton Data Center" and the aforementioned, "Dell + c6100" chassis, 1 compute node (blade/sled), will be properly detected + by "cnapi" and consequently, the "Operator Portal" on boot, while the + other 3 quietly PXE boot without detection by Triton. To determine if + a duplicate server UUID is the cause of your issue, simply ssh into + each of the compute nodes in question, and run: `sysinfo | json UUID`. + If more than 1 compute node share the same UUID, then a duplicate + serial number is likely the cause of the issue. You can also verify + the duplicate serial numbers on each node with the following: + + `ipmitool fru print 0` + + You should receive output resembling this: + + Chassis Type : Rack Mount Chassis + Chassis Part Number : + Chassis Serial : Board Mfg Date : Wed Nov 7 02:43:00 2012 Board Mfg : Dell Inc. - Board Product : PowerEdge + Board Product : PowerEdge Board Serial : CN0D61XP747512B60255A08 Board Part Number : 282BNP0616 Product Manufacturer : Dell Inc. Product Name : C6100 - Product Part Number : - Product Version : - Product Serial : DB3KYV1 - Product Asset Tag` - + Product Part Number : + Product Version : + Product Serial : DB3KYV1 + Product Asset Tag: To work around the issue, you must set a unique serial number for each compute node using `ipmitool`. SmartOS compute nodes come with `ipmitool` preinstalled so this is as easy as: 1. SSH to the affected compute node - 2. On your local machine, randomly generate, as unicast as possible, + 2. On your local desktop, randomly generate, as unicast as possible, a new serial number. In my scenario I simply used `pwgen` on my Mac - to generate a 7 digit, random, alpha-numeric string. + to generate a 7 digit, random, alpha-numeric string. But you can + probably use "/dev/urandom", python, openssl or a myriad of other + tools to achieve the same result. `pwgen -sB 7 1` 3. On each node run the following three commands: `ipmitool fru edit 0 field c 1 ` diff --git a/package-lock.json b/package-lock.json index 79fcd3a..af582c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,320 @@ { "name": "smartos-docs", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "MPL-2", + "dependencies": { + "markdownlint-cli": "^0.23.1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==" + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "node_modules/ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==" + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lodash.differencewith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", + "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dependencies": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdownlint": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.20.3.tgz", + "integrity": "sha512-J93s59tGvSFvAPWVUtEgxqPI0CHayTx1Z8poj1/4UJAquHGPIruWRMurkRldiNbgBiaQ4OOt15rHZbFfU6u05A==", + "dependencies": { + "markdown-it": "10.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.23.1.tgz", + "integrity": "sha512-UARWuPILksAcVLTosUv1F1tLognNYQ/qjLRIgWwQAYqdl3QQrTPurU/X9Z2jrdAJYlOim868QsufxjYJpH0K7Q==", + "dependencies": { + "commander": "~2.9.0", + "deep-extend": "~0.5.1", + "get-stdin": "~5.0.1", + "glob": "~7.1.2", + "ignore": "~5.1.4", + "js-yaml": "~3.13.1", + "jsonc-parser": "~2.2.0", + "lodash.differencewith": "~4.5.0", + "lodash.flatten": "~4.4.0", + "markdownlint": "~0.20.3", + "markdownlint-rule-helpers": "~0.10.0", + "minimatch": "~3.0.4", + "minimist": "~1.2.5", + "rc": "~1.2.7" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdownlint-rule-helpers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.10.0.tgz", + "integrity": "sha512-0e8VUTjNdQwS7hTyNan9oOLsy4a7KEsXo3fxKMDRFRk6Jn+pLB3iKZ3mj/m6ECrlOUCxPYYmgOmmyk3bSdbIvw==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + }, "dependencies": { "argparse": { "version": "1.0.10", From 5774ad14b921565b7864d96b30a51a3b137688db Mon Sep 17 00:00:00 2001 From: jbarfield Date: Thu, 5 Aug 2021 15:53:44 -0500 Subject: [PATCH 3/3] Testing updates --- docs/hardware-requirements.md | 78 ++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/docs/hardware-requirements.md b/docs/hardware-requirements.md index 8c4f21a..034fdb4 100644 --- a/docs/hardware-requirements.md +++ b/docs/hardware-requirements.md @@ -53,37 +53,39 @@ merged upstream. ### Known Issues +### illumos + There are a few known hardware related issues with illumos. - There have been several issues with Intel CPUs regarding their C-States. SmartOS has worked around them, but you should consider disabling them in your BIOS. -SmartOS/Triton +### SmartOS and Triton Datacenter - SmartOS depends upon the hardware bios serial number in order to - generate a UUID on boot; which is then assigned to a given compute - node. (As displayed by the `sysinfo` command) In some rare cases, such - as with the "Dell PowerEdge c6100" blade-type line of servers, the - chassis sometimes incorrectly assigns the same serial number across - all of the blades installed in the same unit. This can cause issues - for some software such as "Triton Datacenter" that directly rely upon - the chassis serial number and the subsequent UUID generated on boot - by SmartOS, to be entirely unique. - - Example: - - In the case of "Triton Data Center" and the aforementioned, "Dell - c6100" chassis, 1 compute node (blade/sled), will be properly detected - by "cnapi" and consequently, the "Operator Portal" on boot, while the - other 3 quietly PXE boot without detection by Triton. To determine if - a duplicate server UUID is the cause of your issue, simply ssh into - each of the compute nodes in question, and run: `sysinfo | json UUID`. - If more than 1 compute node share the same UUID, then a duplicate - serial number is likely the cause of the issue. You can also verify - the duplicate serial numbers on each node with the following: - - `ipmitool fru print 0` + generate a system UUID on boot. This UUID can be displayed using the + `sysinfo` command. In some rare cases, such as with "Dell PowerEdge + c6100" blade-type servers, the main chassis can incorrectly assign the + same serial number across all of the blades installed in the same unit. + This can affect the behavior of some software, such as "Triton + Datacenter" (SDC). Triton directly relies on the UUID extracted from + the chassis serial number by SmartOS to be entirely unique in order + for it to detect a new compute node prior to setup. + +### Example Scenario + +In the case of "Triton Data Center" and the aforementioned, "Dell +c6100" chassis, 1 compute node (blade/sled), will be properly detected +by "cnapi" and consequently, the "Operator Portal" on boot, while the +other 3 quietly PXE boot without detection by Triton. To determine if +a duplicate server UUID is the cause of your issue, simply ssh into +each of the compute nodes in question, and run: `sysinfo | json UUID`. +If more than 1 compute node share the same UUID, then a duplicate +serial number is likely the cause of the issue. You can also verify +the duplicate serial numbers on each node with the following: + +`ipmitool fru print 0` You should receive output resembling this: @@ -106,17 +108,25 @@ SmartOS/Triton each compute node using `ipmitool`. SmartOS compute nodes come with `ipmitool` preinstalled so this is as easy as: - 1. SSH to the affected compute node - 2. On your local desktop, randomly generate, as unicast as possible, +- SSH to each affected compute node. +- On your local desktop, randomly generate, as unique as possible, a new serial number. In my scenario I simply used `pwgen` on my Mac to generate a 7 digit, random, alpha-numeric string. But you can probably use "/dev/urandom", python, openssl or a myriad of other - tools to achieve the same result. - `pwgen -sB 7 1` - 3. On each node run the following three commands: - `ipmitool fru edit 0 field c 1 ` - `ipmitool fru edit 0 field b 2 ` - `ipmitool fru edit 0 field p 4 ` - 4. Double check that the new serial number has been set: - `ipmitool fru print 0` - 5. Reboot the compute node, it should now be detected by Triton. + tools to achieve the same result. + `pwgen -sB 7 1` +- On each node run the following three commands: + + ipmitool fru edit 0 field c 1 + ipmitool fru edit 0 field b 2 + ipmitool fru edit 0 field p 4 + + _Note: To update the serial number, each of the above command's + must be executed on each compute node using the respective new + "serial number"._ + +- Double check that the new serial number has been set: + ipmitool fru print 0 +- Reboot the compute node. + + The compute node should now be properly detected by Triton.