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ファイルを使用して仮想マシンを初めて起動したときに作成されます。に示すように、ユーザーはUID 1000で作成され、/etc/passwdユーザーはUID 1001で作成されます。ausermuser

muserこの仮想マシンにいくつかのソフトウェアを展開しており、インストールする前にUIDを事前に知っておく必要があります。そのISOファイルを使用してVMをデプロイするたびに、後でmuser作成されますauser(したがって、muserUIDは常に1001です)。

私は、ユーザーがアルファベット順に生成されたか、ファイルにリストされているものとは逆の順序で生成された可能性があると考え、その理論をテストするために4人のユーザーを含むuser-data別のファイルを作成しました。user-dataしかし、この理論は失敗します。 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"

関連情報