「第13回 Office365 勉強会 ~ 北の国から2016 ~」に参加させていただきました

こんにちわ!おそくなりましたが、参加報告です。

http://jpo365ug.com/o365-meeting/meeting-13/

セッションの内容は、聞いた人によって受け取り方はさまざまだったんじゃないかと思います。機能の紹介から始まって、運用の話、開発の話と幅広い内容を4セッションで聞かせていただきました。

これは、非常に面白かったです。というのも、MicrosoftAzureは完全にプラットフォームなところですが、Office365はエンドユーザーに向けたサービスというのが一番の理由でしょうか。レイヤーでいうなら、OSとかミドルウェア、プラットフォームまでがAzureですが、Office365は完全な機能(アプリケーション)を提供するサービスです。それもAPI(Application-Plugin Interface)付き。ので、ここに携わる開発者というのはこういうサービスを作りたいという発想だけではなく、今あるものを便利にしようとか、より使い勝手をよくしようとか、活用できるようにしよう。運用からこんなことに困っているとか、営業やら運用からあがる具体的な事柄に対して立ち向かっていくというのが、開発者の一番の役目なのだなぁと感じました。

ディスカッションにおいては、まとめをしゃべる役目を承りましてマイクの電源が入っていない落ちどころからはじまって、話のオチで終わるという落ちてばかりでしたが、笑ってもらえただけありがたいと感じています。

ところで、Office365とAzureの結ぶ点にAzureADという認証を行うサービスがあったりします。Office365の視点だとあまりAzureADは、バックエンドであるため見えてきません。セッションの中でも開発を中心として紹介されていました。オンプレミスのADと連携する機能や、多要素認証・2段階認証(※別途有償だけど)、またはOAuthなどの認証サービス、。そして・・・Azureとの連携もあります。

http://msdn.microsoft.com/ja-jp/library/azure/jj573650.aspx

Azureの視点でみるなら、ここにユーザー・グループを作ってリソース管理にアクセス制御をするということ、またサービス自体の認証に使ってしまうということでWebアプリの認証としてポータルから設定することもできます。AzureAutomation用のアカウントを作ったりとかもありますね。

という具合に切っても切れない結びつきがありますので、ここつないでいったらクラウドの閉ざされたサービスというのももうちょっと面白い展開ができそうな気がしました。

それでは!

Visual Studio Dev Essentials – Azure Credits

とうとう、Visual Studio Dev Essentialsに Azureのクレジットがきたー!という嬉しさでBlog書きます。

Free Visual Studio Dev Essentials Program now includes $300 in Azure credits and Exclusive Xamarin University access

Today we’re pleased to announce two new benefits for Dev Essentials members:

  • $300 in Azure Credits: enjoy $25/month in credits for 12 months to take advantage of Azure services for your apps.). That’s enough to run a D2 Windows Virtual Machine for 95 hours a month, or try out an A3 HDInsight Cluster for 24 hours. These credits can be applied on top of the free options offered by many Azure services. Learn more here

毎月$25で12か月間、合計$300のAzureクレジットを提供する。これはVirtualMachineをD2インスタンス(仮想マシンのスペック)でWindowsを入れた場合は月に95時間使え。または、A3 HDInsightなら24時間使えますよーってみたいなことが書いてるようです。

この特典は、去年のConnect();というイベントで発表された「Visual Studio Dev Essentials」というものの一部で、それ以来Azureのサブスクリプションは「Comming soon」となっていたものでした。VSCodeまたはCommunityを開発環境として、WebサーバーまたはアプリのバックエンドはAzureでだれでも始められる環境がそろったことはすごいと思っています。

日本円で 2,550-のようですね。

 

と喜んでいたのですが、

どうやら

Sign In issues with Visual Studio Team Services – 2/4 – Investigating

現在、サインインに関して問題が発生しているようです。復旧するまでそうかからないと信じていますが、待つしかなさそうです。

 

 

 

復帰しないかなー。わくわく

・・・と何回かチャレンジするといけました。

この画面は、事前にVisual Studio Dev Essentialsの利用開始している状態です。

 

Azure $25 monthly Azure Creditの「Activate」を選びました。

しばらく待ちます・・・

「サービスの管理を開始する」でポータルデビュー!

今月は短いからいきなり28日になってますね。

3000円になってるな・・・まぁ気にしない!

サブスクリプションの購入をお知らせするメールも届いてました。

初期では、使用制限がかかっているので、課金される心配はないです。しかし、使用制限を解除して課金することで、クレジット以上使うこともできそうな感じです。(もちろん、試してない)。無料評価版で、1か月だったものより試しやすいかなぁという気がします。

 

Azure Resource Manager QuickStart Templateを試してみた – Load Balancer with Inbound NAT Rule

こんにちは!今日もテンプレートで遊びます。既出っぽい気がしますがあまり気にしないでいきます。

101-loadbalancer-with-nat-rule

今日はこのテンプレートです。これは受信規則NATを設定したロードバランサー、パブリックIPアドレス、仮想ネットワーク、ネットワークインターフェイスを一式デプロイしてくれました。

ロードバランサー概要

パラメータ

  • DnsNameForLBIP – NAT用のロードバランサーのDNS名(PublicIPに設定されるもの)
  • Location – デプロイするロケーション(Japan EastとかJapan Westとか)
  • AddressPrefix – 仮想ネットワークのaddress空間
  • SubnetPrefix – 仮想ネットワーク内に作成するサブネットマスク
  • PublicIPAddressType – 動的か静的か。試す分にはDNS名を使うとしてどちらでもよいんじゃないかと思います。動的にしても後で静的に変えることはできるようです。逆は一度関連付けを外す必要があるようです。

デプロイされた後のリソースです。

このテンプレートは受信規則NATというものにRDPを登録しています。そしてそのRDPはVirtualNetwork1にあるnetworkInterface1にマッピングされるようになっています。こうすることのメリットは、仮想マシンとPublicIPaddressを切り離すところにあるのではないかと思います。この仕組みは「仮想マシン(クラシック)」のクラウドサービスが提供する機能に似ている。例えば、一つのaddressで、複数のサービスを持たせるけど、規模が小さすぎるのでバックエンドは一つのサーバーにしておいて、後から複数サーバーに分散していくなど。そういう活用もできるんじゃないかと思いました。PublicIPのコストも抑えられるし。

該当するドキュメント

  • 外部トラフィックを特定の VM インスタンスに転送します。

 

見えない部分でわかりづらいので、簡単な図を作ってみました。仮想マシンに接続されるネットワークインターフェイスには、PublicIPがなく、LoadBalancerにのみパブリックIPがある状態です。

灰色の部分はテンプレートに含まれていないもので、上でいってたような私の妄想した領域です。この構成「仮想マシン(クラシック)」のクラウドサービスほぼ同じですね。ただ、ロードバランサーとしての機能がいくつもあるので柔軟性は明らかにこっちのほうが上です。テンプレートではNetworkInterface1がありますが、このままだと何の意味もありません。TemplateをカスタマイズしてVM、LBなどにくっつける前提になっているようですね。

以下は、NAT規則にHTTPSを追加して同じターゲットにしてます。のちにターゲットを増やして分離。または負荷分散へ変更するということもできそうなところです(同期が必要な場合、ダウンタイムは発生すると思いますが)。可用性セットを関連付けて置く必要があるようです。(仮想マシンの可用性管理

 

仮想マシンにPublicIPがなくとも、ポータルからWindowsへリモートデスクトップ接続ができるようです。(ちゃんとLBまで見てる様子)

というところで、以上になります。

それでは!

 

Microsoft Azure クイック スタート テンプレート試してみた – Web アプリと Redis Cache

今日のテンプレート

Create a Web App plus Redis Cache using a template

ぽちっと!

このテンプレートは、日本語の説明があるようなのでそちらを参照してみてください。ホストにステートとかキャッシュを持つようなWebAppでスケールアウトを行う場合、ホスト固有の情報は複数のホストがあると同期されない。または、アクセスが早い揮発性の大容量メモリがほしいなど。この性質を解決するために、RedisCacheサービスを使うという方法をいつか試したいなぁとか思ったりしました。(これぞ!という実のある用途・目的を思いついてない)もちろんステートを永続化するなら、DBやStorageを使う方法も考えられます。またASP.NETならセッションプロバイダーを独自で実装してしまえば、どうにでもなってしまうでしょう。VNet接続で、IaaSなASPNETStateServerにつなぐ方法もあるかもしれません。(ただ、レスポンスとかどうなるか要検証だとは思う)BlackJumboDogもなんかできそうだなぁとか妄想してはいます。テンプレートを眺めながら何かわくわくしている反面、時間が足りないと感じる今日でした。

それでは!

 

HPH 2015 一次産業 × IT ハッカソン in SAPPORO

こんにちは!今週末は、HPH 2015 一次産業 × IT ハッカソン in SAPPOROを見学させていただきました。このイベント、実は年度で動いていたようで、HPH 2015 林業×IT アイディアソン in ENIWAというワークショップ形式でアイディアを出すというもので、参加していなかったので内容はわかりませんが、そこで出てきた内容をスマホアプリを中心としてさぁ何か一つ形にしてみよう!という流れでした。

今回、Microsoftさんの提供で無償サブスクリプションが提供され、Micorosoft Azureの概要とMobileAppsの説明がありました。私自身、MobileAppsはほとんど実装したことがなかったので、とても勉強になりました。ちょっと調べた範囲をまとめておきます。このサービスは、Mobileデバイスのアプリ向けにバックエンドを提供するサービスです。

  • SQLデータベース(連携のみで、別サービス)
  • WebAPI
  • モバイル認証
  • プッシュ通知
  • スケールアップ
  • スケールアウト(自動)
  • デプロイスロット(移行用サブサイト)
  • ソース管理からの継続的デプロイメント
  • バックアップ
  • ログ出力
  • Swagger 2.0
  • クロス オリジン リソース共有 (CORS)
  • Web ジョブ
  • 仮想ネットワーク(VirtualNetwork – VNet)接続
  • カスタム ドメインおよび SSL
  • トラフィック ルーティング(連携)
  • サーバーサイドのC#サンプルコード
  • サーバーサイドのNode.jsサンプルコード
  • クライアントサイドのC#サンプルコード(オフライン同期)
  • クライアントサイドのiOS(Objective-C)サンプルコード(オフライン同期)
  • クライアントサイドのiOS(Swift)サンプルコード(オフライン同期)
  • クライアントサイドのAndroidサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.Androidサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.iOSサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.Formsサンプルコード(オフライン同期)

という感じです(項目並べてみて並べ方の問題もあるけど結構多いと思った今日この頃)このWebAPIになるサイトは、PaaSであるためOSの管理は不要です。(触ることがないようになっています)昔の/~hogehoge/なホスティングサービスのようなもので、Webサーバーをインストールする必要はありません。出来上がった状態からスタートします。サーバーサイドのアップロードはVisualStudio、FTPでできます。

あと、SQL Databaseの目安になりそうなもののリンクを張っておきます。

SQL Database のオプションとパフォーマンス

また、Webサイトにはディスク容量に制限がありますので、画像などの静的コンテンツは、ストレージアカウントに格納するという選択肢もあるんじゃないかと思いました。

Microsoft Azure Storage のパフォーマンスとスケーラビリティに対するチェック リスト

今回、色々な発表を聞かせていただく中で、ワクワクしてきました。モバイルデバイスほしいなぁという欲求が高まる日々でございます。実際に形になるものをこの短期間で作り上げてしまうのはすごいなぁと感じました。私も精進します!

それでは!

Microsoft Azure クイック スタート テンプレート試してみた – ubuntu-desktop

こんにちは。ARMのお勉強のために公式で用意されているコミュニティによるクイック スタート テンプレートの紹介です。公式のものではなくなりますが、コミュニティ提供のものとしての一覧があります。

Azure クイック スタート テンプレート

Azure リソース マネージャーを通じてコミュニティ提供のテンプレートで Azure リソースをデプロイし、生産性を高めます。デプロイ、学習、フォークして、自分も貢献しましょう。

さっそくデプロイ

ここで見つけた、Create an Ubuntu desktopっていうものを試してみます。 Azureへのデプロイボタンをクリックすると、ポータルでのカスタムテンプレートのデプロイ画面になります。

パラメーター

  • NewStorageAccountName – ストレージアカウントを作るようなのでそのアカウント名。
  • AdminUserName – Ubuntuのユーザー名
  • AdminPassword – Ubuntuのパスワード
  • DNSNameForPublicIP – DNSホスト名
  • VMSize – 仮想マシンのプラン

これらのパラメータでDNS、ストレージアカウントは世の中の一意な名前じゃないとデプロイに失敗しそうな気がします。ので、ありきたりな名前としないほうがよさそうです。

できあがり

ぽちぽちしてポータルから作ったものと違って、ロードバランサーも用意されていますね。PublicIPはネットワークインターフェイスには関連付いてなく、ロードバランサーについています。ネットワークインターフェイスはVNETに所属するのみですね。ネットワークセキュリティグループは、TCP/22(SSH)のみ開けているようです。

このテンプレートの説明

https://github.com/Azure/azure-quickstart-templates/tree/master/ubuntu-desktop

ということで、デスクトップにつなぐためには、SSHでポート転送を行いなさいよとのことです。リンク先ではPuTTYの設定になっています。以下はTeraTermの設定追加です。(設定を保存して、つなぎ直す必要があるようです。)

あとは、VNCで接続!!

接続先は「localhost:5901 」パスワードは「password」ですね。

ちょっと手順はありますが、認証もSSHを経由する必要があることで生のVNC通信より暗号化されている分ちょっと安心。

それでは!

 

ポータル、Powershellを使って、AzureResourceManagerのVMテンプレートイメージを作る

Azure CLIを使ったリソース マネージャーのテンプレートとして使用する Linux 仮想マシンをキャプチャする方法

これをPowershellでいろいろ省きながらやってみます。

VMはすでにあるものとして仮定するため、作成の手順は割愛します。

VisualStudioでSDKを入れてる人はいらないはずです。何もない人は、Powershellのコマンドラインツールを入れてください。

まずはログインです。

PS > Login-AzureRmAccount

ここでダイアログが出てくるので、サブスクリプションのあるアカウントでログインします。大抵はMsアカウントのはずです。

複数のサブスクリプションを持ってる人は以下で、サブスクリプションを選択する必要があります。

Get-AzureRmSubscriptionを使って、サブスクリプションの一覧を取得

PS >Get-AzureRmSubscription

SubscriptionName : [サブスクリプション名]
SubscriptionId   : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId         : 99999999-9999-9999-9999-1234567890123
SubscriptionName : [サブスクリプション名]
SubscriptionId   : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId         : 99999999-9999-9999-9999-1234567890123
サブスクリプションを以下で選択
PS > Set-AzureRmContext -SubscriptionName [サブスクリプション名]
Environment           : AzureCloud
Account               : vnext-vnext@example.com
TenantId              : 99999999-9999-9999-9999-1234567890123
SubscriptionId        : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
CurrentStorageAccount :
イメージを一般化(事前にVMは停止させておきましょう)
PS > Set-AzureRmVM -Generalized -Name [仮想マシン名] -ResourceGroupName [リソースグループ名]
RequestId                            IsSuccessStatusCode StatusCode ReasonPhrase
———                            ——————- ———- ————
99999999-9999-9999-9999-1234567890123               True         OK OK
イメージをテンプレート化する
PS > Save-AzureRmVMImage -DestinationContainerName [Blobコンテナ名] -Name [仮想マシン名] -ResourceGroupName [リソースグループ名] -VHDNamePrefix [VHD名のプリフィクス]
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
——— ——————- ———- ————
True         OK OK
ここで、VNET整備してますが、ポータルでもできることなので、ポータルでやってしまってもやってしまっていいような気がします。割愛。
Blobが増えてるので、JSONファイルをダウンロードしてクリップボードにコピー
Marketplaceからテンプレートのデプロイを検索
ダウンロードしたJSONを貼り付けます。
あとは、パラメータを設定、リソースグループを設定して、作成!
というざっくりな流れです!
networkInterfaceIdは「/subscriptions/[サブスクリプションID]/resourceGroups/backup-test/providers/Microsoft.Network/networkInterfaces/[ネットワークインターフェイス名]」という形式なのに注意しましょう。

Azure 仮想マシン(クラシック)のスナップショットから新たな仮想マシン(クラシック)

今日は、ちょっとした相談を受けたのでチャレンジです。VMの状態をそのまま保存して、必要なときに戻したい!という要件でした。Azure Resource Managerで管理される仮想マシンのバックアップを試してみようと思って・・・まずは、公式ドキュメントをみながら・・・。と思って探していたのだけれども。どうもARMでLinuxバックアップっていうのはどうもなさそう。このバックアップも少し意味が違う。スナップショットをポータルからぽちっといける方法もなさそうなので、現状そうした用途で使うなら、クラシックのほうがよさそうってことで、変更!ごめんなさい。本当にごめんなさい。

仮想マシン(クラシック)

まずは、既存のVMからキャプチャこれで、スナップショットを作れます。ここに「仮想マシン上で、「waagent-deprovision」を実行しました。は嘘をつかないようにします。(これをやっておくとデプロイ用のテンプレートイメージを作ったりすることができたりするのですが、割愛。)

キャプチャ

 

無事に成功したらVMイメージ(クラシック)で参照することができます。ここでVMの作成とすると、キャプチャしたイメージを仮想マシンとして動かすことができます。ただし、この場合、ネットワークで連携するものである場合は、元のマシンと同時に動かすと思わぬ挙動をするかもしれません。その場合、以前のVMを停止または削除してから、起動したほうが間違いが起きなくてすむでしょう。(ADは一度動いてしまうとエラーになりつづけたりする。火遊び!)

キャプチャからVMの作成

 

いっぱい作って、いっぱい遊んで、いっぱい壊したい私には最高な機能でした。というわけで、現状でクラシックにはクラシックの魅力があった!という話です。そして、実は新ポータルにもちゃんとこのUIが実装されていたことに気付いてしまったのは秘密です!いろいろ聞いてもらえることで、私自身も勉強になります。どうぞ、これからもよろしくお願いいたします。

(ARMのほうでも、同じことできないかポータル以外の方法を探ってます)

それでは!

VNet-to-VNet – Azure Resource Manager(ARM)

今日はわりとまじめにAzureネタです!BlackJumboDogは、テストを地道に消化しているところなので、GitHub歴史が刻まれているくらいしか進捗がありません。そのうち、アセンブリを読み込む方式から、RuntimeServiceというものに切り替えるに至った経緯を記しておこうと思っています。

本題です。昨日のデプロイした内容を、ざっくり図にしてみました。テンプレートにVirtualMachineは存在していませんが、イメージのために載せています。下線があるものが、テンプレートに含まれるリソースです。(間違っていたらごめんなさい。ご指摘いただければ幸いです。)

<クラシック(ASM)との違い>

クラシックと呼ばれている仮想ネットワークでは、もう少し粒度は荒いものでした。上記ですと、PublicIPというリソースは存在していませんでした。仮想ネットワークゲートウェイとセットで自動的に割り振られていました。また、VNet-to-VNetをするためには、Powershellなどを使う必要がありました。しかし、新しいARMではJSON形式のテンプレートに含めることができるようになっています。また、PublicIPaddressは仮想マシンに対してもネットワークインターフェイスを介して割り当てるリソースとして扱いますが、ここでは割愛します。

全体として細かいリソースに分かれたことで、より柔軟に構成できるようになった。そして、その細かくなってしまった分、複雑になるデプロイはテンプレートとしてJSON形式で設計図のように残しておくことができて、いつでもデプロイすることができることで補っている、というのが私個人の感想です。ただ…この違いは、発想の変化があるような気もしますので本来比較するようなことではないのかもしれません。

といったところで、終わっておきます。また今後デプロイするものを追加していこうと思っていますので、よろしくお願いいたします。

それでは

 

デプロイボタンを試してみた

まずは、ARMのJSONファイルを用意しました。

http://vnext-y-blog.azureedge.net/blog/azuredeploy.json

以下その流れ

  1. 東日本の仮想ネットワークを作成する(10.0.0.0/16)
  2. 西日本の仮想ネットワークを作成する(10.1.0.0/16)
  3. 東日本のパブリックIPアドレスを作成する
  4. 西日本のパブリックIPアドレスを作成する
  5. 東日本の仮想ネットワークゲートウェイを作成する
  6. 西日本の仮想ネットワークゲートウェイを作成する
  7. 東日本から西日本へのVnetToVnetを作成する(事前共有キー)
  8. 西日本から東日本へのVnetToVnetを作成する(事前共有キー)
というもので、東日本と西日本それぞれの仮想ネットワークとそれをつなぐものをほぼ自動的に作ってくれます。が、仮想ネットワークゲートウェイの作成は30分以上はかかるので、気長にどうぞ!(というのが公式ドキュメントにもあったり)上記のJSONは、東日本、西日本に限定して、IPアドレスとかも固定化したものです。事前共有キーは、固定だと問題あるので入力してもらうようにしています。これで、何かしらの知識やらきっかけになれば幸いです。

手順 6 – ゲートウェイを作成する

この手順では、VNet の仮想ネットワーク ゲートウェイを作成します。VNet 間構成では、RouteBased VpnType が必要です。ゲートウェイの作成には時間がかかるため、気長に取り組んでください。

次にボタン。

先のJSONがあるURLをエンコードしています。

http%3a%2f%2fvnext%2dy%2dblog%2eazureedge%2enet%2fblog%2fazuredeploy%2ejson

これを、Azureが提供するサービスの「テンプレートのデプロイ」というやつに受け渡します。「 https://portal.azure.com/#create/Microsoft.Template/uri/」そうすると、こんな感じに!

また、このボタンの利用は自己責任でお願いしますー。元ネタはこれとか、これです。Azureのサブスクリプションがないと、利用できません。気になる方は、無料評価版をどうぞ。

それでは!