Azure DevOps - AWS CloudFormation 和参数
Azure DevOps - AWS CloudFormation and parameters
我有一个简单的 CloudFomration 模板来创建 VPC:
vpc.yaml
---
Parameters:
CidrBlock:
Type: String
Description: The primary IPv4 CIDR block for the VPC
Resources:
VPC:
Type: "AWS::EC2::VPC"
Properties:
CidrBlock: !Ref "CidrBlock"
Tags:
- Key: "Name"
Value: "This is the main VPC"
在我的 Azure Devops 管道中,我想使用 AWS Stack create 通过使用此 CloudFormation 模板来创建 VPC。
Azure-pipeline.yaml
---
jobs:
- job: Job1
steps:
- task: CloudFormationCreateOrUpdateStack@1
inputs:
awsCredentials: 'My-cred'
regionName: 'ap-southeast-2'
stackName: 'Stack1'
templateSource: 'file'
templateFile: 'vpc.yaml'
templateParametersSource: inline
templateParameters: |
- ParameterKey: CidrBlock
ParameterValue: '10.10.10.0/24'
显然,当我在调用 vpc.yaml 模板(如上 ^)时手动提供 CidrBlock 参数的值时,它会正常工作。但我想要做的是使用另一个文件来存储参数和值,并在 运行 连接 vpc 模板时传递它。
换句话说,我有一个 params.yaml 文件,其中我将所需的参数存储到 运行 vpc.yaml。当 运行 将 vpc.yaml 模板作为参数文件时,我该如何使用它?
params.yaml
---
parameters:
- name: CidrBlock
value: '10.10.10.0/24'
就像我在上面的 azure-pipeline 文件中引用模板文件的方式一样,有没有类似的方法可以用来引用参数文件而不是使用 templateParametersSource: inline ?
YAML 参数文件似乎有问题 aws-cli:
https://github.com/aws/aws-cli/issues/2275
您可以使用 JSON 文件:
[
{
"CidrBlock": "10.10.10.0/24",
}
]
听起来不像 Azure Bicep 或 ARM,您可以在创建参数文件时使用自己的密钥,AWS 需要一个特定的结构,您必须始终使用 ParameterKey 和 ParameterValue 作为键。
在我的例子中,params 文件应该是这样的:
---
- ParameterKey: CidrBlock
ParameterValue: '10.10.10.0/24'
我有一个简单的 CloudFomration 模板来创建 VPC:
vpc.yaml
---
Parameters:
CidrBlock:
Type: String
Description: The primary IPv4 CIDR block for the VPC
Resources:
VPC:
Type: "AWS::EC2::VPC"
Properties:
CidrBlock: !Ref "CidrBlock"
Tags:
- Key: "Name"
Value: "This is the main VPC"
在我的 Azure Devops 管道中,我想使用 AWS Stack create 通过使用此 CloudFormation 模板来创建 VPC。
Azure-pipeline.yaml
---
jobs:
- job: Job1
steps:
- task: CloudFormationCreateOrUpdateStack@1
inputs:
awsCredentials: 'My-cred'
regionName: 'ap-southeast-2'
stackName: 'Stack1'
templateSource: 'file'
templateFile: 'vpc.yaml'
templateParametersSource: inline
templateParameters: |
- ParameterKey: CidrBlock
ParameterValue: '10.10.10.0/24'
显然,当我在调用 vpc.yaml 模板(如上 ^)时手动提供 CidrBlock 参数的值时,它会正常工作。但我想要做的是使用另一个文件来存储参数和值,并在 运行 连接 vpc 模板时传递它。 换句话说,我有一个 params.yaml 文件,其中我将所需的参数存储到 运行 vpc.yaml。当 运行 将 vpc.yaml 模板作为参数文件时,我该如何使用它?
params.yaml
---
parameters:
- name: CidrBlock
value: '10.10.10.0/24'
就像我在上面的 azure-pipeline 文件中引用模板文件的方式一样,有没有类似的方法可以用来引用参数文件而不是使用 templateParametersSource: inline ?
YAML 参数文件似乎有问题 aws-cli:
https://github.com/aws/aws-cli/issues/2275
您可以使用 JSON 文件:
[
{
"CidrBlock": "10.10.10.0/24",
}
]
听起来不像 Azure Bicep 或 ARM,您可以在创建参数文件时使用自己的密钥,AWS 需要一个特定的结构,您必须始终使用 ParameterKey 和 ParameterValue 作为键。 在我的例子中,params 文件应该是这样的:
---
- ParameterKey: CidrBlock
ParameterValue: '10.10.10.0/24'