Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
Azure逆引きリファレンス[PR]

Azure Central Azure逆引きリファレンス[PR]

Azure VMでLinuxインスタンスを起動したら最初にやっておくべき初期設定[PR]

2016年12月6日

Azure仮想マシンでLinuxインスタンスを立ち上げたら、SSH接続のための設定や、スワップファイルの有効化、タイムゾーンの設定、Azure CLIのインストールは必ず行いたい。その設定方法を紹介する。

Japan Azure User Group 濱本 一慶(とある技術の開発日記
  • このエントリーをはてなブックマークに追加

 クラウドプラットフォーム「Azure」の仮想マシン(VM:Virtual Machines)はLinuxも利用可能である。本稿ではLinuxインスタンスを起動したら実施しておいた方がよい設定についてまとめる。

 Azureの仮想マシンは「クラシック」もしくは「リソースマネージャー」のデプロイモデルを使用して作成することが可能だが、本稿では「リソースマネージャー」を利用して作成した仮想マシンを前提とする。また、LinuxのディストリビューションはUbuntu Server 14.04 LTSとする。図1は、Azureの管理ポータルで実際に仮想マシンを新規作成しているところだ。

仮想マシンのデプロイモデル
図1 仮想マシンのデプロイモデルとディストリビューション

リソースマネージャーを利用したUbuntu 14.04 LTSの仮想マシンを前提とする。

仮想マシンへの接続に関する設定

DNS名ラベルの設定

 Azureで仮想マシンを作成するとパブリックIPが割り当てられるが、初期状態では固定IPではない。そのため、常に同一のアドレスでアクセスするためにDNS名ラベルの設定を行う。

 具体的には、Azureのポータル画面から作成した仮想マシンを選択すると、図2のように仮想マシンの要点が表示される。要点に[パブリック IP アドレス/DNS 名ラベル]という項目があるが、初めは何も設定していないため[<なし>]と表示される。その表示箇所(図2の赤枠部分)をクリックするとIPアドレスの構成画面が表示され(図3)、DNS名ラベルを設定する欄が表示される。

図2 仮想マシンの要点

[パブリック IP アドレス/DNS 名ラベル]の値部分をクリックしてIPアドレスの構成画面を表示する。

DNS名ラベルの設定
図3 IPアドレス構成画面

[DNS 名ラベル (オプション)]項目の入力欄に適当な名前を指定して保存する。

 図3のIPアドレス構成画面では、IPアドレスを静的アドレスに変更したり、DNS名ラベルを設定したりできる。今回はIPアドレスの固定化ではなくDNS名ラベルの設定を行うため、[DNS 名ラベル (オプション)]に適当な文字列を指定して[保存]ボタンをクリックする。

 再度、仮想マシンの要点を表示するとDNS名ラベルが指定した文字列となっていることが確認できる(図4)。今後、仮想マシンに接続する際には、設定したDNS名ラベルを利用して接続を行うこととなる。

図4 DNS名ラベルを設定した後の仮想マシン要点

[パブリック IP アドレス/DNS 名ラベル]が指定した文字列になっていることが確認できる。

ネットワーク・セキュリティ・グループの設定

ネットワーク・セキュリティ・グループ設定画面の表示方法

 Azureの仮想マシンには、[ネットワーク インターフェイス]に[ネットワーク セキュリティ グループ]というセキュリティルールを指定することができる。初期状態では受信規則も送信規則も何も指定されていないため、全ての接続を拒否する状態となっている。LinuxインスタンスにはSSHを利用して接続するため、受信規則にSSHを許可する設定を追加する必要がある。

 [ネットワーク セキュリティ グループ]の設定画面を表示するには、以下の手順を実行する。

  1. 仮想マシンの設定項目にある[ネットワーク インターフェイス]をクリック(図5.1)
  2. 仮想マシンに接続されているネットワークインターフェイスの一覧が表示されるので、設定を表示するネットワークインターフェイスをクリック
  3. ネットワークインターフェイスの設定項目にある[ネットワーク セキュリティ グループ]をクリック(図5.2)
  4. ネットワーク・セキュリティ・グループの名前(図5.2の[bdtopic3vm-ubuntu1404-nsg])が表示されるので、それをクリック
図5.1 仮想マシンの設定項目

仮想マシンの設定項目にある[ネットワーク インターフェイス]をクリック。

ネットワークインターフェイスの設定画面
図5.2 ネットワークインターフェイスの設定項目

ネットワークインターフェイスの設定項目にある[ネットワーク セキュリティ グループ]をクリック。

SSH接続のための受信セキュリティ規則追加方法

 以上の手順によりネットワーク・セキュリティ・グループの設定画面が表示されたら、[受信セキュリティ規則]と[送信セキュリティ規則]が何も設定されていないことを確認する。図6のように[受信セキュリティ規則]には何も存在しないことが確認できたら(仮想マシンをデフォルト設定のまま新規作成した場合、「default-allow-ssh」という名前で、SSH接続を許可するためのネットワーク・セキュリティ・グループがすでに作成されている場合がある。その場合、本節の作業はスキップしてよい)、SSHでの接続を許可するため、受信セキュリティ規則を追加する。具体的には図7に示す、受信セキュリティ規則の[追加]ボタンをクリックする。これにより、[受信セキュリティ規則の追加]画面が表示される(図8)。

図6 ネットワーク・セキュリティ・グループの設定画面

設定項目にある[受信セキュリティ規則]をクリック。

受信セキュリティ規則
図7 受信セキュリティ規則の画面

初期状態では何も存在しないため、[追加]ボタンをクリックして受信セキュリティ規則の追加を行う。

追加するSSH用の受信セキュリティ規則
図8 追加するSSH用の受信セキュリティ規則

SSH接続用に受信セキュリティ規則の追加を行う。

 図8の[受信セキュリティ規則の追加]画面で、以下の手順を参考にSSH用の許可設定を追加する。本稿では表1の内容で設定した。

  1. [名前]には、適当な名前を入力する
  2. [優先度]は、初期値の値(例:100)をそのまま利用する
  3. [ソース]には、全てのIPアドレスからのアクセスを受け付けるため、Anyを指定する。この他、CIDR blockTAGを指定して接続元のIPアドレスに制限を設定することもできる。例えば特定のIPアドレスからのみを受け付ける場合などはCIDR blockで、接続を許可するIPアドレスを指定する
  4. [サービス]では、SSHを選択する。これにより[プロトコル]と[Port range]の設定値は自動的に入力済みとなる
  5. [アクション]に許可が設定されていることを確認して、[保存]ボタンをクリックする
設定項目 設定値
名前 SSH
優先度 100(初期値)
ソース Any
サービス SSH
プロトコル TCP
Port range 22
アクション 許可
表1 SSH用の受信規則設定キャプション

 以上の手順が完了したら、ネットワーク・セキュリティ・グループの設定画面で受信規則が追加されていることを確認する(図9)。

図9 追加後のネットワーク・セキュリティ・グループ

SSHの許可設定が追加されていることを確認する。

スワップファイルの作成

 仮想マシンを作成しただけの状態ではスワップファイルが存在しないため(リスト1参照)、アプリケーションのインストール時などでエラーが発生する場合がある。そのため、仮想マシンにスワップファイルを作成する必要がある。

Bash
$ free
             total       used       free     shared    buffers     cached
Mem:       3522008     550364    2971644        420      49184     367064
-/+ buffers/cache:     134116    3387892
Swap:            0          0          0
リスト1.1 freeコマンドを使ったSwap領域の確認

仮想マシン作成直後にfreeコマンドを利用してSwap領域を表示すると存在しないことが分かる。

スワップファイルの作成方法

 まずはwaagent(Microsoft Azure Linuxエージェント、詳細は後述のコラムを参照)を利用してスワップファイルが作成されるようにする。これには、リスト1.2の手順でwaagent.confファイルを編集する。

Bash
 
 
 
1
2
3
$ sudo vi /etc/waagent.conf

……省略(修正箇所のみ表示)……
ResourceDisk.Format=y
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=4096
リスト1.2 waagentを利用したスワッフファイル作成

waagent.confファイルを編集してスワップファイルを作成する。今回はviコマンドを利用しているが、普段利用しているテキストエディターを利用して編集して問題ない。

  • 1ResourceDisk.Formatの設定値をnからyに変更して、リソースディスクのフォーマットを行うように変更。
  • 2ResourceDisk.EnableSwapnからyに変更して、リソースディスクにスワップファイルを作成する。
  • 3ResourceDisk.SwapSizeMB0から適当な値に変更して、スワップファイルのサイズを指定する。

 編集後、Azureポータルから仮想マシンの再起動を行う(図10)。

図10 Azureポータルから仮想マシンの再起動

OSのシャットダウンコマンドは使用せずに、Azureポータルから仮想マシンの再起動を行う。

 再起動後に再度freeコマンドで確認すると、スワップファイルが作成されているのを確認できる(リスト1.3)。

Bash
$ free
             total       used       free     shared    buffers     cached
Mem:       3522008    3389576     132432        420       3120    3179416
-/+ buffers/cache:     207040    3314968
Swap:      4194300          0    4194300
リスト1.3 スワップファイル作成後のfreeコマンドを使ったSwap領域の確認

再度freeコマンドを利用してSwap領域を表示すると、スワップ領域が作成されていることが分かる。

【コラム】waagent.confファイルについて

 AzureのLinuxインスタンスにはMicrosoft Azure Linuxエージェント(waagent)が起動している。スワップファイルを作成する際に編集したwaagent.confファイルは、waagentの動作を制御するためのファイルである。waagentを利用することで、LinuxとFreeBSDのプロビジョニング、仮想マシンとAzureファブリックコントローラーとの相互動作を管理できる。このようにwaagentには、デプロイ用にさまざまな機能が用意されている。

タイムゾーンをJSTに変更

 Azureで作成した仮想マシンのタイムゾーンはUTCになっているため、(必要に応じて)日本のタイムゾーンを指定する。リスト2.1は、その手順だ。

Bash
 
1
 
 
2
3
 
 
 
 
$ cat /etc/timezone
Etc/UTC

$ echo "Asia/Tokyo" | sudo tee /etc/timezone
Asia/Tokyo
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Asia/Tokyo'
Local time is now:      Wed Nov 16 16:33:53 JST 2016.
Universal Time is now:  Wed Nov 16 07:33:53 UTC 2016.
リスト2.1 タイムゾーンを変更

初期のタイムゾーンはEtc/UTCが設定されている。これをAsia/Tokyoに変更する。

  • 1初期のタイムゾーンはEtc/UTCである。
  • 2/etc/timezoneファイルに対して、Asia/Tokyoを設定。
  • 3dpkg-reconfigureコマンドを使用してタイムゾーンの設定を反映する。

Azure CLIのインストール

 Azure CLIazureコマンドを利用すると、Azureのさまざまなリソースを操作することが可能となる。Azure CLIは現在、Node.jsで開発されているが、PythonベースのAzure CLI 2.0プレビュー版(Preview)も存在する。本稿では安定板であるNode.jsで開発されたAzure CLIのインストール方法について解説を行う。

Node.jsとnpmのインストール

 Azure CLIをインストールするには、Node.jsとnpmがインストールされている必要がある。そのため、まずは最新のNode.jsとnpmをインストールする。

Bash
$ sudo apt-get update
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs
リスト3.1 Node.jsとnpmのインストール

Azure CLIはNode.jsとNode.jsとnpmをインストールする必要があるため最新のNode.jsとnpmをインストールする。

Azure CLIのインストール

 次にnpmを使用してAzure CLIをインストールする。

Bash
$ sudo npm install -g azure-cli
リスト3.2 Azure CLIのインストール

npmを使用してAzure CLIをインストールする。

Azure CLIのインストール確認

 正常にAzure CLIがインストールされたか、azure -vコマンドを利用して確認する。

Bash
$ azure -v
0.10.7
リスト3.3 Azure CLIのインストールを確認

バージョン情報を表示して正しくインストールされたかの確認を行う。

Azure CLIのタブ補完を有効にする

 Azure CLIを利用する際に、タブ補完を利用できるように設定を行う。この設定を有効にすると、コマンドの途中でTabキーを押すとコマンドの候補が表示されるので使い勝手が向上する。

Bash
$ azure --completion >> ~/azure.completion.sh
$ echo 'source ~/azure.completion.sh' >> ~/.bash_profile

$ azure lo   (ここまで入力した段階でTabキーを押すと……)
location  login     logout
リスト3.3  Azure CLIのタブ補完を有効にする

Azure CLIのタブ補完を有効にする。設定直後にうまく動作しない場合は再度ログインすると有効になる。

 以上、

  • 仮想マシンへの接続に関する設定
  • スワップファイルの有効化
  • タイムゾーンの設定
  • Azure CLIのインストール

の4つが、筆者がお勧めする「Azure仮想マシンでLinuxインスタンスを起動したら最初に必ず設定しておきたい初期設定」の内容だ。実際には仮想マシンの用途に応じて必要な作業は数多く存在するがよく利用する初期設定を紹介した。Azure仮想マシンでLinuxを使うときに活用していただけるとうれしい。

※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

Azure逆引きリファレンス[PR]
5. 設計時に使えるAzure/AWSサービス・アイコン集とダウンロード方法[PR]

クラウド上のシステムやサービスを設計する際には、視覚的に分かりやすいアイコンを使おう。アイコンセットのダウンロード方法を示し、各アイコンを用いてAzure/AWSサービスの対応一覧表をまとめる。

Azure逆引きリファレンス[PR]
6. Azureアカウントを取得したら最初にやっておくべき初期設定[PR]

Azureを使い始めたら、特に重要なセキュリティ設定を初めに済ませよう! Azureアカウント保護(二段階認証)/アクセス制御(IAM)/セキュリティセンターの設定方法を説明。さらに各種アラートの作成方法や、入門者にお勧めのコンテンツも紹介する。

Azure逆引きリファレンス[PR]
7. iPhone/Androidの2段階認証アプリ「Authy」で複数デバイス対応(Microsoftアカウント編)[PR]

パスワード漏えい問題が頻発する現在ではログインの2段階認証は必須だ。人気アプリ「Authy」を使って、各種スマホ&PCブラウザーなど複数デバイスで2段階認証用のトークンを取得する方法を紹介する。

Azure逆引きリファレンス[PR]
8. 【現在、表示中】≫ Azure VMでLinuxインスタンスを起動したら最初にやっておくべき初期設定[PR]

Azure仮想マシンでLinuxインスタンスを立ち上げたら、SSH接続のための設定や、スワップファイルの有効化、タイムゾーンの設定、Azure CLIのインストールは必ず行いたい。その設定方法を紹介する。

Azure逆引きリファレンス[PR]
9. 分かりにくいAzure BLOBの料金を事前にある程度推測する方法[PR]

新規作成時にVMサイズや価格レベルを選択できるサービスに比べて、従量課金型のBLOBストレージは実際に使ってみるまでいくらになるのか料金が分からない。実際の料金と照らし合わせながら、使い始める前にその推測値を計算する方法を紹介する。

サイトからのお知らせ

Twitterでつぶやこう!