使用 HashiCorp Packer 自动化 VMWare 模板

在所有云供应商中,您都获得了基于模板的自动化构建的虚拟机——如何为 VMWare vSphere 构建自定义模板?在这种情况下,HashiCorp Packer 是您想要的工具。这篇文章将介绍创建基于打包程序的虚拟机模板的主要概念

什么是打包机?

Packer 映像允许您在几秒钟内启动完全配置和配置的机器,而不是几分钟或几小时。这不仅有利于生产,也有利于开发,因为开发虚拟机也可以在几秒钟内启动,而无需等待通常更长的配置时间。

由于 Packer 为多个平台创建相同的映像,因此您可以在 AWS 中运行生产,在 OpenStack 等私有云中进行暂存/QA,并在 VMware 或 VirtualBox 等桌面虚拟化解决方案中进行开发。每个环境都运行相同的机器映像,提供终极的可移植性。

Packer 在构建映像时为机器安装和配置所有软件。如果这些脚本中有错误,它们会被及早发现,而不是在机器启动后几分钟。

构建机器映像后,可以快速启动该机器映像并进行冒烟测试以验证一切正常。如果是,您可以确信从该映像启动的任何其他计算机都将正常运行。

Packer 可以非常轻松地利用所有这些优势。

基于 Ubuntu 的示例

安装打包程序

要开始使用 Packer,请下载预构建的二进制文件。安装 Packer 后,通过打开新的命令提示符或控制台并检查 Packer 是否可用来验证安装是否有效:

$ packer
usage: packer [--version] [--help] <command> [<args>]

Available commands are:
    build       build image(s) from template
    fix         fixes templates from old versions of packer
    inspect     see components of a template
    validate    check that a template is valid
    version     Prints the Packer version

ESXi 配置

要在 VMWare ESXi 6 及更高版本中使用上层模板,您必须对 ESXi 主机进行一些修改。ESXi 主机需要一些配置才能让 Packer 工作。Packer 通过 SSH 进行通信,所以首先我们需要打开它。其次,我们将启用从主机发现访客 IP 的选项,然后最终允许远程 VNC 连接。

启用 SSH

在 Web UI 中,导航到“管理”,然后是“服务”选项卡。找到名为“TSM-SSH”的条目,并启用它。您可能希望在默认情况下启用它与主机一起启动。您可以在“操作”下拉列表中执行此操作(它嵌套在“策略”中)。

启用“访客 IP 黑客”

在 ESXi 主机上运行以下命令:

esxcli system settings advanced set -o /Net/GuestIPHack -i 1

这允许 Packer 从 ESXi 推断来宾 IP,而无需 VM 自行报告。

在防火墙上打开 VNC 端口

Packer 使用 VNC 连接到 VM,因此我们将打开一系列端口以允许它连接到它。

首先,确保我们可以编辑防火墙配置:

chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml

然后将我们要打开的范围附加到文件的末尾:

<service id="1000">
  <id>packer-vnc</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>

最后,恢复权限并重新加载防火墙:

chmod 444 /etc/vmware/firewall/service.xml
esxcli network firewall refresh

模板定义

用于定义我们想要构建的镜像以及如何构建的配置文件在 Packer 术语中称为模板。模板的格式是简单的 JSON。JSON 在人工可编辑和机器可编辑之间取得了最佳平衡,允许轻松制作手工模板和机器生成的模板。

我们将从创建整个模板开始,然后简要介绍每个部分。创建一个文件 example.json 并用以下内容填充它:


{
  "builders": [{
    "name": "Ubuntu-19.04","type": "vmware-iso","vm_name": "Ubuntu-19.04","guest_os_type": "ubuntu-64","tools_upload_flavor": "linux","headless": true,"iso_urls": ["iso/ubuntu-19.04-server-amd64.iso","http://cdimage.ubuntu.com/ubuntu/releases/19.04/release/ubuntu-19.04-server-amd64.iso"
    ],"iso_checksum": "7e8a0d07522f591dfee9bc9fcd7c05466763161e6cb0117906655bce1750b2fa","iso_checksum_type": "sha256","cpus": 2,"memory": 4096,"disk_size": 20140,"boot_wait": "10s","boot_command": [
      "<esc><wait>","<esc><wait>","<enter><wait>","/install/vmlinuz"," initrd=/install/initrd.gz ","auto=true ","url=https://raw.githubusercontent.com/infralovers/packer-preseed/master/ubuntu.cfg ","fb=false ","language=en ","locale=en_US ","priority=critical ","keymap=us ","netcfg/get_hostname={{ .Name }} ","netcfg/get_domain=vm ","debconf/frontend=noninteractive ","debian-installer/country=AT ","console-setup/ask_detect=false ","console-keymaps-at/keymap=us ","DEBCONF_DEBUG=5 ","<enter>"
    ],"ssh_username": "vagrant","ssh_password": "vagrant","ssh_port": 22,"ssh_wait_timeout": "20m","shutdown_command": "echo 'shutdown -P now' > shutdown.sh; echo 'vargant'|sudo -S sh 'shutdown.sh'","vnc_disable_password": true,"format": "vmx","remote_type": "esx5","remote_host": "{{user `esxi_host`}}","remote_datastore": "{{user `esxi_datastore`}}","remote_username": "{{user `esxi_username`}}","remote_password": "{{user `esxi_password`}}","keep_registered": true,"skip_export": true

  }]
}

当您删除json中的remote_ * 键时,您还可以开始使用 VMWare Fusion 构建映像。在进行初始工作时,这对于保持循环紧密非常有用,因为调试 debconf 或 kickstart 文件更容易进入本地 devloop 在基于 Ubuntu 的示例中,引导开关 DEBCONF_DEBUG用于在发现设置时在安装日志上输出未设置或设置为无效值。

建立形象

使用正确验证的模板,是时候构建您的第一个映像了。这是通过使用模板文件调用 packer build 来完成的。输出应类似于下图。请注意,此过程通常需要几分钟时间。由于模板使用 esxi 特定数据的变量,因此必须在构建时使用-var参数设置这些变量。

packer build -var "esxi_host=YOUR-ESXI" -var "esxi_datastore=YOUR_DEFAULT_DATASTORE" -var "esxi_username=ESXI_USERNAME" -var "esxi_password=ESXI_PASSWORD" ubuntu.json

供应打包程序模板

上面的命令只会使用preseed 文件生成默认安装的 Ubuntu 19.04 映像,该文件只会生成能够使用sudo的用户。

因此,此设置的下一步是进行一些自定义配置。为此,打包程序能够启动配置程序。使用这些方法,您可以:

  • 设置配置(例如安装 ansible 和依赖项)
  • 进行自定义配置(例如使用 ansible playbook)
  • 删除配置工具(例如删除 ansible)

完整的模板将是这样的:


{
  "builders": [{
   ...
  }],"provisioners": [{
      "type": "shell","execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'","script": "scripts/setup.sh"
    },{
      "type": "ansible-local","playbook_dir": "ansible","playbook_file": "ansible/main.yml","extra_arguments": ["--extra-vars \"root_password={{user `root_password`}} user_password={{user `user_password`}}\""]
    },{
      "type": "shell","script": "scripts/cleanup.sh"
    }
  ]
}

当地的布局就像

|-- ansible
|   |-- ansible.cfg
|   |-- main.yml
|   |-- roles
|-- scripts
|-- ubuntu.json
`-- variables.json

在 ansible/main.yml 中,您可以定义您的剧本以安装默认工具和库(例如 cloud-init )并设置自定义配置项。

打包机后处理

当运行上层构建过程时,结果是一个定制的 VMWare 机器,它已准备好运行 - 但我们希望获得一个 VMWare 模板来使用此构建生成虚拟机。为此,Packer 安装了后处理器。在我们的用例中,我们将使用 vsphere 后处理器以及最终生成模板的 vsphere-template 处理器。vsphere 后处理器暂停之前生成的虚拟机并将其传输到指定目录。之后,vsphere 模板后处理器将虚拟机转换为机器模板供以后使用。


{
    "builders": [{
   ...
  }],"provisioners": [{
  }],"post-processors": [
  [{
        "type": "vsphere","cluster": "{{user `esxi_vsphere_cluster`}}","host": "{{user `esxi_vsphere_host`}}","datacenter": "{{user `esxi_vsphere_dc`}}","username": "{{user `esxi_vsphere_username`}}","password": "{{user `esxi_password`}}","datastore": "{{user `esxi_datastore`}}","vm_name": "T_Ubuntu","vm_network": "VM Network","vm_folder": "/Templates","disk_mode": "thin","insecure": "true","overwrite": "true"
      },{
        "type": "vsphere-template","folder": "/Templates"
      }
    ]
  ]
}

原文地址:https://blog.csdn.net/allway2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


VMware中为CentOS设置固定IP
很多用户想体验Win10,不过又不想把当前电脑系统换成Win10,那么最简单的就是在虚拟机上安装一个Win10系统来进行体验了,这里小编推荐使用VMware Workstation虚拟机来安装Win10系统,下面小编介绍虚拟机的创建及Win10详细安装教程步骤如下:1、首
MAC OS操作系统一般来说只能在苹果设备上安装运行,小编发现一个有趣的方法在winndows 操作系统中通过虚拟机来安装苹果系统,有兴趣的用户一起随小编往下看吧!首先准备好以下工具:用于VMware 12的mac补丁,unlocke(链接: https: pan baidu
vmware player是一款能够让我们在Windows10系统中运行别的系统的软件俗称虚拟机(如win7、xp等),虽然这个平台有大量的优点和有用的功能,但是卸载起来非常困难,特别是在升级过程中。这样的问题大多出在9 0和最近的12 0版本中。在点击卸载或
虚拟机在测试和实验系统上有着很大的帮助,很多用户也喜欢在虚拟机上使用自己想要使用的系统。不过,在win10系统中打开虚拟机时,提示VMware Workstation cannot connect错误无法打开虚拟机怎么办?遇到这种情况时应该怎么办呢?下面就让
最近使用Win10系统的用户反应vmware workstation 运行失败的现象,该怎么办呢?出现这样的情况是由于软件不兼容的问题所引起的,我们可通过下面方法进行恢复。步骤如下:1、按下win+R打开运行,键入gpedit msc,,然后单击确定。将打开本地组策
vmware克隆镜像后,新的Centos无法启动网络
为访问虚拟磁盘、CD/DVD-ROM 和 SCSI 设备,虚拟机将使用创建虚拟机时默认添加的存储控制器。创建虚拟机后可以添加额外的控制器或更改控制器类型。在创建向导中时可执行这些更改。如果您在更改或添加控制器前了解不同类型的控制器的节点行为、控制器限制和兼容性,则可以避免潜在的引导问题。存储控制器技术的工作方式存储控制器对于虚拟机而言是不同类型的 SCSI 控制器,包括 BusLogic 并行、LSI Logic 并行、LSI Logic SAS 和 VMware 准虚拟 SCSI。还提供 AHCI
如今,越来越多的工作负载在虚拟机 (VM) 中运行,包括在来宾操作系统中需要更多 IO 的工作负载。在 VMware vSphere 上的 VM 中,所有虚拟磁盘 (VMDK) 都连接到默认配置中的 LSI 逻辑 SAS SCSI 适配器。此适配器无需安装额外驱动程序即可被所有操作系统识别,但并不总是提供最佳性能,尤其是在使用 SSD RAID 或 NVMe 存储时。在本文中,我们比较了虚拟存储控制器LSI Logical SAS、VMware Paravirtual和NVMe Controller。
Packer 是由 Hashicorp 创建的应用程序,它使 IT 专业人员能够自动执行其 VM 模板生成。随着混合云环境的兴起,它正迅速成为在一个工具下管理每个平台的多个 VM 映像的首选实用工具之一。它自动执行建立全新 VM 的过程,并合并自定义生成脚本以动态自定义 VM,然后转换回模板以用于在云中或本地进行部署。在 VMware 环境中使用 Packer 可以带来以下好处:与平台无关– Packer 不仅可以将相同的映像和配置部署到 VMware 环境,还可以将相同的映像和配置部署到 AWS 和
封隔器 OVA 示例我遇到了一些其他人很幸运的好例子:基础设施即代码:使用 Packer 创建 Linux (RHEL/CentOS) 基础映像 打包机-centos-7 打包模板 自动化示例 打包机-centos7-esxi 打包模板封隔器配置文件在所有这些示例之间,我创建了自己的配置并确保它们没问题:&lt;&gt; tree.├── ansible│ ├── main.yml│ └── requirements.yml├── centos7.jso.
在所有云供应商中,您都获得了基于模板的自动化构建的虚拟机——如何为 VMWare vSphere 构建自定义模板?在这种情况下,HashiCorp Packer 是您想要的工具。这篇文章将介绍创建基于打包程序的虚拟机模板的主要概念什么是打包机?Packer 映像允许您在几秒钟内启动完全配置和配置的机器,而不是几分钟或几小时。这不仅有利于生产,也有利于开发,因为开发虚拟机也可以在几秒钟内启动,而无需等待通常更长的配置时间。由于 Packer 为多个平台创建相同的映像,因此您可以在 AWS 中运行生
在这篇博客文章中,我想向您展示如何使用 Packer 自动执行 VMware vsphere 模板。我喜欢它,因为packer可以在其他平台上使用,如Hyper-V,Azure,AWS或soagar for vmware Workstation或Virtual Box。通过这篇文章,我想向您展示如何为VMware vsphere自动创建Windows Server 2016和Windows Server 2019模板。今天,我将首先在 vmware vsphere 上创建和部署。由于我想尽可能简单快捷地自
如何使用付费许可证设置Vagrant VMware提供商,以便在CentOS 8上运行的VMware Workstation Pro 15.5上运行。感谢Aaron McKay鼓励我写这篇文章,并提供 Vagrant VMware 提供商许可证。在这篇文章中,我将向您展示如何:安装 VMware Workstation Pro。 安装流浪汉。 安装 Vagrant VMware Utility。 安装Vagrant VMware插件。 安装 Vagrant VMware Provider
在本文中,我们将逐步介绍在 VMware vSphere 环境中使用 ISO 构建 Redhat Enterprise Linux 7/CentOS 7 VM。Packer对于在云端和本地构建基础镜像非常有用。Packer 是一个开源工具,由HashiCorp开发。HashiCorp 拥有非常著名的工具,如 Vagrant、Consul 和 Terraform。如今,克隆和部署是构建 VM 的最便捷方式。在某些情况下,所需版本的 OS 模板可能不存在,您可能需要在 Adhoc 中构建 VM。这就是 Pack
虽然Vagrant VMware Desktop提供商是VirtualBox的直接替代品,但还公开了一些其他功能,可让您更精细地配置计算机的VMware特定方面。提供程序的配置设置在 Vagrantfile中设置:Vagrant.configure("2") do |config| config.vm.box = "my-box" config.vm.provider "vmware_desktop" do |v| v.gui = true endend...
autoinst.xml&lt;?xml version="1.0"?&gt;&lt;!DOCTYPE profile&gt;&lt;profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"&gt; &lt;scripts&gt; &lt;chroot-scripts config:type="list"&gt; &lt;script&g..
Ubuntu 20.04 带来了新的安装程序,用subiquity取代了以前的Debian安装。这意味着以前用于自动/无人值守安装的任何方法都不再有效,需要更换。使用Packer成功地做到了这一点。但首先,这是一个工作的无人值守配置:ubuntu-2004.json:{ "builders": [ { "name": "ubuntu-2004", "type": "vmware-iso", "guest_os_type": "ubunt...
Packer 是由 Hashicorp 创建的应用程序,它使 IT 专业人员能够自动执行其 VM 模板生成。随着混合云环境的兴起,它正迅速成为在一个工具下管理每个平台的多个 VM 映像的首选实用工具之一。它自动执行建立全新 VM 的过程,并合并自定义生成脚本以动态自定义 VM,然后转换回模板以用于在云中或本地进行部署。在 VMware 环境中使用 Packer 可以带来以下好处:与平台无关– Packer 不仅可以将相同的映像和配置部署到 VMware 环境,还可以将相同的映像和配置部署到 AWS 和
GitHub - librenms/packer-builds: This repo is where virtual images are created and storedThis repo is where virtual images are created and stored - GitHub - librenms/packer-builds: This repo is where virtual images are created and storedhttps://github.com/