Paas上のDevOps というものを受講してみて

とあるきっかけからチャレンジ

Welcome to Microsoft’s Azure Paas上のDevOps!

結果からいうと、合格点70%に対して70%!
で、問題の翻訳の質があんまりよくないのもあったけど、
何を聞かれているのか全くわからないのもあった。。。(多分私のスキル不足)

ほかに受講できるもの「azure-skills」

とはいえ、コースの内容は面白いものでした。

5つのモジュールで構成されており、
最初のモジュールは、DevOpsとは、なぜ?といったような考え方から入り、
自動化するアプローチ、どうしていったらいいかとか。

そして中盤からツールの使い方へフォーカスして、
コードを用いた、ハンズオンまで用意されていました。
このとき、Azureのサブスクリプションや、Visual Studio 2015 が必要になりました。
コースや個人差があるとは思いますが、
全体で12時間以上かかっていたような気がします。補足資料もじっくり読むともっともっとかかりそう。

かかるということはそれだけ多くの内容を知ることができるので、
これはVirtual Academyとは比にならないくらい。

おすすめしたい!と思いますー

ハンズオン

一部内容が古いものがあって、今のAzureに当てはめたときに・・・という補完が必要でした。またビルドエラーになるものもあるので、そこを問題ないようにもっていくというのも一つの醍醐味かなぁと。コードはVS2015のASP.NET Coreであるために、xprojが採用されてます。これは既に古い存在なので、もしかしたら時間とともに動かなくなっていくかも…

Bad Request

何日にも分けてやってたりすると、途中Bad Requestが出るので、
プライベートモードにしたブラウザを使うか、クッキーや履歴を消してログインしなおすと大丈夫でした。
(ヘッダーサイズが大きすぎるぞと怒られるらしい)

認定書?

受講した人に聞くところ、私は最終試験70%だったために、特に何もなく終わったのですが、70%以上の成績をおさめると認定書?みたいなものがもらえるようです。
知識・経験不足…がんばろう

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もなんかできそうだなぁとか妄想してはいます。テンプレートを眺めながら何かわくわくしている反面、時間が足りないと感じる今日でした。

それでは!

 

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/[ネットワークインターフェイス名]」という形式なのに注意しましょう。

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のサブスクリプションがないと、利用できません。気になる方は、無料評価版をどうぞ。

それでは!