Azure で cloud-init を使用してユーザーを Linux VM に追加する

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事では、Azure でのプロビジョニング時に、cloud-init を使用して、仮想マシン (VM) または仮想マシン スケール セット (VMSS) でユーザーを追加する方法を示します。 この cloud-init スクリプトは、リソースが Azure によってプロビジョニングされた後の最初の起動時に実行されます。 cloud-init が Azure およびサポートされている Linux ディストリビューションでネイティブに動作する方法の詳細については、cloud-init の概要に関するページをご覧ください。

cloud-init で VM にユーザーを追加する

新しい Linux VM での最初のタスクの 1 つとして、root の使用を避けるために自分用の追加ユーザーを追加することがあります。 SSH キーは、セキュリティと使いやすさのためのベスト プラクティスです。 キーは、この cloud-init スクリプトで ~/.ssh/authorized_keys ファイルに追加されます。

Linux VM にユーザーを追加するには、現在のシェルに cloud_init_upgrade.txt という名前のファイルを作成し、次の構成を貼り付けます。 この例では、ローカル コンピューター上にない Cloud Shell でファイルを作成します。 任意のエディターを使用することができます。 cloud-init ファイル全体 (特に最初の行) が正しくコピーされたことを確認してください。 値 ssh-authorized-keys: に対してご自身の公開キー ( ~/.ssh/id_rsa.pub の内容など) を指定する必要があります。ここでは、例を簡単にするために短くなっています。

#cloud-config
users:
  - default
  - name: myadminuser
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - ssh-rsa AAAAB3<snip>

注意

#cloud-config ファイルには、- default パラメーターが含まれます。 これにより、プロビジョニング中に作成された既存の管理ユーザーに、ユーザーが追加されます。 - default パラメーターを指定しないでユーザーを作成すると、Azure プラットフォームによって作成された自動生成された管理者ユーザーは上書きされます。

このイメージをデプロイする前に、az group create コマンドを使用してリソース グループを作成する必要があります。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --location eastus

ここで、az vm create で VM を作成し、次のように --custom-data cloud_init_add_user.txt で cloud-init ファイルを指定します。

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_add_user.txt \
  --generate-ssh-keys

注意

myResourceGroupvmNameimageCIURN の値を適宜置き換えます。 cloud-init を含むイメージが選択されていることを確認してください。

前述のコマンドからの出力に示すように、VM のパブリック IP アドレスに SSH 接続します。 実際の userpublicIpAddress を次のように入力します。

ssh <user>@<publicIpAddress>

ユーザーが VM および指定されたグループに追加されたことを確認するには、 /etc/group ファイルの内容を次のように表示します。

sudo cat /etc/group

次の出力例は、cloud_init_add_user.txt ファイルからのユーザーが VM と適切なグループに追加されたことを示しています。

root:x:0:
<snip />
sudo:x:27:myadminuser
<snip />
myadminuser:x:1000:

次のステップ

構成変更の cloud-init の他の例については、以下をご覧ください。