ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用Packer构建镜像 [打印本页]

作者: 北冰洋以北    时间: 2024-8-21 15:38
标题: 使用Packer构建镜像
什么是Packer

Packer 是一个强大的工具,它可以帮助我们轻松地构建各种类型的镜像,如假造机镜像、Docker 镜像等。
Packer 的工作原理是通过定义一个配置文件,该文件描述了要构建的镜像的特征和要求。然后 Packer 使用这个配置文件来执行一系列的步骤,例如安装必要的软件、配置体系设置、复制文件等,最终生成一个可用的镜像。
为什么要用 Packer

使用 Packer 构建镜像的好处是多方面的。
Packer的构成及及原理

Packer包含构建器(Builder),(派生器)Provisioner,(后处理器)Post-Processor三个组件,通过JSON格式的模板文件,可以灵活的组合这三种组件并行的、自动化的创建多平台一致的镜像文件。为单个平台生成镜像的单个使命称为构建,而单个构建的结果也称为工件(Artifact),多个构建可以并行运行。
落地

工具版本说明Packer1.9.4官方文档Packer-plugin-qemu1.0.10Packer 插件qemu-kvm7.0.0QEMU 7.0.0

模板
  1. packer {
  2.   required_plugins {
  3.     qemu = {
  4.       source  = "github.com/hashicorp/qemu"
  5.       version = ">= 1.0.10"
  6.     }
  7.   }
  8. }
  9. variable "checksum" {
  10.   type    = string
  11.   default = "xxxxxxx"
  12. }
  13. variable "ssh_password" {
  14.   type    = string
  15.   default = "xxxxx"
  16. }
  17. source "qemu" "autogenerated_1" {
  18.   accelerator          = "kvm"
  19.   boot_command         = ["<tab> inst.text ", "console=ttyS0,115200n8 ", "inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks/rocky9.ks ", "nameserver=1.1.1.1 ", "<enter><wait> "]
  20.   boot_wait            = "0s"
  21.   communicator         = "ssh"
  22.   format               = "qcow2"
  23.   headless             = true
  24.   iso_checksum         = "sha256:${var.checksum}"
  25.   iso_url              = "../../../Rocky-9.2-x86_64-minimal.iso"
  26.   qemu_binary          = "/usr/libexec/qemu-kvm"
  27.   qemuargs             = [["-m", "4096"], ["-smp", "2,sockets=2,cores=1,threads=1"], ["-cpu", "host"], ["-serial", "file:serial.out"]]
  28.   shutdown_command     = "/sbin/halt -h -p"
  29.   shutdown_timeout     = "120m"
  30.   ssh_password         = "${var.ssh_password}"
  31.   ssh_timeout          = "1500s"
  32.   ssh_username         = "root"
  33.   http_content = {
  34.       "/ks/rocky9.ks"     = file("../../kickstart/rocky9.ks")
  35.     }
  36. }
  37. build {
  38.   description = "\tMinimal Rockylinux 9 Qemu Imageni\n__________________________________________"
  39.   sources = ["source.qemu.autogenerated_1"]
  40.   provisioner "shell" {
  41.     script = "./provisioner.sh"
  42.   }
  43.   
  44. #  provisioner "file" {   // 拷贝配置文件
  45. #    destination = "/etc/cloud/cloud.cfg"
  46. #    source      = "../../resource/cloud.cfg"
  47. #  }
  48. }
复制代码
配置库构造形式

  1. ├── kickstart        # kickstart 配置文件存放目录
  2. │   ├── rocky9.ks
  3. ├── packer           # 不同版本镜像模板文件
  4. │   ├── rocky9
  5. │   │   ├── rocky9.pkr.hcl
  6. │   │   ├── provisioner.sh  # 制备过程中脚本,安装包,修改内核参数等等
  7. │   │   ├── env.yaml   # 系统一些配置,如os_type,os_version
  8. │   ├── centos7
  9. │   │   ├── centos7.pkr.hcl
  10. │   │   ├── provisioner.sh
  11. │   │   ├── env.yaml   # 系统一些配置,如os_type,os_version
  12. ├── resources        # 一些资源文件,配置文件可以直接cpoy过去
复制代码
效果



好处


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4