close

以往Ubuntu設定自動安裝跟RHEL系列一樣使用kickstart腳本,

從版本20.04開始支援 automated installation mode by Autoinstall。

 

藉由ISO、光碟、隨身碟...etc去自動安裝的概念跟PXE一樣,就不多贅述

 

PXE Server選單內的參數要填上(以HTTP提供OSI為範例): autoinstall ds=nocloud-net;s=http://192.168.20.5/media/ubuntu_220402/autoinstall/

例如:

:ubuntu220402-net_default-pxe
set server_root http://192.168.20.5/media/ubuntu_220402
set serverip 192.168.20.5
set server_ISO http://192.168.20.5/media/ISO
initrd ${server_root}/casper/initrd
kernel ${server_root}/casper/vmlinuz
imgargs vmlinuz initrd=initrd root=/dev/ram0 ip=dhcp ipv6.disable=1 cloud-config-url=/dev/null url=http://192.168.20.5/media/ISO/ubuntu-22.04.2-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://192.168.20.5/media/ubuntu_220402/autoinstall/  ---

 

HTTP Server放置OSI目錄底下,新增一個名為autoinstall的資料夾、以及設置兩個檔案
mkdir /{OSI-Path}/ubuntu_220402/autoinstall
touch /{OSI-Path}/ubuntu_220402/autoinstall/meta-data   <---無內容的空白檔案即可
vim /{OSI-Path}/ubuntu_220402/autoinstall/user-data   <---此檔案為yaml內容,user-data檔案內容,請看後面內容

套網路上大神說的:這幾年 yaml 深得大眾的心,設定檔就是要用 yaml 格式才是潮
之前碰Ansible也是用yaml格式的設定檔、Ubuntu網路設定改採netplan控制,設定檔也是yaml格式
,這年代沒有用yaml好像就不棒了一樣XD

離題了...

 

由於我需要setup一組任何storage config,不考慮保留原系統配置上的OS,都能完成自動安裝為目的
且OS安裝好之後還能透過root ssh登入,一些測試需要的套件也需要先安裝好,user-data檔案內容如下:

#cloud-config
autoinstall:
  apt:
    disable_components: []
    geoip: true
    preserve_sources_list: false
    primary:
    - arches:
      - amd64
      - i386
      uri: http://us.archive.ubuntu.com/ubuntu
    - arches:
      - default
      uri: http://ports.ubuntu.com/ubuntu-ports
  drivers:
    install: false
  user-data:
    disable_root: false
    chpasswd:
      expire: false
      list:
        - root:$6$.YyulZ0wfYTrNLsi$iASrb/xR5390hjV00ykn964yFkjLKmtSUPEsnle2IAQ4.0Y2MVqd0JmYdnFogya7Oq.XtrpFsWKmZ8G22aFuF.
  identity:
    hostname: dvt2rubypass
    password: $6$.YyulZ0wfYTrNLsi$iASrb/xR5390hjV00ykn964yFkjLKmtSUPEsnle2IAQ4.0Y2MVqd0JmYdnFogya7Oq.XtrpFsWKmZ8G22aFuF.
    realname: test
    username: test
  kernel:
    package: linux-generic
  keyboard:
    layout: us
    toggle: null
    variant: ''
  locale: en_US.UTF-8
  timezone: Asia/Taipei
  network:
    ethernets:
        zz-all-en:
            dhcp4: true
            dhcp6: false
            match:
                name: en*
        zz-all-eth:
            dhcp4: true
            dhcp6: false
            match:
                name: eth*
    version: 2
  ssh:
    allow-pw: true
    authorized-keys: []
    install-server: true
  storage:
    layout:
      name: direct
#      name: direct
#      match:
#        ssd: yes
    swap:
      size: 0
  packages:
    - samba
    - cifs-utils
    - build-essential
    - gcc
    - samba
    - zip
    - nvme-cli
    - net-tools
    - dkms
    - menu
    - ipmitool
    - fio
    - iperf3
    - atop
    - sshpass
  late-commands:
    - sed -ie 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="ipv6.disable=1 console=ttyS0,115200n8"/' /target/etc/default/grub
    - sed -ie 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /target/etc/ssh/sshd_config
    - sed -ie 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /target/etc/ssh/sshd_config
    - sed -ie 's/#AllowAgentForwarding yes/AllowAgentForwarding yes/' /target/etc/ssh/sshd_config
    - curtin in-target -- update-grub2
  updates: security
  version: 1

 

arrow
arrow
    創作者介紹
    創作者 吾給力 的頭像
    吾給力

    吾給力的部落格

    吾給力 發表在 痞客邦 留言(0) 人氣()