amazon-ec2 - 使用 Chef-Solo 在 Spinnaker Pipeline 中烘焙 AMI
问题描述
我正在尝试在 Spinnaker 中构建测试管道以烘焙 AMI,然后更新 CloudFormation 模板以将 AMI 部署到 Auto Scaling 组中的 EC2 实例。
我开发了一个小型测试厨师食谱,在本地运行打包程序时效果很好。我在我的笔记本电脑上本地运行 berks 来出售我的食谱并将它们从我们内部的 Chef 超市中取出。Packer 配置了 chef-solo 供应器,如下面的示例打包器模板所示,并将食谱传输到打包器构建器 EC2 实例并运行 Chef。目前,我们正在使用 Linux 进行测试,但希望同时支持 Linux 和 Windows AMI。
是否可以将 chef-solo 与 Spinnaker 的自定义打包程序模板一起使用?如果是这样,在打包程序执行之前,berks 应该在何时何地运行以供应食谱?
{
"variables": {
"aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
"aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
"aws_region": "{{env `AWS_REGION`}}",
"ssh_private_key_file": "{{env `SSH_PRIVATE_KEY_FILE`}}",
"subnet_id": "{{env `AWS_SUBNET_ID`}}",
"vpc_id": "{{env `AWS_DEFAULT_VPC_ID`}}"
},
"builders": [
{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "{{user `aws_region`}}",
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "amzn2-ami-hvm-*-x86_64-gp2",
"root-device-type": "ebs"
},
"most_recent": true,
"owners": [
"amazon"
]
},
"ami_name": "test-ami-{{timestamp}}",
"ami_description": "Test Linux AMI",
"communicator": "ssh",
"instance_type": "m4.large",
"subnet_id": "{{user `subnet_id`}}",
"tags": {
"Name": "Test Linux AMI"
},
"ssh_username": "ec2-user",
"ssh_keypair_name": "TestKeypair",
"ssh_private_key_file": "{{user `ssh_private_key_file`}}",
"vpc_id": "{{user `vpc_id`}}"
}
],
"provisioners": [
{
"type": "shell-local",
"command": "berks vendor --delete -b ./Berksfile ./cookbooks"
},
{
"type": "chef-solo",
"cookbook_paths": [
"./cookbooks"
],
"run_list": [
"recipe[test_cookbook]"
]
}
}
解决方案
推荐阅读
- c# - Windows PE WinForm 应用程序未执行
- dart - 当flutter没有互联网连接时如何读取本地文件?
- javascript - Try/catch 块和未处理的承诺异常
- java - 调用 notifyDataSetChanged() 后如何在列表视图中设置文本
- django - Django 2.0 多次上传图片
- mysql - 如何在 sql 中更新时创建“自动增量”触发器
- java - vert.x 这里仍在运行一个查询-race-> SQLConnection 的错误问题
- python - Tensorflow 在计算时内存不足:如何发现内存泄漏?
- python - 从其他目录运行脚本时找不到库
- python - 每个时间间隔用数据库更新表