本地编辑可部署架构栈定义
堆栈定义文件定义了堆叠在一起形成更复杂可部署架构的成员可部署架构。 它规定了这些可部署架构如何相互关联的信息,如将架构连接在一起的输入引用。 如果计划通过私有目录与他人共享此解决方案,则需要堆栈定义,以帮助确保能成功部署。
除非您 在项目中堆叠了可部署架构,并希望通过私有目录与他人共享该解决方案,否则您不需要使用堆栈定义文件。
堆栈定义包含堆栈变量。 这些变量是用户可以配置的输入和堆叠式可部署架构的输出,显示在父级。 如下图所示,这些输入值在成员可部署架构中被引用。 堆栈定义还包括成员可部署架构的输入。 这些输入可以是将可部署架构连接在一起的引用。 需要特定值或引用才能成功部署解决方案的输入必须包含在堆栈定义中。 有关示例,请参阅 使用 CLI 创建堆栈定义。
使用控制台创建堆栈定义
在项目中,将可部署架构堆叠在一起并定义变量时,就会自动创建堆栈定义。 使用控制台堆叠可部署架构并定义堆栈变量具有以下好处:
- 您可以使用控制台中的引用选择器在堆叠的可部署架构之间创建引用,而不是从头开始编写引用。
- 部署项目中的堆叠架构有助于验证整体解决方案是否按设计运行,然后再由其他人进行配置和部署。
- 由于堆栈定义是根据控制台中的选择自动创建的,因此成员可部署架构的版本定位器 ID 等信息是准确的,并会自动更新。
在项目中,您可以选择要在堆栈级别包含的输入。 这些输入包含在堆栈定义的 inputs
部分中,并配置为项目中成员可部署架构中的引用。 在下图中,prefix
输入在 Custom Apache
成员可部署架构中突出显示。 如果选择了此输入,Default value
将更改为对堆栈级别输入的引用。 当用户从目录中将解决方案添加到项目中时,他们可以配置 prefix
输入,而 Custom Apache
成员架构将引用该值。 fp_vsi_floating_ip_address
输入引用另一个成员可部署架构的输出。 不应该选择该输入,因为该引用将成员架构联系在一起。 来自成员架构的此类输入包含在堆栈定义文件的 members
部分中。
编辑堆栈定义
要在本地编辑堆栈定义,请完成以下步骤:
-
完成 堆叠可部署架构、定义堆叠变量 以及 将堆叠架构加入私有目录的 步骤。
配置和部署堆叠在一起的架构,以验证解决方案是否按设计运行,然后再将其添加到私有目录中。
-
将可部署架构添加到私有目录后,您将进入目录中的“配置版本”页面。 从那里,单击操作菜单 >导出为代码。
您还可以使用项目 API 获取堆栈定义 方法或项目 CLI
ibmcloud project stack-definition
命令来导出堆栈定义。 -
打开
stack_definition.json
文件。 -
使用示例定义作为指导,编辑输入和输出变量。
-
将该文件添加到源代码存储库的根文件夹中。
下次向目录中添加解决方案的新版本时,就会包含您的更新。
示例定义文件
建议使用项目创建堆栈定义,以确保准确性。 不过,下面的代码片段可以用作模板,从头开始创建堆栈定义:
{
"inputs": [
{
"name": "Stack input 1",
"type": "string",
"hidden": false,
"required": true,
"default" : "Default value"
},
{
"name": "Stack input 2",
"type": "string",
"hidden": false,
"required": true
}
],
"outputs": [
{
"name": "Output 1 name",
"value": "The reference to this output value"
},
{
"name": "Output 2 name",
"value": "The reference to this output value"
}
],
"members": [
{
"Name": "Deployable architecture 1 name",
"Version_locator": "",
"inputs": [
{
"name": "Input 1 name",
"value": "reference"
},
{
"name": "Input 2 name",
"value": "reference"
}
]
},
{
"Name": "Deployable architecture 2 name",
"Version_locator": "",
"inputs": [
{
"name": "Input 1 name",
"value": "reference"
},
{
"name": "Input 2 name",
"value": "reference"
}
]
}
]
}
堆栈输入
inputs
值表示解决方案成功部署所需的输入变量数组。 用户从目录中将可部署架构添加到项目时,必须在部署前配置这些输入。 以下值可包含在 inputs
级别。
"inputs": [
{
"name": "Stack input 1",
"type": "string",
"hidden": false,
"required": true,
"default" : "Default value"
},
{
"name": "Stack input 2",
"type": "string",
"hidden": false,
"required": true
}
]
name
- 输入变量的名称。
type
- 变量的 Terraform 原始数据类型。 例如,
boolean
或string
。 hidden
- 一个布尔值,指示在安装期间是否应向用户隐藏该参数。
required
- 一个布尔值,指示用户是否需要在安装期间指定参数。
default
- 应在目录中设置的默认值。
堆栈输出
outputs
值表示在部署解决方案时创建的输出变量数组。 以下值可包含在 outputs
级别。
"outputs": [
{
"name": "Output 1 name",
"value": "The reference to this output value"
},
{
"name": "Output 2 name",
"value": "The reference to this output value"
}
]
name
- 输出变量的名称。
value
- 可以找到该值的位置的引用。 有关引用的更多信息,请 参阅引用值。
会员输入
members
值表示每个堆叠式可部署架构的输入和输出数组。 以下值可包含在 members
级别。
"members": [
{
"Name": "Deployable architecture 1 name",
"Version_locator": "",
"inputs": [
{
"name": "Input 1 name",
"value": "reference"
},
{
"name": "Input 2 name",
"value": "reference"
}
]
}
]
name
- 堆栈中包含的可部署架构的编程名称。
version_locator
- 标识成员可部署架构的版本。 要查找版本定位器,请选择目录中的产品以打开目录详细信息页面。 确保选择了正确的版本。 然后,单击“查看详细信息”。
inputs
- 堆叠在一起的成员可部署架构的输入。 包括整体解决方案部署所需的具有特定值的输入。 如果堆叠的成员架构相互依赖,则应在此处包含这些值作为参考。 有关更多信息,请 参阅引用值。 例如,如果其中一个架构需要与之堆叠的另一个架构的输出,则应添加输出作为值的引用。
name
- 输入变量的名称。 请勿编辑名称,因为它必须与成员可部署架构中使用的输入相匹配。
value
- 输入变量的值。 需要提供默认值或参考。