我正在使用 Packer 和 cloud-init 為 proxmox 建立模板。我很失落和惱怒。每次我建立範本時,都會使用 uid 和 gid 1000 建立用戶,然後立即使用 uid 1001 和 gid 1002 建立 Ubuntu 用戶。我閱讀了文檔,它說如果定義了用戶,則不會建立 Ubuntu 用戶。我錯了嗎,我有很多不同的雲端配置,我數不清。為了讓它更煩人,每次我嘗試在建立模板後自動刪除 Ubuntu 用戶時,下次啟動時 Ubuntu 用戶就會回到那裡。我很茫然。偶然發現了一個奇怪的錯誤,而我做錯了什麼?我瘋狂地瀏覽了日誌,它只說 ubuntu 用戶已創建,但沒有提及原因。
#cloud-config
autoinstall:
version: 1
locale: en_US
keyboard:
layout: us
ssh:
install-server: true
allow-pw: true
disable_root: true
ssh_quiet_keygen: true
allow_public_ssh_keys: true
packages:
- qemu-guest-agent
- sudo
storage:
layout:
name: direct
swap:
size: 0
user-data:
package_upgrade: false
timezone: (user timezone)
users:
- name: (user)
groups: [adm, sudo]
lock-passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
passwd:(user password)
ssh_authorized_keys:
- (user ssh key)
答案1
在 22.04.2 iso 和 packer proxmox v1.1.3 上也看到了這個問題。
最後只是添加了一個 ansible 劇本以供其運行作為解決方法,在這裡分享
- name: Remove the user 'ubuntu'
ansible.builtin.user:
name: ubuntu
state: absent
remove: yes #delete dirs
- name: Remove sudo access for deleted 'ubnt' user
ansible.builtin.lineinfile:
path: /etc/sudoers.d/90-cloud-init-users
state: absent
search_string: 'ubuntu ALL=(ALL) NOPASSWD:ALL'
validate: 'visudo -cf %s'
- name: Remove left over config for deleted 'ubnt' user
ansible.builtin.lineinfile:
path: /etc/sudoers.d/90-cloud-init-users
state: absent
search_string: '# User rules for ubuntu'
validate: 'visudo -cf %s'