次の方法で共有


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

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

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

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

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

Linux VM にユーザーを追加するには、現在のシェルに cloud_init_add_user.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 構成ファイルには、含まれる - 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 の他の例については、以下をご覧ください。