Score:0

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

ธง 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.

Score:2
ธง cn

ฉันสามารถแก้ไขได้โดยการเพิ่ม ไอพี= คำสั่งในบรรทัดคำสั่งเคอร์เนล นี่คืออะไร boot_command ดูเหมือนว่าตอนนี้:

      "boot_command": [
        "<esc><ใส่><f6><esc><รอ> ",
        "<bs><bs><bs><bs><bs>",
        "ip={{ ผู้ใช้ `vm_ip` }}::{{ ผู้ใช้ `vm_gateway` }}:{{ ผู้ใช้ `vm_netmask` }}::::{{ ผู้ใช้ `vm_dns` }} ",
        "ติดตั้งอัตโนมัติ ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ",
        "---<ป้อน>"
      ]

นี่คือไวยากรณ์:

ไคลเอ็นต์-ip>:<เซิร์ฟเวอร์-ip>:<gw-ip>:<netmask>:<ชื่อโฮสต์>:<อุปกรณ์>:<autoconf>:
   <dns0-ip>:<dns1-ip>:<ntp0-ip>:...

อ้างอิง: https://git.kernel.org/pub/scm/libs/klibc/klibc.git/tree/usr/kinit/ipconfig/README.ipconfig

ดังนั้นฉันจึงข้าม server-ip (ซึ่งสำหรับ nfs - ไม่จำเป็น) จากนั้นชื่อโฮสต์ อุปกรณ์ (ซึ่งเป็นอินเทอร์เฟซเครือข่าย - ไม่ต้องการมัน มันทำให้สับสนมากขึ้นในส่วนของฉัน) และ autoconf และฉันได้เพิ่ม dns0 หลังจากเน็ตมาสก์ ตัวอย่างเช่น:

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

ดังนั้นสำหรับใครก็ตามที่สนใจที่นั่น คำสั่งแบบเต็มจะเป็น (Dummy IPs):

initrd=/casper/initrd เงียบ ip=192.168.0.20::192.168.0.1:255.255.255.0::::8.8.8.8 ติดตั้งอัตโนมัติ ds=nocloud-net;s=http://192.168.0.50:80 ---

--- มีความสำคัญในสิ่งที่เขียนหลังจากนั้นยังคงอยู่ใน proc cmdline (/proc/cmdline) ดังนั้นจึงหมายความว่ามันจะถูกเรียกใช้ซ้ำแล้วซ้ำอีกในเวลาบูต คุณคงไม่อยากทำเช่นนั้นกับการติดตั้งอัตโนมัติและการกำหนดค่าเครือข่าย (ซึ่งจะถูกคัดลอกไปยัง cloud-init โดยอัตโนมัติ อย่างไรก็ตาม การดำเนินการดังกล่าวยังคงอยู่)

บางทีนี่อาจจะช่วยใครซักคน ยังมีอีกมากที่ฉันยังต้องเข้าใจตัวเอง :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา