我正在使用 Packer 为 Ubuntu Server 22.04 生成新的 VMware vCenter 模板。Packer 构建过程非常顺利,直到接近尾声时,似乎遇到了 ssh 密码问题。当我尝试登录时,通过用户数据设置的密码不起作用,尽管 Packer 能够使用密码执行脚本而没有任何问题。我一开始使用的用户数据文件与我在 Focal 中成功使用的文件基本相同。我多次重新生成密码,但都没有成功,这个加密密码对 Focal 来说很管用。
有人发现我的用户数据有问题吗?我是否遗漏了 22.04 中的一些问题?我尝试过使用和不使用“用户”块,但似乎没有什么区别。
谢谢!
#cloud-config
autoinstall:
version: 1
early-commands:
# workaround to stop ssh for packer as it thinks it timed out
- sudo systemctl stop ssh
users:
- default
- name: ansible
passwd: '$6$rounds=4096$UHMNxOtuu$.4zAwGuhVEC8w06EnkMbWPMUJx/4VMDOyk.J9a9SksieOJcZflaU61w7El.V5QBTdsNnqsYncNPcJ6cxOKwgI1'
shell: /bin/bash
lock-passwd: false
ssh_pwauth: True
chpasswd: { expire: False }
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
locale: en_US
keyboard:
layout: en
variant: us
packages: [open-vm-tools]
network:
network:
version: 2
ethernets:
ens192:
dhcp4: true
identity:
hostname: ubuntu-server
username: ubuntu
password: '$6$rounds=4096$UHMNxOtuu$.4zAwGuhVEC8w06EnkMbWPMUJx/4VMDOyk.J9a9SksieOJcZflaU61w7El.V5QBTdsNnqsYncNPcJ6cxOKwgI1'
ssh:
install-server: yes
allow-pw: yes
storage:
layout:
name: lvm
user-data:
disable_root: false
late-commands:
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
- curtin in-target --target=/target -- chmod 440 /etc/sudoers.d/ubuntu
编辑:我能够启动模板,但似乎从未创建过“ansible”用户。我可以在 /var/log/cloud-init.log 中看到创建了 ubuntu 用户,但 ansible 用户从未出现在该日志中。
答案1
您的users
部分需要位于该user-data
部分之下。
此外,如果您指定了一个identity
部分,那么该users
部分将被完全忽略。这没有记录,要么是一个错误,要么是文档记录不全。
这是示例配置,它将创建ubuntu
用户和ansible
用户,并为他们分配相同的密码。用户ubuntu
是根据default
列表项创建的,然后chpasswd
用于更新其密码。这只是完整user-data
文件的片段。文件的其余部分必须不是包含一个identity
部分。
#cloud-config
autoinstall:
user-data:
users:
- default
- name: ansible
passwd: $6$rounds=4096$UHMNxOtuu$.4zAwGuhVEC8w06EnkMbWPMUJx/4VMDOyk.J9a9SksieOJcZflaU61w7El.V5QBTdsNnqsYncNPcJ6cxOKwgI1
shell: /bin/bash
lock-passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
chpasswd:
expire: false
list:
- ubuntu:$6$rounds=4096$UHMNxOtuu$.4zAwGuhVEC8w06EnkMbWPMUJx/4VMDOyk.J9a9SksieOJcZflaU61w7El.V5QBTdsNnqsYncNPcJ6cxOKwgI1
也可以看看
笔记
我在 Ubuntu 22.04 上成功测试了这个代码片段(subiquity 22.04.2
)