はじめに
さくらのクラウド上でUbuntuの「クラウドイメージ」を利用する機会がありましたので方法をまとめておきます。
手順
順番にみていきます。
Ubuntuのクラウドイメージの準備
cloud-initが構築済みの「クラウドイメージ」というものがUbuntuで提供されています。
今回はこれを利用します。ただし、さくらのクラウドはraw形式にのみ対応していますので、イメージをダウンロードした後変換してからさくらのクラウドへアップロードします。
なお、以下の手順では作業マシン上でqemu-img
コマンドとusacloud
コマンドを利用します。
qemu-img
コマンドについてはyum install qemu-img
やapt install qemu-utils
などでインストールしておきます。
usacloud
コマンドはこちらを参考にインストール&APIキーの設定を済ませておきます。
# ダウンロード(今回は18.04を利用) curl -sL -o ubuntu.img https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img # qcowからraw形式(sparse)へ変換 qemu-img convert ubuntu.img ubuntu-sparse.raw # non-sparseファイルにする cp --sparse=never ubuntu-sparse.raw ubuntu.raw # さくらのクラウド上にアーカイブとしてアップロード usacloud archive create --name my-ubuntu --size 20 --archive-file ubuntu.raw
qemu-img
でraw形式に変換後、non-sparseファイルにするのがポイントです。
(試しにsparseファイルのまま試したらサーバ起動できませんでした)
NoCloudデータソース用にISOイメージを作成&アップロード
次にNoCloudデータソース用のISOイメージを作成、アップロードを行います。 NoCloudデータソースについては以下の記事を参考に作成しました。 gihyo.jp
今回はubuntuユーザーにパスワードを設定しパスワード認証でSSH接続できるようにするという内容になってます。
# user-dataファイルの作成(!パスワードは任意の値に置き換えてください) PASSWORD=your-password cat >user-data <<EOF #cloud-config password: $PASSWORD chpasswd: { expire: False } ssh_pwauth: True EOF # meta-dataファイルの作成(とりあえず空でOK) touch meta-data # ISOイメージの作成(linux上で作業する場合) mkisofs -R -V cidata -o cloud-init.iso ./ # ISOイメージの作成)mac上で作業する場合) # hdiutil makehybrid -iso -joliet -default-volume-name cidata -o cloud-init.iso ./ # さくらのクラウド上にISOファイルをアップロード usacloud iso-image create --name cloud-init --iso-file cloud-init.iso
作成したアーカイブ/ISOイメージを利用してサーバ作成
次にサーバの作成を行います。
usacloud server build \ --source-archive-id=`usacloud archive read -q my-ubuntu` \ --iso-image-id=`usacloud iso-image read -q cloud-init` \ --name=example
この後作成したサーバに対しSSH接続できるようになっているはずです。
まとめ
- Ubuntuのクラウドイメージをダウンロード後、non-sparseなraw形式に変換してアップロード
- cloud-initのデータソースにはISOイメージファイルを作成してNoCloudデータソースを利用
ISOイメージファイルの作成部分をうまく自動化すれば色々活用できますね。
以上です。