適用対象: ✔️ 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
注
myResourceGroup、vmName、imageCIURN の値を適宜置き換えます。 cloud-init を含むイメージが選択されていることを確認してください。
前述のコマンドからの出力に示すように、VM のパブリック IP アドレスに SSH 接続します。 実際の user と publicIpAddress を次のように入力します。
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 の他の例については、以下をご覧ください。