kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

VSTSでAzure Resouce Managerでのデプロイ事前準備と注意点

Visual Studio Team Servicesの新しいビルド定義では、ARM Resource Managerを使用したデプロイタスクを作ることができます。

f:id:kkamegawa:20160126221351p:plain

もちろんデプロイ前にAzureのサブスクリプションと関連付ける必要があるのですが、普通なら https://(account).visualstudio.com/DefaultCollection/(Project)/admin/services を開いてCertificate Basedを選べばいいのですが、ARMの場合はService Principal Authenticationでなくてはならないようです。ちなみにCertificate Basedを選んで実行すると、こんなエラーが出て失敗します。

Certificate based authentication only works with the 'Select Resource Group' action. Please select an Azure subscription with either Credential or SPN based authentication.

SPNで入力する情報わからない!という場合、ちゃんとスクリプトがあります。

blogs.msdn.com

ただ、このスクリプト試してみたのですが、バグやら、記述が古かったり(Azure PowerShell 1.0に対応していない)、仕様上の漏れがあったりして使えなかったので、少し改変してみました。

Generate Azure SPN script, based on http://blogs.m ...

SPNを使う場合、サブスクリプション名や現在のログオンアカウント名でSPN用のURIを作るのですが、当然サブスクリプション名に空白があったり、ユーザ名がANK以外であったりするとよくはないので、その辺をチェック&空白は _ に変更するなどの対処をしています。

引数はAzureのサブスクリプション名を正確に入れて下さい(MSDN for Visual Studio hogeとかそんな文字列)。もしもサブスクリプション名が日本語だった場合、ソースのサブスクリプション名を取得しているところを適当なANK文字列にしてみてください。

Windowsのログオンユーザ名がANK以外だった場合も同様です。こちらはPowerShellスクリプト内でチェックしているので、エラーになって止まるはずです。

最後まで実行すると文字列が出るはずなので、その文字列をAzureサブスクリプションの情報として入力してください。これでいけるはずです…たぶん。

で、最後に。現時点(2016/1/26)において、VSTSのサーバ内にあるビルドエージェント(Hostedを選択した場合)のAzure PowerShellはまだ0.9.8なので、Switch-AzureModeでの切り替えが必要です。

しかし、Azure SDK 2.8.2でインストールされるVisual StudioのResource Managerのテンプレートはすでに1.0仕様になっています。なので、Azure PowerShell 1.0以降がインストールされている環境にビルドエージェントをインストールして、Hostedを使わないようにしましょう。たぶんそう遠くない時期に置換されるとは思いますが。

DevOpsハッカソンでARM使ったデプロイをされるチームが一つや二つはあると思います。その時にでも試してみてください。

whereコマンドと同じPowerShell関数

PowerShellでスクリプトを作っていたところ、環境変数PATHの中にあるコマンドを探してくれるwhereコマンドと同じコマンドレットがなさそうだったので、さくっと作ってみました。

whereコマンドでファイルを探す − @IT

It is same as ms-dos command where.exe

Javaがインストールされているかどうか調べたかったんですよね。インストールされていなければ、chocolateyなどでインストールする、という方法になります。

Windows 7/8.1/Server 2012/Server 2012 R2用PowerShell v5リリース!

これはPowerShell Advent Calendar 12/19分の記事です。

atnd.org

正直ネタどうしようかなぁと思っていたら、ちょうどいいところにWindows 7/8.1/Windows Server 2012/2012 R2用PowerShell v5(正確にはWindows Management Framework 5.0の一部)がリリースされたので、紹介記事にしたいと思います(ごめんなさいごめんなさい)。

Windows Management Framework (WMF) 5.0 RTM is now available

PowerShell 5.0でどんな新機能があるかというのはぎたぱそ氏の素晴らしい記事があるので、どうぞ。これはclassの記事ですが、記事内に他の記事へのリンクもあります。

tech.guitarrapc.com

で、ダウンロード先を見てみると…Englishのみとなっているんですね。しょうがないなぁとおもいつつ、ダウンロードしてAzureの仮想マシンに入れてみました。でも安心してください。入りますよ(Windows Server 2012 R2 日本語版)。

f:id:kkamegawa:20151219083926p:plain

EULAも日本語表記されます。

前後しますが、ダウンロードセンターからダウンロードするとこんな風に対象OSごとにバイナリが分かれています。私はWindows Server 2012 R2のみをダウンロード。余談ですが、Windows 10でダウンロードするとWindows 7/8.1用は表示されませんでした。

f:id:kkamegawa:20151219083925p:plain

インストールするとタスクバーのピン留めアイコンも変わります。これはAzureの仮想マシンですが、なぜか手元のWindows Server 2012 R2日本語版に入れるとタスクバーの画像は変わっていませんでした。スタート画面では変わっていたので、キャッシュか何かでしょう。

f:id:kkamegawa:20151219083922p:plain

これは完全にOSインストール直後のPowerShellですが、コマンドレットは1411個登録されています。

f:id:kkamegawa:20151219083923p:plain

PowerShellのMajorも5になり、BuildはWindows 10 TH2相当の10586ですね。

f:id:kkamegawa:20151219083924p:plain

余談ですが、私のWindows 10(Azure SDKとかも入っています)はこれだけ。例によってOS固有のコマンドレットはPowerShell 5.0では入らないので、気を付けてください。でも、Zipファイルを扱うコマンドレット(Compress-ArchiveやExpand-Archive)は入っているので、これだけでも更新する価値はありますね!

Compress-Archive

ただ、標準コマンドレットにはエンコーディング指定するところがないようなので、おそらく日本語のファイルはUTF-8でエンコードされるのでしょう。Windows 7/Windows Server 2008 R2の人はKB2704299のパッチを当てておきましょう。Windows 8以降の人はOSが対応しているので、何もしなくても構いません。

File names are corrupted after you decompress a .zip file in Windows 7 or in Windows Server 2008 R2

ではちょっとPowerShell 5.0の新機能class構文を試してみます。

f:id:kkamegawa:20151219083928p:plain

Happy PowerShell!

…ただ、ここまでのすくりーショットを見て気づかれたと思いますが、Windows 10のPowerShell 5.0と異なり、シンタックスハイライトはないようです(どこかに設定ないのかな…)。引き続きPSReadLineのお世話になるのがいいでしょうか。

blogs.technet.com

…ということころまで書いてぎたぱそ氏が素晴らしいエントリを書きました…もうこれいらないくらいな(^^;。

tech.guitarrapc.com

やっぱりExchange 2010/2013,SharePoint 2010/2013,SCVMM 2012入れている環境には対応しないんですね。この辺しょうがないんですが、うーん…。

PowerShellでUWPハンズオンの環境が整っているかチェックする

この記事はPowerShell Advent Calendarの12/2分の記事です。

atnd.org

UWPのハンズオンが本格的に開催されるようですね。

MSDN Blogs

しかし、このハンズオンではVisual Studio 2015だけではなく、いろいろ周辺ツールをインストールしておく必要があるそうです。当日にやると、まず間違いなくインストールだけで終わってしまうので、事前に入れておきましょう…といっても、自分の環境が満たしているかわからないですよね。

ということで、環境が満たされているかチェックするPowerShellスクリプトを用意しました。足りないものはブラウザを起動しているので、そこからダウンロードしてみてください。

Check environment for UWP's Hands-on