Điểm:0

assign ip to ubuntu 20.04 during installation (packer/cloud-init context)

lá cờ cn

I am trying to provision Ubuntu 20.04 through packer and I am trying to use packer's http server to provide the cloud-init configuration. On Ubuntu 18.04 I could do that by preseeding the ip using d-i (debian-installer), which in the mean time has become obsolete, it seems, but I don't know how I can do the same with Ubuntu 20. As far as I understand, Ubuntu 20.04 can use dhcp, but I'm interested in assigning a static IP, so that the VM can connect to the http server. Any ideas how I can achieve this? Or is the approach maybe wrong?

This is what what packer runs during the boot process (before the actual installer):

       "/casper/vmlinuz/ ",
        "initrd=/casper/initrd debug= ",
        "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ",
        "--- <enter>"

The OS freezes at the "Host and Network Name Lookups" target (just before cloud-init is loaded/initialised). This is the content of cloud-init:

#cloud-config
autoinstall:
  version: 1
  locale: en_US
  keyboard:
    layout: fr
  ssh:
    install-server: true
    allow-pw: true
  packages:
    - qemu-guest-agent
  storage:
    layout:
      name: direct
    swap:
      size: 0
  user-data:
    package_upgrade: true
    timezone: Europe/Paris
    users:
      - name: username
        passwd: $6$xyz$1D0kz5pThgRWqxWw6JaZy.6FdkUCSRndc/PMtDr7hMK5mSw7ysChRdlbhkX83PBbNBpqXqef3sBkqGw3Rahs..
        groups: [adm, cdrom, dip, plugdev, lxd, sudo]
        lock-passwd: false
        sudo: ALL=(ALL) NOPASSWD:ALL
        shell: /bin/bash
        ssh_authorized_keys:
          - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEXrziuUOCpWPvwOsGuF4K+aq1ufToGMi4ra/1omOZb

(the password hash is found publicly on the internet, please don't discuss that:) )

This is not strictly related to packer, actually. I would simply like to know how I can make sure a Ubuntu 20.04 installation can connect remotely to a web server to retrieve the cloud-init configuration. That's basically it :)

Thanks! My setup is proxmox 6.4-9, packer 1.7.4 (running on apple m1) and Ubuntu 20.04.3

What I did afterwards was add this to the kernel cli:

ip=10.88.88.159:10.88.88.126:255.255.255.0::eth0:off autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/

I'm using eth0, because this seems to be the name of the interface before being changed into ens18. However, the installer keeps complaining saying that it doesn't recognize the device. Of course I've tried both names to no avail.

Điểm:2
lá cờ cn

Tôi đã có thể giải quyết nó bằng cách thêm ip= chỉ thị trong dòng lệnh kernel. đây là cái gì boot_command trông giống như bây giờ:

      "boot_command": [
        "<esc><enter><f6><esc><wait> ",
        "<bs><bs><bs><bs><bs>",
        "ip={{ người dùng `vm_ip` }}::{{ người dùng `vm_gateway` }}:{{ người dùng `vm_netmask` }}::::{{ người dùng `vm_dns` }} ",
        "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ",
        "--- <nhập>"
      ]

Đây là cú pháp:

client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:
   <dns0-ip>:<dns1-ip>:<ntp0-ip>:...

Thẩm quyền giải quyết: https://git.kernel.org/pub/scm/libs/klibc/klibc.git/tree/usr/kinit/ipconfig/README.ipconfig

Vì vậy, tôi đã bỏ qua server-ip (dành cho nfs - không cần thiết), sau đó là tên máy chủ, thiết bị (là giao diện mạng - không cần, nó chỉ khiến tôi thêm nhầm lẫn) và autoconf, và tôi đã thêm dns0 sau mặt nạ mạng. Ví dụ:

ip=192.168.0.20::192.168.0.1:255.255.255.0::::8.8.8.8

Vì vậy, đối với bất kỳ ai quan tâm, lệnh đầy đủ sẽ là (IP giả):

initrd=/casper/initrd silent ip=192.168.0.20::192.168.0.1:255.255.255.0::::8.8.8.8 autoinstall ds=nocloud-net;s=http://192.168.0.50:80 ---

--- điều quan trọng là bất cứ điều gì được viết sau đó vẫn tồn tại trong cmdline proc (/proc/cmdline), điều đó có nghĩa là nó sẽ được chạy đi chạy lại khi khởi động. Bạn có thể không muốn làm điều đó với cài đặt tự động và cấu hình mạng (dù sao thì nó cũng sẽ được sao chép tự động vào cloud-init, vì vậy điều đó vẫn tồn tại dù sao đi nữa).

Có lẽ điều này sẽ giúp một ai đó. Có nhiều điều tôi vẫn cần phải hiểu bản thân mình :)

Đă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.