Azure VMのカスタムデータ(cloud-init)の利用方法(OS日本語化やインストール)
仮想マシン(Azure VM)作成時にカスタムデータ(cloud-init)を使用してOSの初期設定を行う手順の紹介です。
タイムゾーンやロケールの設定、パッケージのインストール、アップデート、起動設定などを例として紹介します。
Azure Portalで仮想マシンを作成する際、詳細タブ内にカスタムデータという項目があります。
カスタムデータを設定すると、仮想マシン作成と同時にスクリプトなどのユーザーデータをOSに配置することができます。
Linux OSの場合、仮想マシン作成に併せてcloud-initを利用したOSの初期設定ができます。
Azure 仮想マシンでのカスタム データと cloud-init
Azure での仮想マシンに対する cloud-init のサポート
Rocky Linuxを例に、タイムゾーン、ロケールの設定からパッケージのインストール、自動起動などをカスタムデータ(cloud-init)使って設定する手順を紹介します。
※動作確認はRocky Linux release 9.4 (Blue Onyx)を利用して実施しています。
cloud-initやカスタムデータとは
cloud-initとは
cloud-initは、Linux OSを初期化および設定するためのツールです。
仮想マシン作成と同時にパッケージのインストールやユーザー追加のような初期設定が出来ます。
Red Hat Linux、Rocky LinuxやUbuntuなどで使用されます。
主にクラウド環境で利用されます。
元々はAWSのEC2のインスタンス用に開発されたそうですがAzureの仮想マシンでも利用可能です。
cloud-config、Bashスクリプト、MIMEマルチパート形式と言った形式で設定できます。
マイクロソフト公式サイトでもcloud-initについて紹介されています。
カスタムデータとは
仮想マシン作成時にcloud-initの設定情報を渡す方法になります。
カスタムデータにcloud-initを記載しておくと、仮想マシンデプロイ時に自動的に処理させる事が出来ます。
仮想マシン作成時の詳細タブに設定項目があります。
カスタムデータ | |
詳細タブに"カスタムデータとcloud-init"という項目があります。 ※Rocky Linuxのイメージを選択しているので、"cloud-initによって処理されます"というメッセージが表示されます。 |
拡張機能にカスタムスクリプトもあります
仮想マシンの拡張機能にもカスタムスクリプトと呼ばれるスクリプトを実行させる機能があります。
カスタムスクリプトについてはこちらの記事で紹介しています。
仮想マシン作成と同時にTimeZoneやLocaleを設定
cloud-initのサンプルやモジュール
cloud-initの設定方法は公式サイトに記載されています。
モジュールの使い方が解説されています。
TimeZoneやlocaleを日本に設定
カスタムデータを利用して、OSのTimeZoneとLocaleを日本に設定してみます。
公式サイトにTimeZoneとLocaleサンプルがあるのでこちらを利用します。
最初に#cloud-configと記載します。
これはcloud-configで記載しているという宣言になります。
cloud-configのサンプル | ||
設定したカスタムデータです。 |
|
|
仮想マシン作成後にTimeZoneとLocaleを確認
カスタムデータを設定した場合と、設定してない場合を比較してみました。
仮想マシン作成直後にOSにログインして確認しています。
-
- カスタムデータ設定無し
- Time zone: UTC (UTC, +0000)
- LANG=C.UTF-8
- カスタムデータ設定有り
- Time zone: Asia/Tokyo (JST, +0900)
- LANG=ja_JP.utf8
- カスタムデータ設定無し
カスタムデータの設定有無による比較 | ||
“timedatectl status"、"locale"、"localectl"コマンドの実行結果を比較します。 |
カスタムデータを設定していない場合
|
|
カスタムデータを設定した場合
|
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の仮想マシン作成時の管理者アカウントについてはこちらで紹介しています。
初期設定に関する内容なども紹介しています。