Điểm:0

Sử dụng Packer để triển khai Ubuntu 20.04 lên Proxmox

lá cờ us

Vấn đề

TLDR: Tôi đã làm điều này trong hầu hết AutoInstall (tôi nghĩ vậy?) nhưng nó vẫn tiếp tục hiển thị cài đặt GUI sau khi đi qua AutoInstall. Tìm kiếm bất kỳ thông tin đầu vào nào về lý do tại sao nó tiếp tục hiển thị GUI. /TLDR

Phiên bản dài hơn: Tôi đang cố gắng tìm ra cách triển khai ubuntu (và cuối cùng là các bản phân phối khác) cho Proxmox bằng cách sử dụng Hashicorp Packer. Tôi đã có hầu hết các thiết lập cấu hình và đang hoạt động... đại loại thế? Nó "triển khai" thành công nhưng nó không thể hoàn thành thiết lập ban đầu, nó tiếp tục đi qua AutoInstall, nhưng sau đó vẫn hiển thị cài đặt GUI. Từ bước qua GUI theo cách thủ công, sau khi hoàn thành phần Tự động cài đặt, có vẻ như mọi thứ đã được điền sẵn (trừ phần nhận dạng người dùng, tức là Tên đầy đủ/Tên người dùng/v.v.). Có vẻ như thậm chí không cần tìm địa chỉ IP, giống như khi bạn chỉ bước qua GUI, vì vậy tôi nghĩ DHCP đang hoạt động tốt?

Tôi đã thử xem xét một vài câu hỏi tương tự khác, nhưng các giải pháp của chúng vẫn chưa hiệu quả với tôi (chưa).

lý thuyết

Tôi có một vài lý thuyết, nhưng dường như không có lý thuyết nào hoạt động hoàn toàn đúng, hoặc tôi không chắc làm thế nào để kiểm tra chúng.

  1. Tôi đang quên một cái gì đó trong dữ liệu người dùng (yaml) và nó đang cố hiển thị GUI vì điều này.
  2. Tôi đang thiếu một số tham số cấu hình trong .pkr.hcl tệp cần thiết để proxmox thiết lập vm chính xác không?
  3. Có điều gì đó kỳ lạ với phiên bản Ubuntu tôi đang sử dụng, có lẽ tôi cần một ISO khác? Nhưng những thứ tôi đã đọc chỉ nói rằng Cloud-init tính năng chỉ hoán đổi di sản preseed.cfg cho dữ liệu người dùng (yaml), vì vậy tôi nghi ngờ về lý thuyết này.
  4. Tôi cần thiết lập một số tính năng kernel? Thành thật mà nói, tôi không chắc bắt đầu từ đâu, tôi cũng khá chắc chắn rằng nếu đúng như vậy thì tôi đã thấy điều gì đó về nó ở một nơi khác. Nhưng này, có lẽ tôi chỉ nhìn nhầm chỗ?
  5. Các dữ liệu người dùng tệp không được tải vào Ubuntu đúng cách?

kết quả đầy hy vọng

  1. Nếu bạn biết nước sốt ma thuật, xin vui lòng cho tôi biết nó :)
  2. Nếu bạn biết cách để Ubuntu 20.04 chuyển hướng một số nhật ký của nó trong khi cài đặt, để tôi có thể xem xét kỹ hơn, điều đó sẽ được đánh giá cao! Tương tự để ghi nhật ký trình đóng gói tốt hơn (ngoài -gỡ lỗi, tôi đã thử rồi). tôi đã thử /var/log/trình cài đặt, nhưng tôi không nghĩ mình nắm chắc được chuyện gì đang xảy ra. Nhưng tôi không thấy bất kỳ lỗi nào, ngoài lỗi Khóa SSH và tôi không thể thấy bất kỳ dấu hiệu nào của dữ liệu người dùng tải xuống hoặc không tải xuống được.
  3. Nếu bạn có bất kỳ ý tưởng nào về cách kiểm tra một số lý thuyết của tôi hoặc bất kỳ lý thuyết nào khác, tôi rất muốn nghe chúng!
  4. Nếu bạn có thể thấy những gì tôi đang làm sai trong các tệp cấu hình bên dưới, vui lòng chỉ ra chúng! Tôi đã cố gắng làm điều này trong SILO vài ngày nay và tôi đang đứng trước một bức tường mà tôi không biết làm thế nào để vượt qua

Cập nhật (đang diễn ra)

  1. thành lập hạt giống từ http://192.168.0.144:80/user-data không được DataSourceNoCloud hỗ trợ [seed=None][dsmode=net] Trong /var/log/cloud-init.log tìm hiểu lý do tại sao điều đó quay trở lại, mọi lời khuyên sẽ được đánh giá cao :)
  2. Được rồi, tôi đã tìm ra lý do tại sao lại xảy ra lỗi trên, có vẻ như nó không ở định dạng YAML phù hợp. Tôi vừa kết xuất tệp vào một trình định dạng YAML và sau đó sao chép, dán lại vào tệp mục tiêu của mình.
  3. Bây giờ lỗi là tệp YAML đã tải trống /var/lib/cloud/seed/nocloud/user-data, một lần nữa tôi đánh giá cao bất kỳ lời khuyên nào :)

Gợi ý

Nếu bạn đủ thú vị để thử sao chép nội dung này hoặc nếu bạn vấp phải nội dung này sau khi (hy vọng) được trả lời, hãy làm cho cuộc sống của bạn dễ dàng hơn bằng cách sử dụng ví dụ.auto.pkrvars.hcl tập tin.

phiên bản

Proxmox: Proxmox VE 7.1-4
các cửa sổ: Windows 10 Pro : 10.0.19043.0
người đóng gói: 1.7.10

Ví dụ.pkr.hcl

người đóng gói {
  yêu cầu_plugins {
    proxmox = {
      phiên bản = " >= 1.0.1"
      nguồn = "github.com/hashicorp/proxmox"
    }
  }
}

nguồn "proxmox-iso" "proxmox-ubuntu-20" {
  proxmox_url = "https://proxmox.lan:8006/api2/json"
  vm_name = "packer-ubuntu-20"
  iso_url = "http://iso.repo.lan/ubuntu-20.04.3-live-server-amd64.iso"
  iso_checksum = "f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  tên người dùng = "${var.pm_user}"
  mật khẩu = "${var.pm_pass}"
  mã thông báo = "${var.pm_token}"
  nút = "proxmox"
  iso_storage_pool = "cục bộ"

  ssh_username = "${var.ssh_user}"
  ssh_password = "${var.ssh_pass}"
  ssh_timeout = "20 phút"
  ssh_pty = đúng
  ssh_handshake_attempts = 20

  boot_wait="5s"
  http_directory = "http" # Khởi động máy chủ http cục bộ, cung cấp tệp Preseed
  boot_command = [
    "<esc><wait><esc><wait><f6><wait><esc><wait>",
    "<bs><bs><bs><bs><bs>",
    "ip=${cidrhost("192.168.0.0/24", 9)}::${cidrhost("192.168.0.0/24", 1)}:${cidrnetmask("192.168.0.0/24")}: :::${cidrhost("192.168.0.0/24", 1)} ",
    "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/",
    "--- <nhập>"
  ]

  không an toàn_skip_tls_verify = true

  template_name = "packer-ubuntu-20"
  template_description = "trình đóng gói đã tạo ubuntu-20.04.3-server-AMD64"
  unmount_iso = đúng

  hồ bơi = "người đóng gói"
  bộ nhớ = 4096
  lõi = 1
  ổ cắm = 1
  hệ điều hành = "l26"
  qemu_agent = true
  đám mây_init = đúng
  # scsi_controller = "virtio-scsi-pci"
  đĩa {
    gõ = "scsi"
    đĩa_size = "30G"
    storage_pool = "local-lvm"
    storage_pool_type = "lvm"
    định dạng = "thô"
  }
  network_adapter {
    cầu = "vmbr0"
    người mẫu = "tài năng"
    tường lửa = đúng
    #vlan_tag=1
  }
}

xây dựng {
  nguồn = ["source.proxmox-iso.proxmox-ubuntu-20"]
  nhà cung cấp "shell" {
    nội tuyến = [
      "trong khi [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Đang đợi khởi tạo trên đám mây...'; ngủ 1; xong",
      "là /"
    ]
  }
}

vars.pkr.hcl

biến "pm_user" {
  loại = chuỗi
  description = "Tên người dùng Proxmox"
  default = "packer@pam!<api-tag>"
}
biến "pm_pass" {
  loại = chuỗi
  description = "Mật khẩu người dùng Proxmox"
  mặc định = "người đóng gói"
}
biến "pm_token" {
  loại = chuỗi
  description = "Mã thông báo API Proxmox"
}
biến "ssh_user" {
  loại = chuỗi
  mô tả = "Người dùng SSH"
  mặc định = "người đóng gói"
}
biến "ssh_pass" {
  loại = chuỗi
  mô tả = "Mật khẩu SSH"
  mặc định = "người đóng gói"
}
biến "vm_name" {
  loại = chuỗi
  mô tả = "Tên máy ảo"
  mặc định = "packer_hostname"
}

http/dữ liệu người dùng

tự động cài đặt:
  phiên bản 1
  ngôn ngữ: en_US.UTF-8
  bàn phím:
    bố cục: vi
    biến thể: chúng tôi
  xác thực:
    tên máy chủ: packer-ubuntu-20
    mật khẩu: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" #ubuntu
    tên người dùng: ubuntu
    tên thật: ubuntu
  trình cài đặt làm mới: 
    cập nhật: sai
  ssh:
    máy chủ cài đặt: có
    allow-pw: có
  gói:
    - qemu-khách-đại lý
  kho:
    cách trình bày:
      tên: trực tiếp
    tráo đổi:
      kích thước: 0

nguồn

https://www.aerialls.eu/posts/ubuntu-server-2004-image-packer-subiquity-for-proxmox/
https://ubuntu.com/server/docs/install/autoinstall-reference
https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html
https://cloudinit.readthedocs.io/en/latest/topics/modules.html#write-files
https://cloudalbania.com/posts/2022-01-homelab-with-proxmox-and-packer/

Điểm:0
lá cờ us

Câu trả lời

Thật may mắn, tôi đã tìm kiếm theo một hướng hoàn toàn sai lầm SMH.
Vấn đề là tôi đã không đọc Cloud-init câu hỏi thường gặp đủ chặt chẽ. Tất cả những gì tôi phải làm là thêm #cloud-config như dòng đầu tiên trong tôi dữ liệu người dùng tập tin.

Các cấu hình bên dưới sẽ hoạt động cho bất kỳ ai quan tâm.

Tôi đặt các tài liệu đầy đủ ở đây. Hãy lướt qua nếu quan tâm https://github.com/aRustyDev/packer

Ví dụ.pkr.hcl

người đóng gói {
  yêu cầu_plugins {
    proxmox = {
      phiên bản = " >= 1.0.1"
      nguồn = "github.com/hashicorp/proxmox"
    }
  }
}

nguồn "proxmox-iso" "proxmox-ubuntu-20" {
  proxmox_url = "https://proxmox.lan:8006/api2/json"
  vm_name = "packer-ubuntu-20"
  iso_url = "http://iso.repo.lan/ubuntu-20.04.3-live-server-amd64.iso"
  iso_checksum = "f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  tên người dùng = "${var.pm_user}"
  mật khẩu = "${var.pm_pass}"
  mã thông báo = "${var.pm_token}"
  nút = "proxmox"
  iso_storage_pool = "cục bộ"

  ssh_username = "${var.ssh_user}"
  ssh_password = "${var.ssh_pass}"
  ssh_timeout = "20 phút"
  ssh_pty = đúng
  ssh_handshake_attempts = 20

  boot_wait="5s"
  http_directory = "http" # Khởi động máy chủ http cục bộ, cung cấp tệp Preseed
  boot_command = [
    "<esc><wait><esc><wait><f6><wait><esc><wait>",
    "<bs><bs><bs><bs><bs>",
    "ip=${cidrhost("192.168.0.0/24", 9)}::${cidrhost("192.168.0.0/24", 1)}:${cidrnetmask("192.168.0.0/24")}: :::${cidrhost("192.168.0.0/24", 1)} ",
    " autoinstall ds=nocloud-net;s=http://httpd.proxmox.local:80/preseed/ubuntu-20/ ",
    "--- <nhập>"
  ]

  không an toàn_skip_tls_verify = true

  template_name = "packer-ubuntu-20"
  template_description = "trình đóng gói đã tạo ubuntu-20.04.3-server-AMD64"
  unmount_iso = đúng

  hồ bơi = "người đóng gói"
  bộ nhớ = 4096
  lõi = 1
  ổ cắm = 1
  hệ điều hành = "l26"
  qemu_agent = true
  đĩa {
    gõ = "scsi"
    đĩa_size = "30G"
    storage_pool = "local-lvm"
    storage_pool_type = "lvm"
    định dạng = "thô"
  }
  network_adapter {
    cầu = "vmbr0"
    người mẫu = "tài năng"
    tường lửa = đúng
  }
}

xây dựng {
  nguồn = ["source.proxmox-iso.proxmox-ubuntu-20"]
  nhà cung cấp "shell" {
    nội tuyến = [
      "trong khi [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Đang đợi khởi tạo đám mây...'; ngủ 1; xong",
      "là /"
    ]
  }
}

vars.pkr.hcl

biến "pm_user" {
  loại = chuỗi
  description = "Tên người dùng Proxmox"
  default = "packer@pam!<api-tag>"
}
biến "pm_pass" {
  loại = chuỗi
  description = "Mật khẩu người dùng Proxmox"
  mặc định = "người đóng gói"
}
biến "pm_token" {
  loại = chuỗi
  description = "Mã thông báo API Proxmox"
}
biến "ssh_user" {
  loại = chuỗi
  mô tả = "Người dùng SSH"
  mặc định = "người đóng gói"
}
biến "ssh_pass" {
  loại = chuỗi
  mô tả = "Mật khẩu SSH"
  mặc định = "người đóng gói"
}
biến "vm_name" {
  loại = chuỗi
  mô tả = "Tên máy ảo"
  mặc định = "packer_hostname"
}

http/dữ liệu người dùng

#cloud-config
tự động cài đặt:
  phiên bản 1
  ngôn ngữ: en_US.UTF-8
  bàn phím:
    bố cục: vi
    biến thể: chúng tôi
  xác thực:
    tên máy chủ: packer-ubuntu-20
    mật khẩu: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" #ubuntu
    tên người dùng: ubuntu
    tên thật: ubuntu
  trình cài đặt làm mới: 
    cập nhật: sai
  ssh:
    máy chủ cài đặt: có
    allow-pw: có
  gói:
    - qemu-khách-đại lý
  kho:
    cách trình bày:
      tên: trực tiếp
    tráo đổi:
      kích thước: 0
David avatar
lá cờ cn
Câu trả lời không bao gồm quảng cáo xin vui lòng loại bỏ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.