🗻
Conoha VPSでAlpine Linux(3.18.4)のテンプレートイメージを自作する手順をまとめてみました。
Conoha VPSでAlpine Linuxのテンプレートイメージを作成して運用してみました。
その中の、自作テンプレートイメージ作成の方法を手順形式で紹介します。
最初に
ここで紹介する自作テンプレートイメージは全て自己責任で利用してください。
作成するイメージの目標
cloud-initをイントールして、スタートアップスクリプト(user_data.txt)の実行と、SSH公開鍵のインポートが可能なイメージにします。
1. ISOイメージをマウント
-
下記のリンクを参考にして、VPSにISOイメージをマウントします。
-
今回利用するOSのバージョンは、"Alpine Linux version 3.18.4 (VIRTUAL)"です。
- Download Page: https://alpinelinux.org/downloads/
2. システムのセットアップ
ISOイメージがマウントできたら、VPSを起動し、以下の手順でシステムをセットアップしていきます。
- ConohaVPSの管理画面から、Webコンソールを開きます。
-
root
ユーザーに、パスワード入力無しでログインします。 - 以下のセットアップコマンドを叩きます。
setup-alpine
- すると、対話形式のセットアップが始まります。お好みの設定をしてください。
- eh0のアドレスの設定方法は、DHCPにするとConoha VPSから割り当てられるIPアドレスが設定されます。
- 利用するディスクは、"vda" (VPSに割り当てられているディスク)にします。
- 次に、*sysを選択し、Alpine Linuxをディスクにインストールするようにします。
- 起動したVPSの元のOSは必要ないので削除します。
Which disks(s) would you like to use? (or '?' for help or 'none') [none]: vda
How would you like to use it?('sys', 'data', 'crypt', 'lvm' or '?' for help)[?]: sys # As you need
Erase the above disk(s) and continue? (y/n) [n] y
3. システムのセットアップが完了したあと
セットアップが完了したら、VPSをシャットダウンします。
そして、下記の記事の内容に従って、ISOイメージをエジェクトします。
CLIツールで簡単にISOイメージをマウントする
4. cloud-initのインストール
- /etc/apk/repositoriesを開いて、コミュニティリポジトリをからパッケージをインストールできるようにします。
vi /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.18/community # <- Remove comment
- パッケージリストをアップデートし、cloud-initと、py3-netifacesをインストールします。
- py3-netifacesと、mountパッケージをインストールしないと、cloud-init実行時にエラーが生じます。
apk update
apk add cloud-init
apk add py3-netifaces
apk add mount
5. cloud-initの設定
- Conoha VPSは特殊なドライブをアタッチする、OpenStackのConfigDriveを利用して、そこからSSH公開鍵やスタートアップスクリプトをVPS内部にインポートしています。これを使えるようにするには、サーバー内部での設定が必要になるため、以下の行を、
/etc/cloud/cloud.cfg
に追加します。
vi /etc/cloud/cloud.cfg
datasource_list: [ConfigDrive]
-
root
ユーザーを有効にします。
disable_root: false
-
setup-cloud-init
を実行します。
setup-cloud-init
6. イメージの保存
VPSをシャットダウンして、イメージを保存します。OS名とバージョンはしっかり明記しておきましょう。これでいつでもAlpine Linuxを起動できるようになりました。
最後に
Alipine Linuxには、他にもファイアーウォールを設定するawall
(iptablesの設定ツール)コマンドなど、独自ツールもあるため、そちらも別の記事で紹介しようと思います。
Discussion