balena-cli 16.1.0 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/build/commands/config/generate.d.ts +1 -0
- package/build/commands/config/generate.js +7 -0
- package/build/commands/config/generate.js.map +1 -1
- package/build/commands/os/configure.d.ts +1 -0
- package/build/commands/os/configure.js +6 -0
- package/build/commands/os/configure.js.map +1 -1
- package/build/utils/common-flags.d.ts +1 -0
- package/build/utils/common-flags.js +5 -1
- package/build/utils/common-flags.js.map +1 -1
- package/build/utils/config.d.ts +5 -0
- package/build/utils/config.js +43 -1
- package/build/utils/config.js.map +1 -1
- package/build/utils/messages.d.ts +1 -0
- package/build/utils/messages.js +4 -1
- package/build/utils/messages.js.map +1 -1
- package/lib/commands/config/generate.ts +20 -1
- package/lib/commands/os/configure.ts +20 -1
- package/lib/utils/common-flags.ts +6 -0
- package/lib/utils/config.ts +70 -0
- package/lib/utils/messages.ts +4 -0
- package/npm-shrinkwrap.json +25 -21
- package/oclif.manifest.json +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,48 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## 16.2.0 - 2023-05-19
|
|
8
|
+
|
|
9
|
+
* secureboot: Retrieve the OS release & contract in one request [Thodoris Greasidis]
|
|
10
|
+
* os configure, config generate: Add '--secureBoot' option to opt-in secure boot [Alex Gonzalez]
|
|
11
|
+
|
|
12
|
+
<details>
|
|
13
|
+
<summary> package.json: Update balena-sdk to 16.44.2 [Alex Gonzalez] </summary>
|
|
14
|
+
|
|
15
|
+
> ### balena-sdk-16.44.2 - 2023-05-16
|
|
16
|
+
>
|
|
17
|
+
> * Update flowzone's macos runner to v12 [Thodoris Greasidis]
|
|
18
|
+
> * Add device type yocto properties to typings [Otávio Jacobi]
|
|
19
|
+
> * Optimize getDeviceUrl request in one query [Otávio Jacobi]
|
|
20
|
+
>
|
|
21
|
+
> ### balena-sdk-16.44.1 - 2023-05-09
|
|
22
|
+
>
|
|
23
|
+
> * Fix device.getAllByOrganization parameter docs [Otávio Jacobi]
|
|
24
|
+
>
|
|
25
|
+
> ### balena-sdk-16.44.0 - 2023-04-27
|
|
26
|
+
>
|
|
27
|
+
> * Add device.getAllByOrganization() [Thodoris Greasidis]
|
|
28
|
+
> * Deprecate Device's is_managed_by__device & manages__device properties [Thodoris Greasidis]
|
|
29
|
+
>
|
|
30
|
+
> ### balena-sdk-16.43.0 - 2023-04-19
|
|
31
|
+
>
|
|
32
|
+
> * Add test case DeviceHistory expandable resources [fisehara]
|
|
33
|
+
> * Make DeviceHistory referenced resources expandable [fisehara]
|
|
34
|
+
>
|
|
35
|
+
> ### balena-sdk-16.42.0 - 2023-04-18
|
|
36
|
+
>
|
|
37
|
+
> * Add support for pine queries on Concept Type properties [Thodoris Greasidis]
|
|
38
|
+
> * Properly type Actor properties on resources [fisehara]
|
|
39
|
+
>
|
|
40
|
+
> ### balena-sdk-16.41.0 - 2023-04-07
|
|
41
|
+
>
|
|
42
|
+
> * Release model: Add support for getting/patching releases by `application` & `rawVersion` pairs [myarmolinsky]
|
|
43
|
+
>
|
|
44
|
+
|
|
45
|
+
</details>
|
|
46
|
+
|
|
47
|
+
* flowzone: update custom runs to use macos-12 [Alex Gonzalez]
|
|
48
|
+
|
|
7
49
|
## 16.1.0 - 2023-05-16
|
|
8
50
|
|
|
9
51
|
* build linux/arm packages [balenaCI]
|
|
@@ -55,11 +55,14 @@ class ConfigGenerateCmd extends command_2.default {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
const deviceManifest = await balena.models.device.getManifestBySlug(deviceType);
|
|
58
|
+
const { validateSecureBootOptionAndWarn } = await Promise.resolve().then(() => require('../../utils/config'));
|
|
59
|
+
await validateSecureBootOptionAndWarn(options.secureBoot, deviceType, options.version);
|
|
58
60
|
const answers = await (0, lazy_1.getCliForm)().run(deviceManifest.options, {
|
|
59
61
|
override: { ...options, app: options.fleet, application: options.fleet },
|
|
60
62
|
});
|
|
61
63
|
answers.version = options.version;
|
|
62
64
|
answers.developmentMode = options.dev;
|
|
65
|
+
answers.secureBoot = options.secureBoot;
|
|
63
66
|
answers.provisioningKeyName = options['provisioning-key-name'];
|
|
64
67
|
answers.provisioningKeyExpiryDate = options['provisioning-key-expiry-date'];
|
|
65
68
|
const { generateDeviceConfig, generateApplicationConfig } = await Promise.resolve().then(() => require('../../utils/config'));
|
|
@@ -99,6 +102,8 @@ ConfigGenerateCmd.description = (0, lazy_1.stripIndent) `
|
|
|
99
102
|
|
|
100
103
|
${messages_1.devModeInfo.split('\n').join('\n\t\t')}
|
|
101
104
|
|
|
105
|
+
${messages_1.secureBootInfo.split('\n').join('\n\t\t')}
|
|
106
|
+
|
|
102
107
|
To configure an image for a fleet of mixed device types, use the --fleet option
|
|
103
108
|
alongside the --deviceType option to specify the target device type.
|
|
104
109
|
|
|
@@ -113,6 +118,7 @@ ConfigGenerateCmd.examples = [
|
|
|
113
118
|
'$ balena config generate --device 7cf02a6 --version 2.12.7 --deviceApiKey <existingDeviceKey>',
|
|
114
119
|
'$ balena config generate --device 7cf02a6 --version 2.12.7 --output config.json',
|
|
115
120
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --dev',
|
|
121
|
+
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --secureBoot',
|
|
116
122
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --deviceType fincm3',
|
|
117
123
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --output config.json',
|
|
118
124
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --network wifi --wifiSsid mySsid --wifiKey abcdefgh --appUpdatePollInterval 15',
|
|
@@ -125,6 +131,7 @@ ConfigGenerateCmd.flags = {
|
|
|
125
131
|
}),
|
|
126
132
|
fleet: { ...cf.fleet, exclusive: ['device'] },
|
|
127
133
|
dev: cf.dev,
|
|
134
|
+
secureBoot: cf.secureBoot,
|
|
128
135
|
device: {
|
|
129
136
|
...cf.device,
|
|
130
137
|
exclusive: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../lib/commands/config/generate.ts"],"names":[],"mappings":";;AAiBA,4CAAuC;AACvC,2CAAoC;AACpC,+CAA+C;AAC/C,2CAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../lib/commands/config/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,12 +50,15 @@ class OsConfigureCmd extends command_2.default {
|
|
|
50
50
|
(await getOsVersionFromImage(params.image, deviceTypeManifest, devInit));
|
|
51
51
|
const { validateDevOptionAndWarn } = await Promise.resolve().then(() => require('../../utils/config'));
|
|
52
52
|
await validateDevOptionAndWarn(options.dev, osVersion);
|
|
53
|
+
const { validateSecureBootOptionAndWarn } = await Promise.resolve().then(() => require('../../utils/config'));
|
|
54
|
+
await validateSecureBootOptionAndWarn(options.secureBoot, deviceTypeSlug, osVersion);
|
|
53
55
|
const answers = await askQuestionsForDeviceType(deviceTypeManifest, options, configJson);
|
|
54
56
|
if (options.fleet) {
|
|
55
57
|
answers.deviceType = deviceTypeSlug;
|
|
56
58
|
}
|
|
57
59
|
answers.version = osVersion;
|
|
58
60
|
answers.developmentMode = options.dev;
|
|
61
|
+
answers.secureBoot = options.secureBoot;
|
|
59
62
|
answers.provisioningKeyName = options['provisioning-key-name'];
|
|
60
63
|
answers.provisioningKeyExpiryDate = options['provisioning-key-expiry-date'];
|
|
61
64
|
if (_.isEmpty(configJson)) {
|
|
@@ -112,6 +115,8 @@ OsConfigureCmd.description = (0, lazy_1.stripIndent) `
|
|
|
112
115
|
|
|
113
116
|
${messages_1.devModeInfo.split('\n').join('\n\t\t')}
|
|
114
117
|
|
|
118
|
+
${messages_1.secureBootInfo.split('\n').join('\n\t\t')}
|
|
119
|
+
|
|
115
120
|
The --system-connection (-c) option is used to inject NetworkManager connection
|
|
116
121
|
profiles for additional network interfaces, such as cellular/GSM or additional
|
|
117
122
|
WiFi or ethernet connections. This option may be passed multiple times in case there
|
|
@@ -165,6 +170,7 @@ OsConfigureCmd.flags = {
|
|
|
165
170
|
description: 'WiFi SSID (network name) (non-interactive configuration)',
|
|
166
171
|
}),
|
|
167
172
|
dev: cf.dev,
|
|
173
|
+
secureBoot: cf.secureBoot,
|
|
168
174
|
device: {
|
|
169
175
|
...cf.device,
|
|
170
176
|
exclusive: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../lib/commands/os/configure.ts"],"names":[],"mappings":";;AAiBA,4CAAuC;AAEvC,+BAAiC;AACjC,4BAA4B;AAC5B,2CAAoC;AACpC,yCAA6C;AAC7C,+CAA+C;AAC/C,2CAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../lib/commands/os/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare const verbose: IBooleanFlag<boolean>;
|
|
|
11
11
|
export declare const yes: IBooleanFlag<boolean>;
|
|
12
12
|
export declare const force: IBooleanFlag<boolean>;
|
|
13
13
|
export declare const dev: IBooleanFlag<boolean>;
|
|
14
|
+
export declare const secureBoot: IBooleanFlag<boolean>;
|
|
14
15
|
export declare const drive: flags.IOptionFlag<string | undefined>;
|
|
15
16
|
export declare const driveOrImg: flags.IOptionFlag<string | undefined>;
|
|
16
17
|
export declare const deviceType: flags.IOptionFlag<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dataSetOutputFlags = exports.dataOutputFlags = exports.json = exports.deviceType = exports.driveOrImg = exports.drive = exports.dev = exports.force = exports.yes = exports.verbose = exports.service = exports.release = exports.quiet = exports.help = exports.device = exports.fleet = void 0;
|
|
3
|
+
exports.dataSetOutputFlags = exports.dataOutputFlags = exports.json = exports.deviceType = exports.driveOrImg = exports.drive = exports.secureBoot = exports.dev = exports.force = exports.yes = exports.verbose = exports.service = exports.release = exports.quiet = exports.help = exports.device = exports.fleet = void 0;
|
|
4
4
|
const command_1 = require("@oclif/command");
|
|
5
5
|
const lazy_1 = require("./lazy");
|
|
6
6
|
const normalization_1 = require("./normalization");
|
|
@@ -46,6 +46,10 @@ exports.dev = command_1.flags.boolean({
|
|
|
46
46
|
description: 'Configure balenaOS to operate in development mode',
|
|
47
47
|
default: false,
|
|
48
48
|
});
|
|
49
|
+
exports.secureBoot = command_1.flags.boolean({
|
|
50
|
+
description: 'Configure balenaOS installer to opt-in secure boot and disk encryption',
|
|
51
|
+
default: false,
|
|
52
|
+
});
|
|
49
53
|
exports.drive = command_1.flags.string({
|
|
50
54
|
char: 'd',
|
|
51
55
|
description: (0, lazy_1.stripIndent) `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-flags.js","sourceRoot":"","sources":["../../lib/utils/common-flags.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common-flags.js","sourceRoot":"","sources":["../../lib/utils/common-flags.ts"],"names":[],"mappings":";;;AAiBA,4CAAuC;AACvC,iCAAqC;AACrC,mDAAkD;AAKrC,QAAA,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,+BAAe;CACtB,CAAC,CAAC;AAEU,QAAA,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,aAAa;CAC1B,CAAC,CAAC;AAEU,QAAA,IAAI,GAAuB,eAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAErD,QAAA,KAAK,GAA0B,eAAK,CAAC,OAAO,CAAC;IACzD,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,YAAY;CACzB,CAAC,CAAC;AAEU,QAAA,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,cAAc;CAC3B,CAAC,CAAC;AAEU,QAAA,OAAO,GAA0B,eAAK,CAAC,OAAO,CAAC;IAC3D,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,wBAAwB;IACrC,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,GAAG,GAA0B,eAAK,CAAC,OAAO,CAAC;IACvD,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,qDAAqD;IAClE,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,KAAK,GAA0B,eAAK,CAAC,OAAO,CAAC;IACzD,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,wCAAwC;IACrD,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,GAAG,GAA0B,eAAK,CAAC,OAAO,CAAC;IACvD,WAAW,EAAE,mDAAmD;IAChE,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,UAAU,GAA0B,eAAK,CAAC,OAAO,CAAC;IAC9D,WAAW,EACV,wEAAwE;IACzE,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,IAAA,kBAAW,EAAA;;;;EAIvB;CACD,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,GAAG;IACT,WAAW,EACV,2EAA2E;CAC5E,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC;IACtC,WAAW,EACV,qEAAqE;IACtE,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,IAAI;CACd,CAAC,CAAC;AAEU,QAAA,IAAI,GAA0B,eAAK,CAAC,OAAO,CAAC;IACxD,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,+CAA+C;IAC5D,OAAO,EAAE,KAAK;CACd,CAAC,CAAC;AAEU,QAAA,eAAe,GAAmC;IAC9D,MAAM,EAAE,eAAK,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,6CAA6C;KAC1D,CAAC;IACF,IAAI,EAAE,eAAK,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,CAAC,aAAa,CAAC;QAC1B,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,KAAK;KACd,CAAC;CACF,CAAC;AAEW,QAAA,kBAAkB,GACM;IACpC,GAAG,uBAAe;IAClB,MAAM,EAAE,eAAK,CAAC,MAAM,CAAC;QACpB,WAAW,EACV,+EAA+E;KAChF,CAAC;IACF,WAAW,EAAE,eAAK,CAAC,OAAO,CAAC;QAC1B,SAAS,EAAE,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK;KACd,CAAC;IACF,aAAa,EAAE,eAAK,CAAC,OAAO,CAAC;QAC5B,SAAS,EAAE,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,KAAK;KACd,CAAC;IACF,IAAI,EAAE,eAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,qDAAqD;KAClE,CAAC;CACF,CAAC"}
|
package/build/utils/config.d.ts
CHANGED
|
@@ -28,6 +28,9 @@ export interface ImgConfig {
|
|
|
28
28
|
os?: {
|
|
29
29
|
sshKeys?: string[];
|
|
30
30
|
};
|
|
31
|
+
installer?: {
|
|
32
|
+
secureboot?: boolean;
|
|
33
|
+
};
|
|
31
34
|
}
|
|
32
35
|
export declare function generateApplicationConfig(application: BalenaSdk.Application, options: {
|
|
33
36
|
version: string;
|
|
@@ -36,6 +39,7 @@ export declare function generateApplicationConfig(application: BalenaSdk.Applica
|
|
|
36
39
|
os?: {
|
|
37
40
|
sshKeys?: string[];
|
|
38
41
|
};
|
|
42
|
+
secureBoot?: boolean;
|
|
39
43
|
}): Promise<ImgConfig>;
|
|
40
44
|
export declare function generateDeviceConfig(device: DeviceWithDeviceType & {
|
|
41
45
|
belongs_to__application: BalenaSdk.PineDeferred;
|
|
@@ -43,3 +47,4 @@ export declare function generateDeviceConfig(device: DeviceWithDeviceType & {
|
|
|
43
47
|
version: string;
|
|
44
48
|
}): Promise<ImgConfig>;
|
|
45
49
|
export declare function validateDevOptionAndWarn(dev?: boolean, version?: string, logger?: import('./logger')): Promise<void>;
|
|
50
|
+
export declare function validateSecureBootOptionAndWarn(secureBoot?: boolean, slug?: string, version?: string, logger?: import('./logger')): Promise<void>;
|
package/build/utils/config.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateDevOptionAndWarn = exports.generateDeviceConfig = exports.generateApplicationConfig = void 0;
|
|
3
|
+
exports.validateSecureBootOptionAndWarn = exports.validateDevOptionAndWarn = exports.generateDeviceConfig = exports.generateApplicationConfig = void 0;
|
|
4
4
|
const semver = require("balena-semver");
|
|
5
5
|
const lazy_1 = require("./lazy");
|
|
6
6
|
async function generateApplicationConfig(application, options) {
|
|
7
|
+
var _a;
|
|
7
8
|
options = {
|
|
8
9
|
...options,
|
|
9
10
|
appUpdatePollInterval: options.appUpdatePollInterval || 10,
|
|
@@ -15,6 +16,10 @@ async function generateApplicationConfig(application, options) {
|
|
|
15
16
|
? [...config.os.sshKeys, ...options.os.sshKeys]
|
|
16
17
|
: options.os.sshKeys;
|
|
17
18
|
}
|
|
19
|
+
if (options.secureBoot) {
|
|
20
|
+
(_a = config.installer) !== null && _a !== void 0 ? _a : (config.installer = {});
|
|
21
|
+
config.installer.secureboot = options.secureBoot;
|
|
22
|
+
}
|
|
18
23
|
return config;
|
|
19
24
|
}
|
|
20
25
|
exports.generateApplicationConfig = generateApplicationConfig;
|
|
@@ -67,4 +72,41 @@ async function validateDevOptionAndWarn(dev, version, logger) {
|
|
|
67
72
|
Therefore, development mode should only be used in private, trusted local networks.`);
|
|
68
73
|
}
|
|
69
74
|
exports.validateDevOptionAndWarn = validateDevOptionAndWarn;
|
|
75
|
+
async function validateSecureBootOptionAndWarn(secureBoot, slug, version, logger) {
|
|
76
|
+
if (!secureBoot) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const { ExpectedError } = await Promise.resolve().then(() => require('../errors'));
|
|
80
|
+
if (!version) {
|
|
81
|
+
throw new ExpectedError(`Error: No version provided`);
|
|
82
|
+
}
|
|
83
|
+
if (!slug) {
|
|
84
|
+
throw new ExpectedError(`Error: No device type provided`);
|
|
85
|
+
}
|
|
86
|
+
const sdk = (0, lazy_1.getBalenaSdk)();
|
|
87
|
+
const releasePineOpts = {
|
|
88
|
+
$select: 'contract',
|
|
89
|
+
$filter: { raw_version: `${version.replace(/^v/, '')}` },
|
|
90
|
+
};
|
|
91
|
+
const [osRelease] = (await sdk.models.os.getAllOsVersions(slug, releasePineOpts));
|
|
92
|
+
if (!osRelease) {
|
|
93
|
+
throw new ExpectedError(`Error: No ${version} release for ${slug}`);
|
|
94
|
+
}
|
|
95
|
+
const contract = osRelease.contract ? JSON.parse(osRelease.contract) : null;
|
|
96
|
+
if (contract === null || contract === void 0 ? void 0 : contract.provides.some((entry) => {
|
|
97
|
+
return entry.type === 'sw.feature' && entry.slug === 'secureboot';
|
|
98
|
+
})) {
|
|
99
|
+
if (!logger) {
|
|
100
|
+
const Logger = await Promise.resolve().then(() => require('./logger'));
|
|
101
|
+
logger = Logger.getLogger();
|
|
102
|
+
}
|
|
103
|
+
logger.logInfo((0, lazy_1.stripIndent) `
|
|
104
|
+
The '--secureBoot' option is being used to configure a balenaOS installer image
|
|
105
|
+
into secure boot and full disk encryption.`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
throw new ExpectedError(`Error: The '--secureBoot' option is not supported for ${slug} in ${version}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.validateSecureBootOptionAndWarn = validateSecureBootOptionAndWarn;
|
|
70
112
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/utils/config.ts"],"names":[],"mappings":";;;AAgBA,wCAAwC;AACxC,iCAAmD;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export declare const dockerignoreHelp: string;
|
|
|
9
9
|
export declare const applicationIdInfo = "Fleets may be specified by fleet name or slug. Fleet slugs are\nthe recommended option, as they are unique and unambiguous. Slugs can be\nlisted with the `balena fleets` command. Note that slugs may change if the\nfleet is renamed. Fleet names are not unique and may result in \"Fleet is\nambiguous\" errors at any time (even if it \"used to work in the past\"), for\nexample if the name clashes with a newly created public fleet, or with fleets\nfrom other balena accounts that you may be invited to join under any role.\nFor this reason, fleet names are especially discouraged in scripts (e.g. CI\nenvironments).";
|
|
10
10
|
export declare const applicationNameNote = "Fleets may be specified by fleet name or slug. Slugs are recommended because\nthey are unique and unambiguous. Slugs can be listed with the `balena fleets`\ncommand. Note that slugs may change if the fleet is renamed. Fleet names are\nnot unique and may result in \"Fleet is ambiguous\" errors at any time (even if\n\"it used to work in the past\"), for example if the name clashes with a newly\ncreated public/open fleet, or with fleets from other balena accounts that you\nmay be invited to join under any role. For this reason, fleet names are\nespecially discouraged in scripts (e.g. CI environments).";
|
|
11
11
|
export declare const devModeInfo = "The '--dev' option is used to configure balenaOS to operate in development mode,\nallowing anauthenticated root ssh access and exposing network ports such as\nbalenaEngine's 2375 (unencrypted). This option causes `\"developmentMode\": true`\nto be inserted in the 'config.json' file in the image's boot partion. Development\nmode (as a configurable option) is applicable to balenaOS releases from early\n2022. Older releases have separate development and production balenaOS images\nthat cannot be reconfigured through 'config.json' or the '--dev' option. Do not\nconfuse the balenaOS \"development mode\" with a device's \"local mode\", the latter\nbeing a supervisor feature that allows the \"balena push\" command to push a user's\napplication directly to a device in the local network.";
|
|
12
|
+
export declare const secureBootInfo = "The '--secureBoot' option is used to configure a balenaOS installer image to opt-in\nsecure boot and disk encryption.";
|
|
12
13
|
export declare const jsonInfo = "The --json option is recommended when scripting the output of this command,\nbecause field names are less likely to change in JSON format and because it\nbetter represents data types like arrays, empty strings and null values.\nThe 'jq' utility may be helpful for querying JSON fields in shell scripts\n(https://stedolan.github.io/jq/manual/).";
|
|
13
14
|
export declare const buildArgDeprecation = "WARNING: You have specified a '--buildArg' option, which is now deprecated, and\nmay be removed in the future. The recommended alternative is build-time secrets:\nhttps://www.balena.io/docs/learn/deploy/deployment/#build-time-secrets-and-variables\n\nIf you have a particular use for buildArg, which is not satisfied by build-time\nsecrets, please contact us via support or the forums: https://forums.balena.io/\n\n";
|
|
14
15
|
export declare function getNodeEngineVersionWarn(version: string, validVersions: string): string;
|
package/build/utils/messages.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getNodeEngineVersionWarn = exports.buildArgDeprecation = exports.jsonInfo = exports.devModeInfo = exports.applicationNameNote = exports.applicationIdInfo = exports.dockerignoreHelp = exports.registrySecretsHelp = exports.balenaAsciiArt = exports.warnify = exports.deprecationPolicyNote = exports.getHelp = exports.help = exports.reachingOut = void 0;
|
|
3
|
+
exports.getNodeEngineVersionWarn = exports.buildArgDeprecation = exports.jsonInfo = exports.secureBootInfo = exports.devModeInfo = exports.applicationNameNote = exports.applicationIdInfo = exports.dockerignoreHelp = exports.registrySecretsHelp = exports.balenaAsciiArt = exports.warnify = exports.deprecationPolicyNote = exports.getHelp = exports.help = exports.reachingOut = void 0;
|
|
4
4
|
exports.reachingOut = `\
|
|
5
5
|
For further help or support, visit:
|
|
6
6
|
https://www.balena.io/docs/reference/balena-cli/#support-faq-and-troubleshooting
|
|
@@ -130,6 +130,9 @@ that cannot be reconfigured through 'config.json' or the '--dev' option. Do not
|
|
|
130
130
|
confuse the balenaOS "development mode" with a device's "local mode", the latter
|
|
131
131
|
being a supervisor feature that allows the "balena push" command to push a user's
|
|
132
132
|
application directly to a device in the local network.`;
|
|
133
|
+
exports.secureBootInfo = `\
|
|
134
|
+
The '--secureBoot' option is used to configure a balenaOS installer image to opt-in
|
|
135
|
+
secure boot and disk encryption.`;
|
|
133
136
|
exports.jsonInfo = `\
|
|
134
137
|
The --json option is recommended when scripting the output of this command,
|
|
135
138
|
because field names are less likely to change in JSON format and because it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../lib/utils/messages.ts"],"names":[],"mappings":";;;AAiBa,QAAA,WAAW,GAAG;;;CAG1B,CAAC;AAEF,MAAM,SAAS,GAAG;;GAEf,CAAC;AAES,QAAA,IAAI,GAAG,mBAAW,CAAC;AAIzB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,YAAI,CAAC;AAA5D,QAAA,OAAO,WAAqD;AAE5D,QAAA,qBAAqB,GAAG;;;;CAIpC,CAAC;AAaF,SAAgB,OAAO,CAAC,GAAW,EAAE,MAAM,GAAG,SAAS;IACtD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAND,0BAMC;AAEY,QAAA,cAAc,GAAG;;;;;;CAM7B,CAAC;AAEW,QAAA,mBAAmB,GAC/B,sBAAsB;IACtB;;;;;;;;;;;;;;;;;;;gCAmB+B,CAAC;AAEpB,QAAA,gBAAgB,GAC5B,sCAAsC;IACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA6BkC;IAClC;;;;;;;;;;;;;;;;qDAgBoD,CAAC;AAEzC,QAAA,iBAAiB,GAAG;;;;;;;;;eASlB,CAAC;AAEH,QAAA,mBAAmB,GAAG;;;;;;;;0DAQuB,CAAC;AAE9C,QAAA,WAAW,GAAG;;;;;;;;;;uDAU4B,CAAC;AAE3C,QAAA,QAAQ,GAAG;;;;;yCAKiB,CAAC;AAE7B,QAAA,mBAAmB,GAAG;;;;;;;GAOhC,CAAC;AAEJ,SAAgB,wBAAwB,CACvC,OAAe,EACf,aAAqB;IAErB,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,OAAO,OAAO,CAAC;mBACG,OAAO,mCAAmC,aAAa;oCACtC,CAAC,CAAC;AACtC,CAAC;AARD,4DAQC"}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../lib/utils/messages.ts"],"names":[],"mappings":";;;AAiBa,QAAA,WAAW,GAAG;;;CAG1B,CAAC;AAEF,MAAM,SAAS,GAAG;;GAEf,CAAC;AAES,QAAA,IAAI,GAAG,mBAAW,CAAC;AAIzB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,YAAI,CAAC;AAA5D,QAAA,OAAO,WAAqD;AAE5D,QAAA,qBAAqB,GAAG;;;;CAIpC,CAAC;AAaF,SAAgB,OAAO,CAAC,GAAW,EAAE,MAAM,GAAG,SAAS;IACtD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAND,0BAMC;AAEY,QAAA,cAAc,GAAG;;;;;;CAM7B,CAAC;AAEW,QAAA,mBAAmB,GAC/B,sBAAsB;IACtB;;;;;;;;;;;;;;;;;;;gCAmB+B,CAAC;AAEpB,QAAA,gBAAgB,GAC5B,sCAAsC;IACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA6BkC;IAClC;;;;;;;;;;;;;;;;qDAgBoD,CAAC;AAEzC,QAAA,iBAAiB,GAAG;;;;;;;;;eASlB,CAAC;AAEH,QAAA,mBAAmB,GAAG;;;;;;;;0DAQuB,CAAC;AAE9C,QAAA,WAAW,GAAG;;;;;;;;;;uDAU4B,CAAC;AAE3C,QAAA,cAAc,GAAG;;iCAEG,CAAC;AAErB,QAAA,QAAQ,GAAG;;;;;yCAKiB,CAAC;AAE7B,QAAA,mBAAmB,GAAG;;;;;;;GAOhC,CAAC;AAEJ,SAAgB,wBAAwB,CACvC,OAAe,EACf,aAAqB;IAErB,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,OAAO,OAAO,CAAC;mBACG,OAAO,mCAAmC,aAAa;oCACtC,CAAC,CAAC;AACtC,CAAC;AARD,4DAQC"}
|
|
@@ -19,13 +19,18 @@ import { flags } from '@oclif/command';
|
|
|
19
19
|
import Command from '../../command';
|
|
20
20
|
import * as cf from '../../utils/common-flags';
|
|
21
21
|
import { getBalenaSdk, getCliForm, stripIndent } from '../../utils/lazy';
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
applicationIdInfo,
|
|
24
|
+
devModeInfo,
|
|
25
|
+
secureBootInfo,
|
|
26
|
+
} from '../../utils/messages';
|
|
23
27
|
import type { PineDeferred } from 'balena-sdk';
|
|
24
28
|
|
|
25
29
|
interface FlagsDef {
|
|
26
30
|
version: string; // OS version
|
|
27
31
|
fleet?: string;
|
|
28
32
|
dev?: boolean; // balenaOS development variant
|
|
33
|
+
secureBoot?: boolean;
|
|
29
34
|
device?: string;
|
|
30
35
|
deviceApiKey?: string;
|
|
31
36
|
deviceType?: string;
|
|
@@ -51,6 +56,8 @@ export default class ConfigGenerateCmd extends Command {
|
|
|
51
56
|
|
|
52
57
|
${devModeInfo.split('\n').join('\n\t\t')}
|
|
53
58
|
|
|
59
|
+
${secureBootInfo.split('\n').join('\n\t\t')}
|
|
60
|
+
|
|
54
61
|
To configure an image for a fleet of mixed device types, use the --fleet option
|
|
55
62
|
alongside the --deviceType option to specify the target device type.
|
|
56
63
|
|
|
@@ -66,6 +73,7 @@ export default class ConfigGenerateCmd extends Command {
|
|
|
66
73
|
'$ balena config generate --device 7cf02a6 --version 2.12.7 --deviceApiKey <existingDeviceKey>',
|
|
67
74
|
'$ balena config generate --device 7cf02a6 --version 2.12.7 --output config.json',
|
|
68
75
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --dev',
|
|
76
|
+
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --secureBoot',
|
|
69
77
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --deviceType fincm3',
|
|
70
78
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --output config.json',
|
|
71
79
|
'$ balena config generate --fleet myorg/fleet --version 2.12.7 --network wifi --wifiSsid mySsid --wifiKey abcdefgh --appUpdatePollInterval 15',
|
|
@@ -80,6 +88,7 @@ export default class ConfigGenerateCmd extends Command {
|
|
|
80
88
|
}),
|
|
81
89
|
fleet: { ...cf.fleet, exclusive: ['device'] },
|
|
82
90
|
dev: cf.dev,
|
|
91
|
+
secureBoot: cf.secureBoot,
|
|
83
92
|
device: {
|
|
84
93
|
...cf.device,
|
|
85
94
|
exclusive: [
|
|
@@ -195,6 +204,15 @@ export default class ConfigGenerateCmd extends Command {
|
|
|
195
204
|
deviceType,
|
|
196
205
|
);
|
|
197
206
|
|
|
207
|
+
const { validateSecureBootOptionAndWarn } = await import(
|
|
208
|
+
'../../utils/config'
|
|
209
|
+
);
|
|
210
|
+
await validateSecureBootOptionAndWarn(
|
|
211
|
+
options.secureBoot,
|
|
212
|
+
deviceType,
|
|
213
|
+
options.version,
|
|
214
|
+
);
|
|
215
|
+
|
|
198
216
|
// Prompt for values
|
|
199
217
|
// Pass params as an override: if there is any param with exactly the same name as a
|
|
200
218
|
// required option, that value is used (and the corresponding question is not asked)
|
|
@@ -203,6 +221,7 @@ export default class ConfigGenerateCmd extends Command {
|
|
|
203
221
|
});
|
|
204
222
|
answers.version = options.version;
|
|
205
223
|
answers.developmentMode = options.dev;
|
|
224
|
+
answers.secureBoot = options.secureBoot;
|
|
206
225
|
answers.provisioningKeyName = options['provisioning-key-name'];
|
|
207
226
|
answers.provisioningKeyExpiryDate = options['provisioning-key-expiry-date'];
|
|
208
227
|
|
|
@@ -23,7 +23,11 @@ import Command from '../../command';
|
|
|
23
23
|
import { ExpectedError } from '../../errors';
|
|
24
24
|
import * as cf from '../../utils/common-flags';
|
|
25
25
|
import { getBalenaSdk, stripIndent, getCliForm } from '../../utils/lazy';
|
|
26
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
applicationIdInfo,
|
|
28
|
+
devModeInfo,
|
|
29
|
+
secureBootInfo,
|
|
30
|
+
} from '../../utils/messages';
|
|
27
31
|
|
|
28
32
|
const CONNECTIONS_FOLDER = '/system-connections';
|
|
29
33
|
|
|
@@ -36,6 +40,7 @@ interface FlagsDef {
|
|
|
36
40
|
'config-wifi-key'?: string;
|
|
37
41
|
'config-wifi-ssid'?: string;
|
|
38
42
|
dev?: boolean; // balenaOS development variant
|
|
43
|
+
secureBoot?: boolean;
|
|
39
44
|
device?: string; // device UUID
|
|
40
45
|
'device-type'?: string;
|
|
41
46
|
help?: void;
|
|
@@ -53,6 +58,7 @@ interface ArgsDef {
|
|
|
53
58
|
interface Answers {
|
|
54
59
|
appUpdatePollInterval: number; // in minutes
|
|
55
60
|
developmentMode?: boolean; // balenaOS development variant
|
|
61
|
+
secureBoot?: boolean;
|
|
56
62
|
deviceType: string; // e.g. "raspberrypi3"
|
|
57
63
|
network: 'ethernet' | 'wifi';
|
|
58
64
|
version: string; // e.g. "2.32.0+rev1"
|
|
@@ -80,6 +86,8 @@ export default class OsConfigureCmd extends Command {
|
|
|
80
86
|
|
|
81
87
|
${devModeInfo.split('\n').join('\n\t\t')}
|
|
82
88
|
|
|
89
|
+
${secureBootInfo.split('\n').join('\n\t\t')}
|
|
90
|
+
|
|
83
91
|
The --system-connection (-c) option is used to inject NetworkManager connection
|
|
84
92
|
profiles for additional network interfaces, such as cellular/GSM or additional
|
|
85
93
|
WiFi or ethernet connections. This option may be passed multiple times in case there
|
|
@@ -140,6 +148,7 @@ export default class OsConfigureCmd extends Command {
|
|
|
140
148
|
description: 'WiFi SSID (network name) (non-interactive configuration)',
|
|
141
149
|
}),
|
|
142
150
|
dev: cf.dev,
|
|
151
|
+
secureBoot: cf.secureBoot,
|
|
143
152
|
device: {
|
|
144
153
|
...cf.device,
|
|
145
154
|
exclusive: [
|
|
@@ -238,6 +247,15 @@ export default class OsConfigureCmd extends Command {
|
|
|
238
247
|
const { validateDevOptionAndWarn } = await import('../../utils/config');
|
|
239
248
|
await validateDevOptionAndWarn(options.dev, osVersion);
|
|
240
249
|
|
|
250
|
+
const { validateSecureBootOptionAndWarn } = await import(
|
|
251
|
+
'../../utils/config'
|
|
252
|
+
);
|
|
253
|
+
await validateSecureBootOptionAndWarn(
|
|
254
|
+
options.secureBoot,
|
|
255
|
+
deviceTypeSlug,
|
|
256
|
+
osVersion,
|
|
257
|
+
);
|
|
258
|
+
|
|
241
259
|
const answers: Answers = await askQuestionsForDeviceType(
|
|
242
260
|
deviceTypeManifest,
|
|
243
261
|
options,
|
|
@@ -248,6 +266,7 @@ export default class OsConfigureCmd extends Command {
|
|
|
248
266
|
}
|
|
249
267
|
answers.version = osVersion;
|
|
250
268
|
answers.developmentMode = options.dev;
|
|
269
|
+
answers.secureBoot = options.secureBoot;
|
|
251
270
|
answers.provisioningKeyName = options['provisioning-key-name'];
|
|
252
271
|
answers.provisioningKeyExpiryDate = options['provisioning-key-expiry-date'];
|
|
253
272
|
|
|
@@ -74,6 +74,12 @@ export const dev: IBooleanFlag<boolean> = flags.boolean({
|
|
|
74
74
|
default: false,
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
+
export const secureBoot: IBooleanFlag<boolean> = flags.boolean({
|
|
78
|
+
description:
|
|
79
|
+
'Configure balenaOS installer to opt-in secure boot and disk encryption',
|
|
80
|
+
default: false,
|
|
81
|
+
});
|
|
82
|
+
|
|
77
83
|
export const drive = flags.string({
|
|
78
84
|
char: 'd',
|
|
79
85
|
description: stripIndent`
|
package/lib/utils/config.ts
CHANGED
|
@@ -52,6 +52,10 @@ export interface ImgConfig {
|
|
|
52
52
|
os?: {
|
|
53
53
|
sshKeys?: string[];
|
|
54
54
|
};
|
|
55
|
+
|
|
56
|
+
installer?: {
|
|
57
|
+
secureboot?: boolean;
|
|
58
|
+
};
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
export async function generateApplicationConfig(
|
|
@@ -63,6 +67,7 @@ export async function generateApplicationConfig(
|
|
|
63
67
|
os?: {
|
|
64
68
|
sshKeys?: string[];
|
|
65
69
|
};
|
|
70
|
+
secureBoot?: boolean;
|
|
66
71
|
},
|
|
67
72
|
): Promise<ImgConfig> {
|
|
68
73
|
options = {
|
|
@@ -84,6 +89,12 @@ export async function generateApplicationConfig(
|
|
|
84
89
|
: options.os.sshKeys;
|
|
85
90
|
}
|
|
86
91
|
|
|
92
|
+
// configure installer secure boot opt-in if specified
|
|
93
|
+
if (options.secureBoot) {
|
|
94
|
+
config.installer ??= {};
|
|
95
|
+
config.installer.secureboot = options.secureBoot;
|
|
96
|
+
}
|
|
97
|
+
|
|
87
98
|
return config;
|
|
88
99
|
}
|
|
89
100
|
|
|
@@ -165,3 +176,62 @@ export async function validateDevOptionAndWarn(
|
|
|
165
176
|
and exposes network ports such as 2375 that allows unencrypted access to balenaEngine.
|
|
166
177
|
Therefore, development mode should only be used in private, trusted local networks.`);
|
|
167
178
|
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Chech whether the `--secureBoot` option of commands related to OS configuration
|
|
182
|
+
* such as `os configure` and `config generate` is compatible with a given
|
|
183
|
+
* OS release, and print a warning regarding the consequences of using that
|
|
184
|
+
* option.
|
|
185
|
+
*/
|
|
186
|
+
export async function validateSecureBootOptionAndWarn(
|
|
187
|
+
secureBoot?: boolean,
|
|
188
|
+
slug?: string,
|
|
189
|
+
version?: string,
|
|
190
|
+
logger?: import('./logger'),
|
|
191
|
+
) {
|
|
192
|
+
if (!secureBoot) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const { ExpectedError } = await import('../errors');
|
|
196
|
+
if (!version) {
|
|
197
|
+
throw new ExpectedError(`Error: No version provided`);
|
|
198
|
+
}
|
|
199
|
+
if (!slug) {
|
|
200
|
+
throw new ExpectedError(`Error: No device type provided`);
|
|
201
|
+
}
|
|
202
|
+
const sdk = getBalenaSdk();
|
|
203
|
+
const releasePineOpts = {
|
|
204
|
+
$select: 'contract',
|
|
205
|
+
$filter: { raw_version: `${version.replace(/^v/, '')}` },
|
|
206
|
+
} satisfies BalenaSdk.PineOptions<BalenaSdk.Release>;
|
|
207
|
+
// TODO: Remove the added type casting when the SDK returns the fully typed result
|
|
208
|
+
const [osRelease] = (await sdk.models.os.getAllOsVersions(
|
|
209
|
+
slug,
|
|
210
|
+
releasePineOpts,
|
|
211
|
+
)) as Array<
|
|
212
|
+
BalenaSdk.OsVersion &
|
|
213
|
+
BalenaSdk.PineTypedResult<BalenaSdk.Release, typeof releasePineOpts>
|
|
214
|
+
>;
|
|
215
|
+
if (!osRelease) {
|
|
216
|
+
throw new ExpectedError(`Error: No ${version} release for ${slug}`);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const contract = osRelease.contract ? JSON.parse(osRelease.contract) : null;
|
|
220
|
+
if (
|
|
221
|
+
contract?.provides.some((entry: Dictionary<string>) => {
|
|
222
|
+
return entry.type === 'sw.feature' && entry.slug === 'secureboot';
|
|
223
|
+
})
|
|
224
|
+
) {
|
|
225
|
+
if (!logger) {
|
|
226
|
+
const Logger = await import('./logger');
|
|
227
|
+
logger = Logger.getLogger();
|
|
228
|
+
}
|
|
229
|
+
logger.logInfo(stripIndent`
|
|
230
|
+
The '--secureBoot' option is being used to configure a balenaOS installer image
|
|
231
|
+
into secure boot and full disk encryption.`);
|
|
232
|
+
} else {
|
|
233
|
+
throw new ExpectedError(
|
|
234
|
+
`Error: The '--secureBoot' option is not supported for ${slug} in ${version}`,
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
}
|