こんにちは。日本仮想化技術株式会社の水野です。
本記事ではFJcloud-Vをはじめて使う人、主にクラウドの経験がない開発者を対象に、Linuxサーバーを立ち上げる手順を紹介します。
クラウドで開発・検証環境を作るメリット
クラウド最大のメリットは、必要なリソースをオンデマンドに確保し、不要になったら使い捨てられるという柔軟さです。そして費用も使ったリソース分だけを支払えばよいため、最適化がしやすく無駄がありません。
こうした特徴からクラウドは、「一時的に利用したい開発・検証環境」と、すこぶる相性がよいプラットフォームだと言えるでしょう。
筆者はOps寄りのエンジニアのため、インフラの視点から見てみましょう。
最近ではサーバーの構築はIaCでコード化したり、アプリケーションはコンテナとしてパッケージングするのが一般的で、サーバー上で直接コマンドを実行する機会は減ってきています。ですがいきなりAnsibleのコードや、Dockerfileを書き始めるわけではありません。まずは従来通り手動で環境のセットアップやアプリのインストールを行ってみて、最適な手順を確立してから、その手順をコードに落とし込むというプロセスを踏むのが一般的です。
ここで大切なのが、「最適な手順の確立」の部分です。ここでは何度も試行錯誤を行うことになりますが、その試行は毎回、クリーンな環境で行わなくては意味がありません。つまりまっさらな環境を、高速に、何度でも立ち上げられる必要があります。そして、その要望にマッチするのがクラウドというわけです。
オンプレミスじゃだめなの?
自分が作業するだけの環境なら、わざわざお金をかけてクラウド上に構築しなくてもいいのでは? と思う人もいるでしょう。
もちろんオンプレミスに開発サーバーを用意しても構いません。ですが物理サーバーの調達や継続運用はコストもかかる上、なにより面倒です。また一時的な使用に留まるのであれば、使い終わってからの後片付けも頭の痛い問題です。
オンプレミス開発・検証環境の問題点
オンプレミスの物理サーバーでは、OSのインストールにもひと手間かかります。前述の通り、検証はクリーンな環境で何度も試行錯誤を行う必要があります。そのため新規のサーバーを高速に起動できたり、クリーンな状態のスナップショットに巻き戻す機能がないと、効率が非常に悪くなります。つまりオンプレミスを使う場合であっても、なんらかの仮想化基盤の導入は必須だと言ってよいでしょう。
開発用PCに、VirtualBoxなどの仮想化ソフトウェアをインストールして利用する手もあります。ですが開発用PCに、サーバーの動作に割くリソースの余裕があるとは限りません。また最近のMacのように、ARMアーキテクチャのPCを使っている場合は、そもそもx86_64のサーバーが動かしづらいケースもあるでしょう。
クラウドは、こうした細かい課題をすべて解決してくれます。そしてコスト面でも、構築や後片付けの手間も含めて考えれば、クラウドの方が有利だと言えるでしょう。
FJcloud-Vにサーバーを立ち上げよう
FJcloud-Vで検証作業用のLinuxサーバーを構築
それでは検証作業に使うLinuxサーバーを用意するというシナリオで、FJcloud-V上にサーバーを立ち上げてみましょう*1。
まずコントロールパネルにログインします。続いて、リージョンを選択します。画面右上のプルダウンをクリックして、サーバーを立てるリージョンを選択してください。
続いて左上のプルダウンから、サービスを選択します。「コンピューティング・コンテナ」→「コンピューティング」を開いてください。
サーバー作成
左側のペインに、コンピューティングサービスが持つ機能の一覧が表示されます。「サーバー」をクリックしてから、「サーバー作成」をクリックします。
サーバー作成ダイアログが開くので、ここからは対話的にサーバーの設定を行っていきます。まずサーバーのOSを選択します。ここではUbuntu Server 22.04 LTSを選択しました。
続いてサーバーを作成するゾーンとタイプを選択します。ゾーンはどこでも構いませんが、今回はeast-11を選択しました。今回はあくまで紹介が目的なので、サーバータイプも一番安価なc2r-smallとしました。
サーバーの設定
続いてのサーバー設定は、少しやることが多いです。まず「サーバー名」を入力します。コントロールパネル上に複数のサーバーが並んでも判別がつくよう、わかりやすい名前にしましょう。「メモ」にサーバーの少し詳しい説明を書いておくのもおすすめです。
「料金プラン」は「従量」と「月額」が選択できます。意味は文字通りで、従量は1時間単位での課金、月額は1ヶ月単位での課金となります。そのため一時的な利用であれば、絶対に「従量」を選択してください。ただし24時間起動しっぱなしにする場合、月額の方がやや安価になる価格設定となっています。そのため絶対に停止しないことが確実なサーバーであれば、お得な「月額」を選択するのがよいでしょう。
SSHキー作成
このサーバーにログインするためのSSHキーを作成します。「SSHキー」の右側にある「+」ボタンをクリックしてください。キーの名前とパスフレーズを入力してから「SSHキー作成」をクリックします。
ファイアウォール作成
サーバーに適用するファイアウォールを作成します。 「ファイアウォール」の右側にある「+」ボタンをクリックしてください。 「グループ名」には、わかりやすい名前をつけます。ここではサーバー名と同じにしました。
続いて「INルール追加」をクリックして、サーバーに対して許可するインバウンドの通信ルールを設定してください。なおOUTルールは設定しなくて構いません。OUTルールがひとつも設定されていない場合は、すべてのアウトバウンド通信が暗黙的に許可されます。ルールの追加が完了したら、「ファイアウォール作成」をクリックします。
ネットワークの設定
最後にネットワークを設定します。今回のサーバーはインターネットに直接接続するため、グローバルIPアドレスを「自動割り当て」にしておきます。
最後に「確認」をクリックすると、最終的な確認画面が表示されます。これで問題なければ「作成する」をクリックしてください。
サーバーを起動
しばらく待つと、サーバーが起動します。サーバーに割り当てられたグローバルIPアドレスに対し、先ほどダウンロードした秘密鍵を使ってSSH接続すれば、あとは自由にサーバーを操作することができます。サーバーへのSSH接続については、以下のドキュメントも参照してください。
これだけで、自由にいじって使い捨てられるサーバーが手に入りました。しかもかかるコストは1時間あたりたったの3円です*2。倉庫から余ったPCを持ち出してきてセットアップしたり、開発用PCのメモリを仮想マシンに割くくらいなら、もうクラウドでいいや、ってなりますよね!?
Terraformで自動化してみた
クラウドでのサーバーの構築は非常に簡単ですが、何度も繰り返すとなると、手作業でのポチポチは面倒です。また手作業ゆえ、ミスが起きることもあるでしょう。そのためこうした作業はコード化、自動化するのが定石です。本記事ではオマケとして、前述のサーバーを構築するTerraformのコードを紹介します*3。
SSH鍵とファイアウォールを作成した上で、サーバーを起動するTerraformのコードは以下になります。
terraform { required_version = "~> 1.6" required_providers { nifcloud = { source = "nifcloud/nifcloud" version = "~> 1.12.0" } } } locals { region = "jp-east-1" zone = "jp-east-11" image_name = "Ubuntu Server 22.04 LTS" instance_type = "c2r-small" instance_accounting_type = "2" private_key_name = "nifcloud_rsa" private_key_algorithm = "RSA" private_key_rsa_bits = 4096 source_ip = "203.0.113.1" # ソースIP、適宜書き換えてください } provider "nifcloud" { region = local.region } data "nifcloud_image" "ubuntu" { image_name = local.image_name } resource "nifcloud_instance" "ubuntu" { instance_id = "ubuntu" availability_zone = local.zone image_id = data.nifcloud_image.ubuntu.id key_name = nifcloud_key_pair.ubuntu.key_name security_group = nifcloud_security_group.ubuntu.group_name instance_type = local.instance_type accounting_type = local.instance_accounting_type network_interface { network_id = "net-COMMON_GLOBAL" } network_interface { network_id = "net-COMMON_PRIVATE" } } resource "nifcloud_key_pair" "ubuntu" { key_name = "ubuntu" public_key = base64encode(tls_private_key.rsa.public_key_openssh) } resource "local_sensitive_file" "private_key" { content = tls_private_key.rsa.private_key_openssh filename = "${path.module}/${local.private_key_name}" file_permission = "0600" } resource "tls_private_key" "rsa" { algorithm = local.private_key_algorithm rsa_bits = local.private_key_rsa_bits } resource "nifcloud_security_group" "ubuntu" { group_name = "ubuntu" availability_zone = local.zone } resource "nifcloud_security_group_rule" "ubuntu" { security_group_names = [nifcloud_security_group.ubuntu.group_name] type = "IN" protocol = "ANY" cidr_ip = local.source_ip }
上記コードをmain.tf
という名前で保存した上で、以下のコマンドを実行してください。なおTerraformはバージョン1.6以上を想定しています。またクラウドを操作するためのクレデンシャルは、環境変数でエクスポートしておいてください。
$ export NIFCLOUD_ACCESS_KEY_ID=アクセスキー $ export NIFCLOUD_SECRET_ACCESS_KEY=シークレットキー $ terraform init $ terraform plan $ terraform apply
Terraformについては、こちらのレポートも合わせて参照してください。
blog.clouddirect.jp.fujitsu.com
無料トライアルのご紹介
ただいま国産クラウド「FJcloud-V」を無料でお試しできます。詳しくは↓のバナーをクリックしてください。