我目前正在为使用 ESXi 的客户进行 Packer 构建过程。我上一次在 Packer 上工作是在一年前,我很快意识到为了成功构建,我忘记了很多东西。使用新版本的产品体验新的错误和细微差别也很有趣。所以我想我可以记录一些我的经验来成功构建。我认为这很容易变成一个多部分的帖子,所以我会尽量按顺序记录我的过程。
如果您是新手,请快速回顾一下 Packer。Packer 是由给您带来 Terraform 和 Vagrant --HashiCorp 的好人带来的。它是一个相对较小的单个文件可执行文件,您可以使用它通过脚本以编程方式构建图像。然后,您可以拍摄这些图像并将它们上传到 AWS、Azure,或者在我的例子中是 VMware ESXi。
虽然 Packer 可以很好地与 Vagrant 和 VirtualBox 等工具配合使用。作为 VMware 顾问,我想在构建过程中利用 ESXi。但在开始构建 Packer 之前,我们需要在 ESXi 上设置一些先决条件。
我们需要做的第一件事是为我们的构建指定一个 ESXi 主机。我们需要主机而不是 vCenter 的原因是 Packer 将通过 SSH 连接到主机并使用各种 vim-cmd 命令来完成它的工作。有了主机后,需要完成三个步骤,如下所示。
启用 SSH
首先我们需要在我们的主机上启用 SSH。有许多不同的方法可以做到这一点。两种最简单的方法是通过 ESXi 主机 Web 客户端,或者由内部的 vCenter 管理。
对于主机 Web 客户端,在浏览器中导航到 https://esxi_host/ui 并使用 root 帐户登录。导航到“管理”窗格并选择“服务”选项卡。向下滚动到TSM-SSH并单击开始。在操作下,您可能还想将策略更改为使用主机启动和停止。
在 vCenter 中有点不同。找到您指定的主机。选择配置选项卡。向下滚动到安全配置文件,然后单击编辑。将出现一个新窗口。滚动并找到SSH,选择启动并将启动策略更改为使用主机启动和停止。
启用 GuestIPHack
接下来我们需要在 ESXi 主机上运行一个命令。此命令的作用是允许 Packer 通过 ARP 数据包检查推断来宾 VM 的 IP 地址。
通过 SSH 连接到 ESXi 主机(例如使用 putty)并运行以下命令。
1
|
esxcli system settings advanced set -o /Net/GuestIPHack -i 1
|
在 ESXi 上打开 VNC 防火墙端口
最后,Packer 使用 VNC 向来宾 VM 发出引导命令。我相信默认范围是 5900 -- 6000。5900 是 VNC 的默认值,但如果您正在执行多个构建或端口正在使用中,Packer 将在该范围内循环,直到找到可用的范围。
在主机上运行以下命令,让我们修改和保存firewall service.xml文件。
1
2
3
|
chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml
vi /etc/vmware/firewall/service.xml
|
滚动到文件的最后和最后一行的正上方 /ConfigRoot 按 i (插入)并添加以下内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<service id="1000">
<id>packer-vnc-custom</id>
<rule id="0000">
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>
<begin>5900</begin>
<end>6000</end>
</port>
</rule>
<enabled>true</enabled>
<required>true</required>
</service>
|
按ESC并输入:wq! 保存并退出文件。
恢复service.xml文件的权限并重启防火墙。
1
2
|
chmod 444 /etc/vmware/firewall/service.xml
esxcli network firewall refresh
|
您可以通过返回 Web 客户端中的主机并检查“安全配置文件”部分来检查是否成功进行了更改。只会显示第一个端口,而不显示范围。您还可以在主机上使用以下命令来确认和查看端口设置的整个范围。
1
2
|
esxcli network firewall ruleset list
esxcli network firewall ruleset rule list
|
这些是您真正需要对 ESXi 主机进行的三个更改才能使 Packer 构建成功运行。我试图详细介绍每个步骤,以解释每个更改的作用。实际上,它应该只需要几分钟即可实施。
在一些安全环境中,我看到 SSH 设置了超时。如果您在启用 SSH 后发现 SSH 被禁用。您需要删除超时,因为 SSH 需要保持启用状态。您还需要确认没有外部防火墙阻止 Packer 访问 VNC 端口范围。
在以后的文章中,我将详细介绍配置 Windows Server 以运行 Packer 和导入/导出 OVF 图像的先决条件。
原文地址:https://blog.csdn.net/allway2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。