使用cloud-init时,用户创建的顺序是什么?

使用cloud-init时,用户创建的顺序是什么?

我在用云初始化初始化 RHEL Atomic Host VM。

我的文件如下user-data

#cloud-config
groups:
  - ourgroup
users:
  - name: muser
    primary_group: ourgroup
    lock_passwd: false
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-rsa [REDACTED]
  - name: auser
    primary_group: ourgroup
    passwd: [REDACTED]
    lock_passwd: false
    sudo: ALL=(ALL) NOPASSWD:ALL
ssh_pwauth: True

当虚拟机首次使用从该user-data文件生成的 ISO 文件启动时,将创建用户。从我在 中看到的/etc/passwdauser用户是使用 UID 1000 创建的,并且muser用户是使用 UID 1001 创建的。

muser我们正在该虚拟机上部署一些软件,在安装之前需要提前知道 UID 。每当使用该 ISO 文件部署 VM 时,muser总是会在之后创建auser(因此muserUID 始终为 1001)?

我认为用户可能是按照字母顺序或与文件中列出的相反顺序创建的user-data,因此我创建了另一个user-data包含 4 个用户的文件来测试该理论。但这个理论失败了,我无法判断 cloud-init 创建用户的顺序。

如果没有人知道用户创建的顺序,我至少可以假设muserUID 始终为 1001 吗?

答案1

事实证明有一个uid如上所述的字段这里,所以我可以用它来确保每个用户都有一个特定的 UID。

然而,正如提到的这里,该字段的解析方式存在错误uid。添加uid: 1001无法设置用户 ID,但添加uid: "1001"有效。

答案2

为什么这有关系?您始终可以使用以下命令在运行时获取 UID id,即:

id -n muser

因此,您可以修改安装脚本以通过运行该命令来获取 UID,例如:

uid=$(id -n muser)
echo "Installing mysoftware under UID $uid"

相关内容