Azure Update (2015.12.10)

いろいろ。

Asia MVP/RD Meetup 2015

というのがありました。

image

またなんとも言えない経験値をゲットしました… Microsoftさん主催公式イベントで「俺の(2次元)嫁」発言はこれで2度目ですね(白目

もうちょっと英語上達したいデス

Azure Update (2015.11.30)

つらつらと。

PowerApps!

Convergence 2015 EMEA というイベントの1日目キーノートで唐突に発表されました。

続きを読む

きたあず第9回勉強会でしゃべってきました

JAZUG 札幌支部第9回勉強会でしゃべってきました。

当日の資料はこちら。

ベースはふくあずでLTした内容になってます。ちょっとでも学習のたしになれば幸いです。ぐだぐだトークですみません。。
あんまり気負わずに触れてもらえればいいかなと思います。

※なお当日LTもしましたが、内容が世界のやまさ推しというあまりにもひどい内容だったため割愛致します(

他の方の資料はこちら(見つけられた分だけ)。

ふりかえり

札幌5年ぶりぐらいです。その前に行ったのは友人の結婚式でした(10年以上前な予感…)。※その友人は最近お子さんが生まれたと同僚の方に聞きましたw めでたい!5年前のCLR/Hで会ったと思う人たちとも再会できましたし、伝説(?)のえんぷら師匠との再会(?)も果たせました。
ひさしぶりに札幌に行ったらSUICA使えるようになってたし、前回とはまた違った感じでよかったです。そういえば前回のときは雪まつりでしたね…盛大に転んでまゆき先生に助けられたのもいい思い出です。これからもまゆき先生について行きたいと思います。

めんたろ社長はなんか久しぶり感は全然なかったのですが、横でがりっちや世界のやまさが高度な情報戦を行ってるのをしり目に超まじめに技術な話とか会社(経営)な話とか人生について語り合ったりしてました(めずらしい)

各地のJAZUGなイベントにちょくちょく顔出してましたが、やっと札幌にも来れました。あと行ったことないのは仙台かな~?。ほかの地域みたいにふらっと参加したいです。

Azure Subscriptionに支払情報を追加する

MSDN Subscription特典のAzureなどを使ってるとAzure Subscriptionに支払情報が設定されていない場合があります。
この場合、Marketplaceからの購入時などに支払情報がないといったエラーが発生したりします。

statusMessage:{"error":{"code":"ResourcePurchaseValidationFailed","message":"User failed validation to purchase resources. Error message: '{\"ErrorDescription\":\"[\\\"We could not find a credit card on file for your azure subscription. Please make sure your azure subscription has a credit card.\\\"]\",\"CultureInvariantErrorCode\":\"BadRequest\",\"ActivityId\":\"\"}'"}}

簡単に解決するにはクレジットカードの情報を登録すればいいのですが、これが面倒くさいというかわかりにくかったのでメモ。

https://account.windowsazure.com にアクセスしてサブスクリプション→対象のサブスクリプションを選択します。
「使用制限の削除」を選択し、表示されるダイアログの「はい、使用制限を削除します」を選択して支払方法を追加(または変更)します。

image

追加できたら実際に使用制限を削除する必要はありません。キャンセルしましょう。
※使用制限を削除された状態=支払方法が設定された状態なので上述のエラーは発生しないでしょう。

クレカの有効期限切れの場合などもここから支払方法を変更できそうですね。というかメニューがわかりにくい。

Azure Resource ManagerでMarketplaceを使う

Azure Resource Managerのテンプレート集を使うとVMv2などの構成を簡単(?)に行うことができます。
ただ見てるとMarketplaceに公開されてるカスタムVMイメージなどを使ったテンプレートがなさげです。

こんな感じで普通にやるとエラーになるわけです

Marketplaceの場合も通常の場合もOSImageにはパブリッシャー、オファー、SKU、バージョンの指定が必要なのですがMarketplaceの場合は追加の課金が発生する可能性もあり、個別にPlanも指定する必要があります。

※ オファーやSKUなどは Get-AzureRmVMImageOffer などを使って取得すればいいでしょう

Get-AzureRmVMImageSku

コマンド パイプライン位置 1 のコマンドレット Get-AzureRmVMImageSku
次のパラメーターに値を指定してください:
Location: Japan West
PublisherName: miracl_linux
Offer: asianux-server-4-sp4

Skus          Offer                PublisherName Location  Id
----          -----                ------------- --------  --
axs4sp4licazu asianux-server-4-sp4 miracl_linux  japanwest /Subscriptions/5ffe5ad0-6dfc-4e3e-b44e-f4297c930546/Pro...

具体的にはVirtual Machineのリソースに以下のようにplanも追加してあげます。

    {
      "apiVersion": "2015-06-15",
      "type": "Microsoft.Compute/virtualMachines",
      "name": "[variables('vmName')]",
      "location": "[variables('location')]",
      "plan": {
        "name": "axs4sp4licazu",
        "publisher": "miracl_linux",
        "product": "asianux-server-4-sp4"
      },
      "dependsOn": [
        "[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]",
        "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[variables('vmSize')]"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "[variables('imagePublisher')]",
            "offer": "[variables('imageOffer')]",
            "sku": "[parameters('ubuntuOSVersion')]",
            "version": "latest"
          },
          "osDisk": {
            "name": "[variables('OSDiskName')]",
            "vhd": {
              "uri": "[concat('http://',parameters('newStorageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]"
            },
            "caching": "ReadWrite",
            "createOption": "FromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
            }
          ]
        }
      }
    }

publisher はそのままpublisherを、nameにはskuを、productにはofferに入れる値を入れておけばいいかと。(厳密には違うかもしれませんが)
※ 確実に知りたい場合はPreviewポータル上で該当のVirtual Machineを展開後、ARMExplorerなどで見るといいかもしれません。

これでエラーは回避して問題なくデプロイできます。

Tips

意外とハマるかもしれませんが、REST APIやAzure PowerShell/CLIでMarketplaceを利用する場合、事前に使用許諾を了承しておく必要があります。

arm

Previewポータル上でMarketplaceから対象のものを開き、一番下にあるリンク(Want to deploy programmatically?)をクリックし、対象サブスクリプションをEnableにしておきます。※当然追加の料金が発生する場合があるので注意が必要です。

またデプロイに成功した後、購入した旨のメールが届きます。(料金が発生しなかったとしても)
image