LinuxのAzure VM作成時にcloud-initを利用する方法(日本語化やパッケージのインストール)
Azure VM作成時に、カスタムデータとしてcloud-initを利用してパッケージのインストールやOSの設定を行う手順です。
TimeZoneやlocaleの設定、パッケージのアップデートおよびインストール、サービスの起動設定などの手順を紹介しています。
Azure 仮想マシンでのカスタム データと cloud-init
Azure での仮想マシンに対する cloud-init のサポート
Azure Portalで仮想マシンを作成する際、詳細タブ内にカスタムデータという項目があります。
カスタムデータを設定すると、仮想マシン作成時にスクリプトなどのユーザーデータをOSに配置することができます。
Linux OSの場合、仮想マシン作成時にcloud-initを利用してOSの初期設定が可能です。
今回は、Rocky Linuxを例に、TimeZoneやlocaleの設定、パッケージのアップデートおよびインストール、サービスの起動設定などの手順を紹介しています。
※動作確認には、Rocky Linux release 9.4 (Blue Onyx)を利用しています。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
cloud-initやカスタムデータとは
cloud-initとは
cloud-initは、Linux OSを初期化および設定するためのツールです。
仮想マシン作成時に、パッケージのインストールやユーザー追加などの初期設定を自動化できます。
Red Hat Linux、Rocky Linux、Ubuntuなどの主要なLinuxディストリビューションで利用されています。
cloud-initは主にクラウド環境で使用されます。
元々はAWS EC2インスタンス用に開発されましたが、Azureの仮想マシンでも利用可能です。
設定方法としては、cloud-config、Bashスクリプト、MIMEマルチパート形式などが利用できます。
マイクロソフト公式サイトでもcloud-initについて紹介されています。
カスタムデータとは
カスタムデータは、仮想マシン作成時にcloud-initの設定情報を渡すための方法です。
カスタムデータにcloud-initの設定を記載しておくことで、仮想マシンのデプロイ時に自動的に初期設定を実行できます。
仮想マシン作成時の詳細タブに、カスタムデータの設定項目があります。
カスタムデータ | |
詳細タブに"カスタムデータとcloud-init"という項目があります。 ※Rocky Linuxのイメージを選択している場合、"cloud-initによって処理されます"というメッセージが表示されます。 |
![]() |
拡張機能にカスタムスクリプトもあります
仮想マシンの拡張機能には、カスタムスクリプトと呼ばれるスクリプトを実行する機能があります。
カスタムスクリプトについては、こちらの記事で紹介しています。
cloud-initを使って仮想マシン作成と同時にTimeZoneやLocaleを設定
cloud-initのサンプルやモジュール
cloud-initの設定方法は公式サイトに記載されています。
モジュールの使い方についても解説されています。
cloud-config形式でTimeZoneやlocaleを日本に設定する方法
cloud-initを利用して、OSのTimeZoneとLocaleを日本に設定します。
公式サイトにTimeZoneとLocaleのサンプルがあるので、こちらを利用します。
最初に#cloud-configと記載します。
これにより、cloud-config形式で記載していることを宣言します。
cloud-configのサンプル | ||
カスタムデータに設定したcloud-initです。 |
|
|
![]() |
仮想マシン作成後にTimeZoneとLocaleの設定を確認
カスタムデータにcloud-initを設定した場合と、設定しない場合を比較して確認します。
仮想マシン作成直後にOSへログインして確認しています。
-
- カスタムデータにcloud-initを設定いない場合
- Time zone: UTC (UTC, +0000)
- LANG=C.UTF-8
- カスタムデータにcloud-initを設定した場合
- Time zone: Asia/Tokyo (JST, +0900)
- LANG=ja_JP.utf8
- カスタムデータにcloud-initを設定いない場合
カスタムデータの設定有無による比較 | ||
timedatectl status、locale、localectlコマンドの実行結果を比較します。 |
カスタムデータにcloud-initを設定してない場合
|
|
カスタムデータ設定済みの場合
|
cloud-initのModuleに記載があるModule frequencyとは何?
cloud-initのモジュールを確認すると、Module frequencyという項目があります。
これは、モジュールがいつ実行されるかを示しています。
Localeの場合はonce-per-instanceと記載されています。
これは、インスタンスの初回起動時に1回だけ実行されることを意味します。
—広告—
cloud-initを使ったコマンド実行、パッケージインストールやアップデート
cloud-initのサンプル
マイクロソフト公式サイトで、パッケージの更新やインストールのサンプルが公開されています。
公式サイトでも、cloud-initのサンプルが紹介されています。
パッケージのアップデート、Apacheインストールから自動起動設定
Webサーバー作成をイメージした、cloud-initのサンプルを作成してみます。
-
- 設定内容
- TimeZoneをAsia/Tokyoに設定
- localeをja_JP.utf8に設定
- keymapをjp106に設定
- パッケージをすべてアップデート(dnf -y update)
- glibc-langpackの関連パッケージをインストール
- Apache(httpd)のパッケージをインストール
- Apache(httpd)の起動設定
- 設定内容
仮想マシン作成後にcloud-initの設定が反映されているかを確認
仮想マシン作成後に、cloud-initの設定内容が反映されているか確認します。
カスタムデータ(cloud-init)の反映状況 | ||
dnf check-updateでパッケージのアップデート状況を確認します。 Apache(httpd)のステータスが起動中であることが確認できます。 ※/var/log/cloud-init.logにも結果が出力されています。 |
|
最後に
仮想マシン作成時のcloud-init設定について確認してみました。
OSの日本語化やパッケージのインストールといった初期設定ができるため、とても便利です。
ユーザー追加などについてもサンプルが公開されており、他にもさまざまなことができそうです。
引き続き、いろいろ試してみたいと思います。
Rocky Linuxの仮想マシン作成手順については、こちらで紹介しています。
初期設定に関する内容もあわせて紹介しています。
Rocky Linuxの仮想マシン作成時の管理者アカウントについては、こちらで紹介しています。
初期設定に関する内容もあわせて紹介しています。