Azureの無料アカウントで仮想マシンを構築する

# やりたいこと
Azureで無料アカウントを作成したので、仮想マシンを構築しSSH接続するところまでの手順を一通り実施したいと思います。
# 作成したい構成
基本構成として仮想マシンをAzure上に1台設置し、自宅PCからSSH接続するところまでを構築していきたいと思います。
また、ここにある`Resource Group`や`Virtual Network`は仮想マシンを構築すれば自動でAzure側で作成してくれるのですが、今回は学習のため1つずつ自分で作成しようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/750ca9d7-84b4-89e7-ecae-479343216668.png)
# 手順
## 1. サブスクリプションの確認
無料アカウントを作成すると自動でサブスクリプションが作成されていますので、まずはそれを確認します。
* 画面上部のAzureサービスからサブスクリプションを選択
表示されていない場合は検索窓から「サブスクリプション」と検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/96fe7ab0-931b-94a9-0462-8e2bff7b9c70.png)
* 無料のサブスクリプションが生成されていることを確認
今回はサブスクリプションの名前を「無料サブスクリプション」と変えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/50c824c4-ab78-18f3-efe6-9d601b645f07.png)
* サブスクリプション名を押下し詳細を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/465883a1-2b71-6d39-34c8-fea6c2d16059.png)
* 左上の[ホーム]を押してトップ画面に戻る
## 2. リソースグループの作成
サブスクリプションの配下にリソースグループを作成します。一連の作業が終わったらこのリソースグループごと削除する予定です。理由としては、個別にリソースを削除していくと削除し忘れる可能性があるため、リソースグループごと削除することで配下のリソースを全て削除する考えです。
* Azureサービスからリソースグループを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/0293a9a3-d09e-a4ef-9614-39cfa52dfe7b.png)
* 左上もしくは中央の[作成]を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/a35942aa-996c-4d97-0940-bd26a51e209d.png)
* サブスクリプションを選択
無料アカウントなので初回に作成されたサブスクリプションが選択されています。
* リソースグループの名称を入力
今回は「test_resource_group」としています。
* リージョンを選択
リージョンによって選択できるリソースが異なるようですが、今回は特に気にせず「Japan East」とします。
* 確認および作成を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/c3218100-e350-24f0-1ce2-d0dbb4e60052.png)
* 作成を選択
「検証に成功しました。」と表示されるのでそのまま[作成]を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/52946fe0-f0a3-ed09-f758-2805d4bf86f8.png)
* リソースグループの確認
数秒待つとリソースグループが作成されて画面に表示されます。
※`NetWorkWatcherRG`というネットワークが自動で作成されますが、料金には影響しないので無視して大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/d43444dd-faaf-1b50-43cb-039f448bc3eb.png)
これでリソースグループの作成は完了です。
## 3. 仮想ネットワークの作成
次に今作成したリソースグループ内に仮想ネットワークを作成します。
* Azureサービスから仮想ネットワークを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/bc64089b-d5ad-f21d-c912-8186ca24238d.png)
* 左上もしくは中央の[作成]を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/97fe9ddd-6995-b2d7-9806-bc00745cccea.png)
* リソースグループを選択
先ほど作成したリソースグループを選択することでその配下に仮想ネットワークを作成します。
* 仮想ネットワーク名を記入
* [IPアドレス]タブを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/c92abc2d-1072-7d82-a09a-b5adcb94096d.png)
* IPアドレスを確認
ここでアドレス空間とサブネットを設定しますが、今回はデフォルトのままの設定で進みます。デフォルトでは仮想ネットワーク内のアドレス空間が`10.0.0.0/16`となっていてサブネットが`10.0.0.0/24`となっています。仮想ネットワーク内には1つ以上のサブネットを作成する必要があるためデフォルトで自動的に1つ設定されます。
ちなみに、ここで例えば仮想ネットワーク内のアドレス空間をサブネットよりも狭い`10.0.0.0/26`などに設定するとエラーがでて作成できないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/803159a1-cb22-27e6-9dca-94be9b0108fb.png)
※[セキュリティ]、[タグ]のタブは今回設定不要でしたので飛ばします。
* [確認 + 作成] を選択し画面遷移したら[作成]を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/e9788b07-bfed-1549-14df-9314398494ba.png)
これで仮想ネットワークの作成が完了しました。
## 4. 仮想マシンの作成
作成した仮想ネットワーク内にUbuntuの仮想マシンを立ち上げます。
* Azureサービスから仮想マシン(VirtualMachines)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/0a2264e9-2942-9dcd-b692-e982fd5e25de.png)
* 左上もしくは中央の[作成]を押下
リストが表示されるので[Azure仮想マシン]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/dc91687a-db06-04e8-a667-94586f35214b.png)
* [基本]タブで仮想マシンの設定
  * プロジェクトの詳細
リソースグループを選択します。ここでは先ほど作成した「test_resource_group」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/b9c01d39-f885-2680-ef67-df7607b0edd9.png)
  * インスタンスの詳細
    * 仮想マシン名を入力
    * 可用性オプションを選択
今回はテスト用なので「インフラストラクチャ冗長は必要ありません」を選択します。
    * セキュリティの種類
Standardを選択します。
    * イメージは無料枠のUbuntuを選択
VMアーキテクチャはx64です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/a80d2b0c-8c61-94b6-9226-3fe3c2aa8a55.png)
    * サイズ
これも無料枠のStandard_B1sを選択します。
  * 管理者アカウント
    * 認証の種類
今回はSSHで接続しようと思うので、[SSH公開キー]を選択します。
    * ユーザー名
デフォルトで設定されている「azureuser」を利用します。
    * SSH公開キーのソース
新規なので[新しいキーの組を生成]を選択します。
    * SSHキーの種類
RSA SSH 形式を選択します。
    * キーの組名
デフォルトで設定されている「testVM_key」をそのまま利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/0aa4abd5-1112-6422-6ce6-04688f71505b.png)
  * 受信ポートの規則
    * パグリック受信ポート
今回はSSHで接続をしたいのでSSH(22)を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/075e7c41-58bd-9cfd-f338-76f7562d0645.png)
* ディクスのタブに移動
  * OSディスク
    * OSディスクサイズ
デフォルトのままとします。
    * OSディスクの種類
一番小さい[Standard HDD (ローカル冗長ストレージ)]を選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/ac2b1ef0-70c0-0b5f-04a3-58aba53d0119.png)
  * testVMのデータディスク
ここは追加でデータディスクを付与する場合なので今回は何も設定していません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/c8340bb8-ed01-42e7-a9ea-c09d8968d5da.png)
* ネットワークタブに移動
  * ネットワークインタフェース
    * 仮想ネットワーク
今回作成した仮想ネットワーク「test_network」を選択します。
    * サブネット
デフォルトで作成された(10.0.0.0/24)を選択します。
    * パブリックIP
デフォルトのままとします。自動で[マシン名-ip]が作成されています。
    * NICネットワークセキュリティグループ
Basicを選択します。
    * パブリック受信ポート
先ほど設定したSSHが設定されていることを確認します。
    * 「VMが削除されたときにパグリックIPとNICを削除する」を確認
こちらはチェックを入れておいてもいいと思いますが、今回はリソースグループごと削除するつもりなのでチェックなしで進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/1fd1f57c-b4fd-0894-1d2b-9d137bc1a1d4.png)
  * 負荷分散
今回はなしにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/7baeca1e-870b-a4fd-d255-11c28ca06e9d.png)
* それ以外のタブ
それ以外のタブ[管理][監視][詳細][タグ]はデフォルトのままで進みます。
* 確認および作成
最後に確認および作成で内容を確認して作成を押下します。
今回は`0.0136USD/時間`となっていますが、すぐに削除するので無料クレジット枠内で終わる想定です。
※0.0136*161.34=2.19円/時間なのですぐに消せば問題ないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/cbf30d78-9ece-bc82-3504-24a1d74ae736.png)
* SSHキーの作成
先ほどの設定でSSHキーの新規生成を選択したのでキー作成画面が表示されます。
[秘密キーのダウンロードとリソースの作成]を押下してキーをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/fe4813cb-9f65-54ca-6b7a-3586230b8b2b.png)
画面上に「デプロイが完了しました」と表示されれば無事に仮想マシンの作成が完了しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/0b7cd2e3-4799-8ba3-ae07-03e56aae98ce.png)
## 5. SSH接続
仮想マシンが立ち上がりましたので、次にPCからSSH接続してみようと思います。
* Azureサービスから仮想マシン(VirtualMachines)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/3d130f81-cc5e-b4c3-b229-8b60c9af1ed7.png)
* 作成した仮想マシン名(testVM)が表示されるので選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/b2285c9a-cbd3-9f89-a33d-804c19cb4440.png)
* 新たに画面右にページが表示されるので接続タブから[接続]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/65959a8b-1998-f523-3235-87301a0f2326.png)
* ネイティブSSHから[選択]を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/4b586d6e-30b4-f5bc-b6e4-ca1a337d1197.png)
さらに画面右にページが表示されてSSH接続の手順が示されますので、これに倣ってSSH接続を行います。ここで表示されるパブリックIPアドレスは次の操作で必要ですのでメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/96567d6b-7c39-f88c-48d1-9bfb9fbb3a61.png)
* Windows上でPowerShellを起動
タスクバーの検索フォームに`PowerShell`と入力すると出てきます。
* SSH接続を行う
以下のコマンドを実行します。(キーの保存場所とIPアドレスは適宜変更必要です。)
例として、ダウンロードディレクトリにキーを保存していてIPアドレスが`10.111.12.123`の場合は以下となります。先ほどメモしておいたIPアドレスがここにあたります。
```
# コマンド実行例
ssh -i C:\Users\test\Downloads\testVM_key.pem azureuser@10.111.12.123
```
このような表示となれば接続成功しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/952ae147-61e5-e864-e95f-2afff0ab8f4b.png)

# リソースグループの削除
最後にこれまで作成したリソースをすべて削除します。
仮想マシンはリソースグループ配下にありますので、リソースグループを削除することで課金対象のリソースはまとめて削除できます。
削除方法は削除したいリソースグループを選択して画面中央の[リソースグループを削除]を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815993/66c1e2dd-6a3b-592a-9a55-fb15998ad348.png)
以上で今回の手順はすべて完了です。
実際に操作してみると細かい設定が多くて調査しきれませんでした。
ですので、まずはやりたいことを絞って操作していき徐々に理解するしかないと思います。今後は実際にアプリを載せて動かすところまでできればと思います。
# 参考リンク
* https://learn.microsoft.com/ja-jp/azure/virtual-machines/linux/ssh-from-windows
→Azure 上の Windows で SSH キーを使用する方法
* https://www.tama-negi.com/2020/06/12/azure-vm-nsg/
→nsgの自動生成
* https://dev.classmethod.jp/articles/azure-first-vm/