Packer:在Google Cloud上构建映像
安装运行网站或工具所需的软件可能需要一些时间才能完成。当我们的部署对时间敏感时(例如,当我们需要扩展Web服务器池以处理对您最新的花式袜子的突然关注时),这不是理想的选择。
我们可以通过预安装所需的软件并设置配置选项来解决此问题,然后我们可以将其转换为可以反复部署的映像。
为了使整个过程更快,可重复,并且我们可以轻松地进行模板制作-我们将使用打包程序
什么是Packer?
Packer是一种Hashicorp工具,可用于简化在云平台上或其他本地工具(如Vagrant(另一种Hashicorp工具)),Docker和VirtualBox上的系统映像的创建。
如何在Google Cloud Platform上使用它?
您需要在打包程序文件中创建“生成器”配置。
这是一个基本示例:
{
"builders": [
{
"type": "googlecompute",
"project_id": "my project",
"zone": "us-central1-a",
"source_image_family": "debian-10",
"ssh_username": "packer",
"image_name": "packer-{{timestamp}}",
"image_family": "socks-web"
}
]
}
我们上面设置的选项执行以下操作:
type
是我们正在使用的构建器的类型。这是googlecompute
因为我们正在与GCP交谈
project_id
是将要存储最终图像的项目
zone
将是我们建立形象的区域
source_image_family
这是一组图像,将从中获取基本图像
ssh_username
ssh用户名,我们将用于与将创建映像的实例进行对话
image_name
我们将创建的图像的名称。
图像名称在我们的项目中必须唯一,因此我们使用packer变量timestamp
来做到这一点。
image_family
我们的图像家族的名称。这是可选的,但以后会很有用。
这是什么image_family
东西?
可以将图像存储在称为图像族的组中。在构建实例时,我们可以要求GCP从我们的家庭那里获取我们的映像,该映像将返回添加到其中的最新映像。
如果发现新映像有问题,我们可以将其标记为已弃用,并且该系列将在下次部署实例时提供以前的版本。
有关图片系列的更多信息,请参见GCP文档
如何在我的映像中安装该Web服务器?
你需要添加一个供应者或两个,你的封隔器配置文件。
预配置程序通常是shell脚本或文件上传,但可以是be,ansible,salt或Chef操作。
这是我们打包程序文件的完整示例,其中包括新的预配程序:
{
"builders": [
{
"type": "googlecompute",
"project_id": "my project",
"zone": "us-central1-a",
"source_image_family": "debian-10",
"ssh_username": "packer",
"image_name": "packer-{{timestamp}}",
"image_family": "socks-web"
}
],
"provisioners": [
{
"type": "file",
"source": "./index.html",
"destination": "/tmp/index.html"
},
{
"type": "shell",
"inline": [
"sudo apt-get update -qq",
"sudo apt-get upgrade -qq",
"sudo apt-get install -qq apache2",
"sudo cp /tmp/index.html /var/www/html/index.html",
]
}]
}
在这里,我们将index.html
文件复制到/tmp
,更新apt的缓存,执行系统升级以确保已安装所有更新,然后安装apache并最终将索引页复制到位。
我如何建立那个形象?
现在,您可以从保存打包程序文件的目录中运行以下命令:
packer build example.json
Packer现在将消失并为您构建该图像,并将结果图像存储为packer-xxxxxxxxx
(其中xxxxxxxxx
是带时间戳的值)。结果图像将链接到图像系列socks-web
,然后您就可以在项目的terraform模板中引用该图像系列。
还有其他事情要知道吗?
是的,有两件事:
联网
上面的示例假定您正在使用的项目包含默认的网络设置,并且所选区域中有可用的子网。如果这些都不可用,则构建过程将失败,并且您需要在构建器配置中添加一个network
OR subnetwork
选项,该选项与您选择的区域对齐。
它还假定默认防火墙规则已经到位,以便打包程序可以将其SSH到它创建的实例。
如果您没有所需的防火墙规则来允许访问,则构建过程将在等待连接时超时。
machine_type
已从示例中省略
它将默认设置为,n1-standard-1
但是您可能需要根据自己的操作来增加其大小。较大的计算机类型将帮助其更快地运行。
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » Packer:在Google Cloud上构建映像
常见问题FAQ
- 没有金币/金币不足 怎么办?
- 本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
- 所有资源普通会员都能下载吗?
- 本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。