做公司产品展示网站,企业网盘源码,建设一个充电站需要多少钱,室内设计效果图客厅我们之前介绍了两种Ubuntu系统的安装方式#xff0c;分别对应桌面版#xff08;准备搞OpenStack了#xff0c;先装一台最新的Ubuntu 23.10#xff09;和服务器版#xff08;Ubuntu 22.04 LTS服务器版本安装演示#xff09;。但对于有些用户#xff0c;因为技术问题… 我们之前介绍了两种Ubuntu系统的安装方式分别对应桌面版准备搞OpenStack了先装一台最新的Ubuntu 23.10和服务器版Ubuntu 22.04 LTS服务器版本安装演示。但对于有些用户因为技术问题并不能独立快速完成Ubuntu系统的部署那有没有办法制作一个能够快速安装的系统镜像无需人工干预让用户插上U盘就能自动完成安装呢 答案是肯定的。 在数字化转型的浪潮下企业服务器规模呈指数级增长云计算与边缘计算场景日益复杂。传统手动安装系统的方式不仅耗时耗力还容易因人为失误导致配置偏差成为运维团队的一大痛点。Ubuntu系统自动安装Autoinstall应运而生通过声明式的YAML配置文件将系统部署从“手工操作”升级为“代码驱动”为以下场景提供高效解决方案 1、批量服务器部署快速搭建数十台至上千台服务器的标准化环境适用于电商大促、游戏开服等弹性需求。 2、云环境集成无缝对接AWS、Azure等云平台实现虚拟机集群的分钟级扩容与灾备切换。 3、物联网设备管理为分散的终端设备提供统一系统镜像确保固件版本与安全策略的一致性。 核心优势直击运维瓶颈 1、效率提升从数小时/台缩短至分钟级完成安装释放人力资源。 2、配置标准化通过版本控制的YAML文件杜绝“环境差异”保障开发、测试、生产环境的一致性。 3、灵活扩展性支持LUKS加密、定制分区、驱动预装等高级功能满足企业级安全与性能需求。 需要注意自动安装文件使用YAML格式对缩进格式要求极高。 顶级是一个名为autoinstall的键其中包含本文档中描述的键的映射。版本1中忽略了无法识别的键但它们可能在未来的版本中导致致命的验证错误。 以下是一个最小自动安装配置的示例 autoinstall: version: 1 identity: ... 顶级是autoinstall关键字。它包含一个版本部分和一个不完整的identity部分下面将对此进行更详细的解释。autoinstall级别的任何其他键都会在运行时导致自动安装验证错误。 注意这种行为最早是在24.04Noble期间引入的。在24.04之前构建的任何ISO上您需要刷新安装程序以查看此行为。 从技术上讲除了一种情况外在所有情况下顶级autoinstall关键字都是绝对不必要的。仅当通过云配置提供自动安装时才需要此关键字。为了向后兼容这种格式仍然支持非基于云配置的交付方法然而强烈建议使用带有顶级autoinstall关键字的格式因为这种格式中的错误是常见的混淆来源。 架构 自动安装配置在使用之前会根据JSON模式进行验证https://canonical-subiquity.readthedocs-hosted.com/en/latest/reference/autoinstall-schema.html。 命令列表 几个配置键是要执行的命令列表。每个命令可以是字符串在这种情况下它是通过sh -c执行的也可以是列表在这种情况中它是直接执行的。任何以非零返回码退出的命令都被视为错误并中止安装错误命令除外此时它将被忽略。 顶级键 以下键可用于配置安装的各个方面。如果提供了全局autoinstall键则必须在其下方提供所有“顶级键”“顶级”是指此子级别。下面的例子演示了这种结构。 警告在版本1中当遇到无法识别的键时Subiquity会发出警告。在以后的版本中它会导致致命的验证错误安装会停止。 version 类型integer整数 默认值无默认值 面向未来的配置文件版本字段。目前此处必须为1。 interactive-sections 类型字符串列表 默认值[] 仍在用户界面user interfaceUI中显示的配置键列表。例如 autoinstall: version: 1 interactive-sections: - network identity: username: ubuntu password: $crypted_pass 此示例在网络屏幕上停止并允许用户更改默认值。如果为交互部分提供了值则将其用作默认值。 您可以使用特殊的节名*来表示安装程序应该问所有常见的问题——在这种情况下autoinstall.yaml文件是一个autoinstall文件。它只是提供了一种更改UI默认值的方法。 并非所有配置键都与UI中的屏幕相对应。本文档指示给定部分是否可以交互。 如果有任何交互式部分则忽略reporting键。 early-commands 类型命令列表 默认值无命令 是否可以交互否 安装程序启动后立即调用的shell命令列表特别是在探测存储和网络设备之前。autoinstall配置可以在/autoinstall.yaml上找到无论它是如何提供的在early-commands运行后文件会被重新读取以便在必要时更改配置。 early commands示例 autoinstall: # 在开始之前暂停安装以便手动检查/修改实时系统。 # 通过创建“/run/finish-early”文件来解除暂停。 early-commands: - while [ ! -f /run/finish-early ]; do sleep 1; doneautoinstall: # 将当前的自动安装配置替换为受信任服务器提供的配置 early-commands: - wget -O /autoinstall.yaml $TRUSTED_SERVER_URL locale 类型string字符串 默认值en_US.UTF-8 是否可以交互是 为已安装的系统配置的区域设置。 locale设置示例 autoinstall: # 默认行为 locale: en_US.UTF-8autoinstall: # 希腊语地区 locale: el_GR refresh-installer 类型映射 默认值见下文 是否可以交互是 控制安装程序在继续之前是否更新到给定频道中可用的新版本。 映射包含以下键值 update 类型boolean布尔值 默认值false 控制系统是否更新。 channel 类型string字符串 默认值stable/ubuntu-$REL 检查更新的频道。 示例 autoinstall: # 刷新到从“main”子分支构建的最新快照 refresh-installer: update: true channel: latest/edgeautoinstall: # 刷新至最新的测试版 refresh-installer: update: true channel: latest/beta keyboard 类型映射见下文 默认值US English keyboard 是否可以交互是 任何连接键盘的布局。映射键对应于/etc/default/keyboard配置文件中的设置。有关更多详细信息请参阅keyboard5手册页https://manpages.ubuntu.com/manpages/noble/en/man5/keyboard.5.html。 映射包含以下键值 layout 类型string字符串 默认值us 对应于XKBLAYOUT设置。 variant 类型string字符串 默认值 对应于XKBVARIANT设置。 toggle 类型string字符串或null 默认值null 对应于XKBOPTIONS设置中grp:选项的值。可接受的值是安装程序不验证这些值 caps_toggletogglerctrl_togglershift_togglerwin_togglemenu_togglealt_shift_togglectrl_shift_togglectrl_alt_togglealt_caps_togglelctrl_lshift_togglelalt_togglelctrl_togglelshift_togglelwin_togglesclk_toggle 警告由于一个错误20.04 GA发布的Subiquity版本不接受此字段为null。 keyboard示例 keyboard示例autoinstall: # default behavior keyboard: layout: us variant: toggle: nullautoinstall: # 使用Alt和Shift在默认US键盘和Greek (simple)之间切换 keyboard: layout: us,gr variant: ,simple toggle: alt_shift_toggle source 类型映射见下文 默认值见下文 是否可以交互是 search_drivers 类型boolean布尔值 默认值true大部分情况见下文 安装程序是否搜索可用的第三方驱动程序。当设置为false时它将禁用drivers屏幕和部分。 默认情况下大多数安装都是true当选择“core boot核心引导”或“enhanced secure boot增强型安全引导”方法时当前无法安装第三方驱动程序则为false。 id 类型string字符串 默认值安装源中列出的默认值 要安装的源的标识符例如ubuntu-server-minimal。要使用的正确ID特定于给定的安装ISO。由于此ID可能会随时间而变化因此查找此信息的规范位置是安装ISO本身在casper/install-sources.yaml文件中要使用的值是id。 当前键值 Ubuntu Server:minimal: ubuntu-server-minimalstandard (default): ubuntu-serverUbuntu Desktop:minimal (default): ubuntu-desktop-minimalstandard: ubuntu-desktopUbuntu Budgie:minimal: ubuntu-budgie-desktop-minimalstandard (default): ubuntu-budgie-desktopUbuntu Cinnamon:minimal: ubuntucinnamon-desktop-minimalstandard (default): ubuntucinnamon-desktopEdubuntu:minimal: edubuntu-desktop-minimalstandard (default): edubuntu-desktopUbuntu Kylin:minimal: ubuntukylin-desktop-minimalstandard (default): ubuntukylin-desktopUbuntu MATE:minimal: ubuntu-mate-desktop-minimalstandard (default): ubuntu-mate-desktopUbuntu Studio:standard (default): ubuntustudio-desktopXubuntu:full ISO:minimal: xubuntu-desktop-minimalstandard (default): xubuntu-desktopminimal ISO:minimal (default): xubuntu-desktop-minimal source示例 autoinstall: # default behavior source: search_drivers: true id: the installation source marked as default in install-sources.yamlautoinstall: # 在Ubuntu Server ISO上使用最小源代码进行安装 source: id: ubuntu-server-minimalautoinstall: # 在Ubuntu桌面ISO上使用标准源代码进行安装 source: id: ubuntu-desktop network 类型Netplan格式映射见下文 默认值在名为eth*或en*的接口上使能DHCP 是否可以交互是 Netplan格式的网络配置https://netplan.io/reference。这不仅适用于安装过程也适用于已安装的系统。默认情况下是解释安装介质的配置该介质在名称与eth*或en*匹配的任何接口上运行DHCPv4但随后禁用任何未接收到IP地址的接口。 例如要在特定网络接口上运行DHCPv6 autoinstall: network: version: 2 ethernets: enp0s31f6: dhcp6: true 请注意在Subiquity的20.04 GA版本中行为略有不同需要您使用额外的network:键值编写此代码 autoinstall: network: network: version: 2 ethernets: enp0s31f6: dhcp6: true 20.04之后的版本也支持此语法为了兼容性。使用较新版本时请使用常规语法。 proxy 类型URL或null 默认值无代理 是否可以交互是 在安装期间以及在目标系统中为apt和snapd配置的代理。当前运行geoip查询时此设置不受支持。 示例 autoinstall: proxy: http://172.16.90.1:3128 apt 类型映射 默认值见下文 是否可以交互是 APT配置在安装期间和启动到目标系统后都使用。 本节历来使用与curtin相同的格式该格式记录在curtin文档的APT Source章节https://curtin.readthedocs.io/en/latest/topics/apt_source.html。尽管如此还是引入了与curtin支持的格式的一些关键差异 Subiquity支持primary章节的另一种格式允许配置候选主镜像列表。在安装过程中Subiquity会自动测试指定的镜像并选择第一个可用的镜像。仅当primary部分被包裹在mirror-selection部分中时才会激活此新行为。 fallback键控制Subiquity在没有主镜像可用时的操作。 geoip键控制是否执行基于IP的地理定位以确定正确的国家镜像。 所有其他部分的行为如curtin中所定义。有关这些部分的使用示例请参阅curtin文档https://curtin.readthedocs.io/en/latest/topics/apt_source.html#common-snippets及其示例apt配置https://git.launchpad.net/curtin/tree/examples/apt-source.yaml例如如何使用sources部分添加PPA。 Subiquity中的默认apt配置相当于 autoinstall: apt: preserve_sources_list: false mirror-selection: primary: - country-mirror - uri: http://archive.ubuntu.com/ubuntu arches: [i386, amd64] - uri: http://ports.ubuntu.com/ubuntu-ports arches: [s390x, arm64, armhf, powerpc, ppc64el, riscv64] fallback: abort geoip: true mirror-selection 如果primary部分包含在mirror-selection部分中则启用自动镜像选择。这是新安装中的默认设置。 primary放置在镜像选择部分内时 类型自定义见下文 在新格式中primary部分需要一个镜像列表可以用两种不同的方式表示 1、指定的country-mirror键值 2、具有以下键的映射 uri必选要使用的镜像的uri例如http://fr.archive.ubuntu.com/ubuntu。 archs可选镜像支持的架构列表。默认情况下此列表包含当前的CPU架构。 存档镜像的URI不必是国家镜像尽管它可能是最方便的并且可以采用任何有效Ubuntu镜像的URL。可以在Launchpad上找到所有已注册存档镜像的列表https://launchpad.net/ubuntu/archivemirrors。 示例 # 使用第一个可用的自定义镜像。不要局限于特定的架构。autoinstall: apt: mirror-selection: primary: - uri: http://mirror1.internal/ubuntu - uri: http://mirror2.internal/ubuntu# 为amd64使用一个镜像为i386使用另一个镜像。autoinstall: apt: mirror-selection: primary: - uri: http://jp.archive.ubuntu.com/ubuntu arches: [amd64] - uri: http://tw.archive.ubuntu.com/ubuntu arches: [i386] fallback 类型string字符串枚举 默认值offline-install 控制当没有主镜像可用时Subiquity的操作。支持的值包括 abort中止安装 offline-install还原为脱机安装 continue-anyway仍尝试安装系统不建议安装失败 示例 # 仅从主存档安装如果镜像验证失败则中止安装。autoinstall: apt: mirror-selection: primary: - uri: http://archive.ubuntu.com/ubuntu fallback: abort# 仅从德国国家镜像安装如果镜像验证失败则继续进行脱机安装。autoinstall: apt: mirror-selection: primary: - uri: http://de.archive.ubuntu.com/ubuntu fallback: offline-install geoip 类型boolean布尔值 默认值true 如果geoip设置为true并且其中一个候选主镜像具有特殊值country-mirror则会向https://geoip.ubuntu.com/lookup发出请求。然后Subiquity将镜像URI设置为http://CC.archive.ubuntu.com/ubuntu其中CC是查找返回的国家代码。如果此部分不是交互式的则请求将在10秒后过期。 如果使用传统行为即没有mirror-selection如果要使用的镜像是默认镜像则会发出地理定位请求并且其URI会被正确的国家镜像URI替换。 示例 # 首先使用自动确定的国家/地区镜像然后使用显式备份镜像。autoinstall: apt: mirror-selection: primary: - country-mirror - uri: http://dk.archive.ubuntu.com/ubuntu geoip: true# 禁用自动国家/地区镜像检测即仅使用http://archive.ubuntu.com/ubuntu)autoinstall: apt: geoip: false storage 类型映射见下文 默认设置在单磁盘系统上使用lvm布局多磁盘系统没有默认设置 是否可以交互是 存储配置是一个复杂的主题自动安装文件中所需配置的描述也可能很复杂。安装程序支持“layouts”表达常见配置的简单方法。 支持的layouts 在撰写本文时支持的三种布局是lvm、direct和zfs。 autoinstall: storage: layout: name: lvm storage: layout: name: direct storage: layout: name: zfs 默认情况下这些布局将安装到系统中最大的磁盘上但您可以提供匹配规范见下文来指示使用哪个磁盘 autoinstall: storage: layout: name: lvm match: serial: CT* storage: layout: name: direct match: ssd: true 注意匹配规范–使用match: {}来匹配任意磁盘。 默认情况下s390x除外将使用GUID分区表GUID Partition TableGPT对匹配的磁盘进行分区。但您可以特别请求MSDOS又名.MBR分区表 autoinstall: storage: layout: name: direct ptable: msdos 使用lvm布局时可以通过提供密码来启用LUKS加密。 autoinstall: storage: layout: name: lvm password: LUKS_PASSPHRASE 默认情况下使用lvm布局。 此外通过将hybrid布局的encrypted设置为yes可以启用TPM支持的加密。 autoinstall: storage: layout: name: hybrid encrypted: yes Sizing-policy 默认情况下lvm布局试图为快照和进一步扩展留出空间。可以提供sizing-policy键值来控制此行为。 类型string字符串枚举 默认值scaled 支持的值包括 scaled根据卷组volume groupVG的可用空间调整分配给根逻辑卷logical volumeLV的空间。 all将所有剩余的VG空间分配给根LV。 缩放系统使用以下规则 小于10 GiB将所有剩余空间用于根文件系统 10-20 GiB:10 GiB用于根文件系统 20-200 GiB之间将剩余空间的一半用于根文件系统 大于200 GiB100 GiB用于根文件系统 没有大小缩放和密码的示例 autoinstall: storage: layout: name: lvm sizing-policy: all password: LUKS_PASSPHRASE Reset Partition reset-partition用于创建重置分区这是一个包含安装程序映像全部内容的FAT32文件系统这样用户就可以在不使用安装介质的情况下从GRUB或EFI启动安装程序。此选项对于OEM系统配置非常有用。 默认情况下重置分区的大小大约是安装介质所用文件系统大小的1.1倍。 启用重置分区的示例 autoinstall: storage: layout: name: direct reset-partition: true 重置分区的大小也可以固定为指定大小。这是一个将重置分区固定配置为12 GiB的示例 autoinstall: storage: layout: name: direct reset-partition: 12G 安装程序还可以在不安装系统的情况下安装重置分区。为此请将reset-partition-only设置为true autoinstall: storage: layout: name: direct reset-partition: true reset-partition-only: true 基于操作的配置 为了获得完全的灵活性安装程序允许使用curtin支持的语法的超集进行存储配置如curtin文档的存储部分所述https://curtin.readthedocs.io/en/latest/topics/storage.html。 如果使用layout功能配置磁盘则不使用config部分。 操作列表可以添加到config键下curtin配置项grub和swap也可以包含在这里。 storage部分示例 autoinstall: storage: swap: size: 0 config: - type: disk id: disk0 serial: ADATA_SX8200PNP_XXXXXXXXXXX - type: partition ... curtin语法的扩展允许磁盘选择、分区或调整逻辑卷大小。 Disk选择扩展选项 Curtin廷支持通过序列号例如Crucial_CT512MX100SSD1_14250C57FECE或路径例如/dev/sdc识别磁盘服务器安装程序也支持这一点。安装程序还支持磁盘操作上的“匹配规范”这提供了更灵活的匹配。 存储配置中的操作按照它们在自动安装文件中的顺序进行处理。任何磁盘操作都会分配一个匹配的磁盘——如果有多个磁盘则从未分配的磁盘集中任意选择如果没有未分配的匹配磁盘则会导致安装失败。 匹配规范支持以下键值 model:value匹配udev中ID_MODELvalue的磁盘支持globbing vendor:value匹配udev中ID_VENDORvalue的磁盘支持globbing path:value根据路径例如/dev/sdc匹配磁盘支持globbing全局定位支持与直接在磁盘操作中指定path:value不同 id_path:value匹配udev中ID_PATHvalue的磁盘支持globbing devpath:value匹配udev中DEVPATHvalue的磁盘支持globbing serial:value匹配udev中ID_SERIALvalue的磁盘支持globbing全局定位支持与直接在磁盘操作中指定serial:value不同 ssd:true|false匹配是否为SSD的磁盘与机械磁盘相反 size:largest|smallest如果有多个匹配项则取最大或最小的磁盘而不是任意一个20.06.1版本中增加支持smallest 一种特殊的键值是install-media:true它获取加载安装程序的磁盘ssd和size选择器从不返回此磁盘。如果安装到安装介质上请注意不要覆盖安装程序本身。 例如要匹配任意磁盘 - type: disk id: disk0 要匹配最大的SSD - type: disk id: big-fast-disk match: ssd: true size: largest 要匹配Seagate硬盘 - type: disk id: data-disk match: model: Seagate 自第24.08.1子项起匹配规范可以在有序列表中指定并将使用与一个或多个未使用磁盘匹配的第一个匹配规范 # 首先尝试按序列匹配然后按路径匹配- type: disk id: data-disk match: - serial: Foodisk_1TB_ABC123_1 - path: /dev/nvme0n1 Partition逻辑卷扩展选项 在curtin中分区或逻辑卷的大小指定为字节数。自动安装配置更灵活 您可以使用安装程序UI中支持的1G、512M语法指定大小。 您可以将大小指定为包含磁盘或RAID的百分比例如50%。 对于为特定设备指定的最后一个分区您可以将大小指定为-1以表示该分区应填充剩余空间。 - type: partition id: boot-partition device: root-disk size: 10%- type: partition id: root-partition size: 20G- type: partition id: data-partition device: root-disk size: -1 identity 类型映射见下文 默认值无默认值 是否可以交互是 为系统配置初始用户。这是必须存在的唯一配置键除非存在用户数据部分在这种情况下它是可选的。 一个可以包含键的映射所有键都取以下字符串值 realname 用户的真实姓名。此字段是可选的。 username 要创建的用户名。 hostname 系统的主机名。 password 新用户的加密密码。即使配置了SSH访问也要求与sudo一起使用。 加密的密码字符串必须符合passwd命令的要求。有关详细信息请参阅passwd1手册页https://manpages.ubuntu.com/manpages/noble/en/man1/passwd.1.html。将密码哈希值用引号包含以确保正确处理任何特殊字符。 有几个工具可以生成加密密码例如whois包中的mkpasswd或openssl passwd。 示例 autoinstall: identity: realname: Ubuntu User username: ubuntu password: $6$wdAcoXrU039hKYPd$508Qvbe7ObUnxoj15DRCkzC3qO7edjH0VV7BPNRDYK4QR8ofJaEEF2heacn0QgD.f8pO8SNp83XNdWG6tocBM1 hostname: ubuntu active-directory 类型映射见下文 默认值无默认值 是否可以交互是 接受加入Active Directory域中的目标系统所需的数据。 一个可以包含键的映射所有键都取以下字符串值 admin-name 具有执行加入操作权限的域帐户名。在运行时请求帐户密码。 domain-name 要加入的Active Directory域。 示例 autoinstall: active-directory: # 以用户“$ubuntu”的身份加入Active Directory域 admin-name: $ubuntu domain-name: ad.ubuntu.com ubuntu-pro 类型映射见下文 默认值见下文 是否可以交互是 token 类型string字符串 默认值no token 附加到现有Ubuntu Pro订阅的合同令牌。 示例 autoinstall: ubuntu-pro: # 使用合约令牌启用Ubuntu Pro # 请注意下面的示例是无效的合约令牌。 token: C1NWcZTHLteJXGVMM6YhvHDpGrhyy7 ssh 类型映射见下文 默认值见下文 是否可以交互是 为已安装的系统配置SSH。可以包含以下键的映射 install-server 类型boolean布尔值 默认值false 是否在目标系统中安装OpenSSH服务器。请注意桌面安装ISO不包括openssh-server因此桌面安装需要Ubuntu存档访问权限才能成功安装服务器。 authorized-keys 类型字符串列表 默认值[] 要安装在初始用户帐户中的SSH公钥列表。 allow-pw 类型boolean布尔值 默认值如果authorized_keys为空则为true否则为false ssh示例 autoinstall: # default behavior ssh: install-server: false authorized-keys: [] allow-pw: trueautoinstall: # 需要openssh-server时的推荐配置 ssh: install-server: true authorized-keys: # 替换为ssh-keygen或类似工具生成的公钥内容 - ssh-ed25519 AAAAC3NzaC..6O8tvZobj userhost allow-pw: falseautoinstall: # 密码访问配置 ssh: install-server: true allow-pw: true codecs 类型映射见下文 默认值见下文 是否可以交互否 配置是否要安装来自多元存储库的通用受限软件包包括编解码器。 install 类型boolean布尔值 默认值false 是否安装ubuntu-restricted-addons软件包。 示例 autoinstall: # default behavior codecs: install: falseautoinstall: # 安装codecs这目前意味着安装ubuntu-restricted-addons包 codecs: install: true drivers 类型映射见下文 默认值见下文 是否可以交互是 install 类型boolean布尔值 默认值false 是否安装可用的第三方驱动程序。 示例 autoinstall: # default behavior drivers: install: falseautoinstall: # install drivers as suggested by ubuntu-drivers. drivers: install: true oem 类型映射见下文 默认值见下文 是否可以交互否 install 类型boolean布尔值或string字符串特殊值auto 默认值auto 是否安装可用的OEM元软件包。特殊值auto默认值允许在Ubuntu桌面上安装但不能在Ubuntu服务器上安装。此选项对core boot classic没有影响。 由于安装OEM元软件包可能会导致安装某个内核因此同时指定带有内核版本号的内核和指定oem.install: true可能会导致由于内核要求冲突进而导致安装失败。使用oem.install时建议不要指定内核。 示例 autoinstall: # default behavior oem: install: autoautoinstall: # Install OEM meta-packages as suggested by ubuntu-drivers. # On some hardware, this changes what kernel is installed. oem: install: trueautoinstall: # 禁用OEM meta-package自动安装即使ubuntu-drivers建议这样做 oem: install: false snaps 类型列表 默认设置不安装额外的快照 是否可以交互是 要安装的快照列表。每个快照都表示为具有所需名称和可选channel默认为stable和classic默认为false键的映射。例如 autoinstall: snaps: - name: etcd channel: edge classic: false debconf-selections 类型string字符串 默认值无配置 是否可以交互否 安装程序使用debconf集合set-selection更新目标。用户需要熟悉debconf包的选项。 示例 autoinstall: # 禁用SSH root登录并自动启动ufw防火墙 debconf-selections: | openssh-server openssh-server/permit-root-login boolean false ufw ufw/enable boolean true packages 类型列表 默认值无软件包 是否可以交互否 要安装到目标系统中的软件包列表。具体来说传递给apt-get install命令的字符串列表。因此这包括任务选择dns-server^和安装特定版本的包my-package1-1。 示例 autoinstall: packages: # 安装ipython3和git并确保它们被标记为手动安装。 - ipython3 - git kernel 类型映射互斥见下文 默认值默认内核 是否可以交互否 安装哪个内核。必须指定package或flavor的名称。 确切的默认内核是特定于ISO构建的但通常为服务器安装generic版本为桌面安装hwe版本。 package 类型string字符串 软件包的名称例如linux-image-5.13.0-40-generic。 flavor 类型字符串 内核的版本例如generic或hwe。 示例 autoinstall: # Install a specific kernel package. kernel: package: linux-image-5.13.0-40-genericautoinstall: # Install a particular kernel flavor. kernel: flavor: hwe kernel-crash-dumps 类型映射见下文 默认值见下文 是否可以交互否 用于启用切换内核崩溃Dump转储。 在24.10及更高版本中默认配置将导致使用kdump-tools软件包在已安装的系统上动态启用内核崩溃转储。在amd64、arm64和s390x系统上如果检测到系统满足内核崩溃转储的最低要求则将启用它们。否则它们将被禁用。有关最低系统要求的更多详细信息请参阅Ubuntu Server文档https://documentation.ubuntu.com/server/how-to/software/kernel-crash-dump/#kernel-crash-dump。 在24.10之前的版本中默认配置将导致内核崩溃转储被禁用。 默认配置 autoinstall: # In 24.10 and later, allow kernel crash dumps to be enabled dynamically. # In pre-24.10, kernel crash dumps will be disabled. kernel-crash-dumps: enabled: null enabled 类型boolean布尔值或null 默认值null 指定一个布尔值以启用或禁用内核崩溃转储。设置为null默认以允许动态启用。 如果要禁用内核崩溃转储无论是动态确定还是手动请求kdump-tools软件包都不会被卸载但会被配置为确保它在目标系统中处于非活动状态。 示例 autoinstall: # Enable kernel crash dumps. kernel-crash-dumps: enabled: trueautoinstall: # Disable kernel crash dumps. kernel-crash-dumps: enabled: false timezone 类型字符串 默认值无时区 是否可以交互否 在系统上配置的时区。 timezone示例 autoinstall: # Default behavior timezone: Etc/UTCautoinstall: # Configure explicitly timezone: Europe/London updates 类型string字符串枚举 默认值security 是否可以交互否 在系统安装后和重新启动到目标系统之前下载和安装的更新类型。支持的值包括 security从-security源下载并安装更新。 all还可以从-updates源下载并安装更新。 示例 autoinstall: # 默认行为。从安装的security源安装更新。 updates: securityautoinstall: # 同时从安装的security源和updates源安装更新。 updates: all shutdown 类型string字符串枚举 默认值reboot 是否可以交互否 安装完成后请求系统自动关闭电源或重新启动。支持的值包括 rebootpoweroff shutdown示例 autoinstall: # default behavior shutdown: rebootautoinstall: # shutdown instead of reboot shutdown: poweroff late-commands 类型命令列表 默认值无命令 是否可以交互否 在安装成功完成并且安装了任何更新和软件包之后在系统重新启动之前运行的Shell命令。这些命令在安装程序环境中运行安装的系统挂载在/target。您可以使用curtin in-target -- $shell_command在20.04 GA发布的Subiquity版本中您需要运行curtin in-target --target/target -- $shell_command来指定/target以便在目标系统中运行类似于在d-i preseed/late_command中如何使用明文in-target。 late-commands示例 autoinstall: # Pause the install just before finishing to allow manual inspection/modification. # Unpause by creating the /run/finish-late file. late-commands: - while [ ! -f /run/finish-late ]; do sleep 1; doneautoinstall: # Install additional packages on the target system and run some custom scripts. late-commands: - curtin in-target -- apt-get update - curtin in-target -- apt-get install -y curl vim - curtin in-target -- curl -o /tmp/my-script.sh $script_url - curtin in-target -- /bin/sh /tmp/my-script.sh error-commands 类型命令列表 默认值无命令 是否可以交互否 安装失败后运行的Shell命令。它们在安装程序环境中运行目标系统或安装程序管理配置的大部分系统挂载在/target上。实时会话将被记录在日志文件/var/log/installer中。 autoinstall: # Collect all of the logs in /var/log/installer # Collect the live system journal too error-commands: - tar -czf /installer-logs.tar.gz /var/log/installer/ - journalctl -b /installer-journal.log reporting 类型映射 默认值type: print这会导致tty1和串行控制台上输出任何配置 是否可以交互否 安装程序支持向各种目标报告进度。请注意如果有任何交互式部分则忽略此部分它仅适用于全自动安装。 配置类似于curtin使用的配置。请参阅curtin文档的Reporting部分https://curtin.readthedocs.io/en/latest/topics/reporting.html。 配置中报告映射中的每个键都定义了一个目标其中类型子键是以下之一 print在tty1和任何配置的串行控制台上打印进度信息。没有其他配置。 rsyslog通过rsyslog报告进度。目标键指定了输出的发送位置。rsyslog报告程序尚不存在。 webhook通过POST请求向URL发送JSON报告来报告进度。接受与curtin相同的配置。 none不报告进展。仅用于禁止默认输出。 Reporting示例 默认配置为 autoinstall: reporting: builtin: type: print 向rsyslog报告 autoinstall: reporting: central: type: rsyslog destination: 192.168.0.1 抑制默认输出 autoinstall: reporting: builtin: type: none 向curtin风格的webhook报告 autoinstall: reporting: hook: type: webhook endpoint: http://example.com/endpoint/path consumer_key: ck_value consumer_secret: cs_value token_key: tk_value token_secret: tk_secret level: INFO user-data 类型映射 默认值{} 是否可以交互否 提供云初始化用户数据该数据将与安装程序生成的用户数据合并。如果你提供了这个你就不需要提供identity部分在这种情况下请确保你可以登录到已安装的系统。有关云初始化用户数据的更多详细信息请参阅所有云配置示例https://docs.cloud-init.io/en/latest/reference/examples.html。 以下示例提供的user-data与identity部分示例中的配置生成的数据大致相等 autoinstall: user-data: users: - name: ubuntu gecos: Ubuntu User passwd: $6$wdAcoXrU039hKYPd$508Qvbe7ObUnxoj15DRCkzC3qO7edjH0VV7BPNRDYK4QR8ofJaEEF2heacn0QgD.f8pO8SNp83XNdWG6tocBM1 groups: adm, cdrom, dip, lxd, plugdev, sudo shell: /bin/bash lock_passwd: False zdevs 类型设备列表 默认值[] 是否可以交互是 在IBM Z上配置受支持设备的状态enabled或disabled。 列表中的每个元素即设备都是具有以下键的映射 id 类型string字符串 标识要操作的设备。 enabled 类型boolean布尔值 控制设备应启用还是禁用。 autoinstall: zdevs: - id: 0.0.1507 enabled: true - id: 0.0.1508 enabled: true - id: 0.0.1509 enabled: false ***推荐阅读*** 1条命令搞定Ubuntu搭建L2TP服务器全自动脚本小白也能轻松上手 从CentOS到Ubuntu零成本迁移L2TP VPN企业级内网穿透实战 从SRv6到Panabit测试揭秘ESXi虚拟交换机VLAN 0-4095的终极用法 Panabit VLAN这样玩才高效从透明网桥到网关模式的实战踩坑指南 WireGuard太复杂十分钟教你用Netmaker一键搞定全球组网 vCenter 7.0部署很费时间吗从开始到纳管好不用半小时 ESXi降级实战vGPU异常竟因7.0.3版本坑两种回滚方案对比 万物皆可EVE-NG手把手教你将Panabit迁移到EVE-NG环境 云手机技术揭秘低成本实现1台电脑变百部虚拟手机实战 Docker网络从入门到精通7个核心命令实战详解 从400M到4.5GDocker迁移竟让VPP网络性能飙升10倍 误以为是外国货这家国产SD-WAN神器竟能免费白嫖附Panabit免费版体验全记录 零成本自建企业级SD-WAN用Panabit手搓iWAN实战 iWAN隧道实测一次握手跑满2.3Gbps白嫖的SD-WAN真能吊打专线 48核96GB内存EVE-NG 6.2低配版安装实录网络工程师必看 基于IPv6配置openVPN实战告别双栈难题一步打通IPv6隧道 无需公网IPv4手把手教你配置基于IPv6的WireGuard安全隧道 目前来看ollama量化过的DeepSeek模型应该就是最具性价比的选择