Azure ストレージ アカウントを作成するときにちょっとハマった
Windows Azure で Azure ストレージを利用する場合、ストレージ アカウントを作成する必要がありますが、Windows Azure PowerShell も公開されていることですし、Web 上のポータル サイトで GUI をポチポチせずとも常に起動しっぱなしの PowerShell でサッと作ってしまおうと思うわけです。こんな風に。
PS > New-AzureStorageAccount -StorageAccountName "azureStorage1" -Label "Storage Account for SQL" -Location "North Central US"
すると、こんなエラーが出ます。
New-AzureStorageAccount : 指定された引数は、有効な値の範囲内にありません。
パラメーター名: parameters.ServiceName
発生場所 行:1 文字:1
+ New-AzureStorageAccount `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [New-AzureStorageAccount], ArgumentOutOfRangeException
+ FullyQualifiedErrorId : System.ArgumentOutOfRangeException,Microsoft.WindowsAzure.Commands.ServiceManagement.Storage
Services.NewAzureStorageAccountCommand
最初は有効な値の範囲内とか何事かと思ったのですが、ちゃんと New-AzureStorageAccount
に関する公式サイトと Windows Azure の Web 上の GUI、そして PowerShell の Get-Help New-AzureStorageAccount -Detailed
には書いてあります(-Detailed
パラメーターがない場合はフィールドの文字入力制限について言及されている文章は出てきません)。
フィールドは 3 ~ 24 文字で指定する必要があります。 フィールドに使用できるのは、小文字のアルファベットおよび数字のみです。 (The storage account name (...) must be between 3 and 24 characters in length and use lowercase letters and numbers only. )
なぜこういう制限があるかというとおそらく、サービスのエンドポイントの URL の形式が以下のようになっていて、大文字と記号が使えないからだと思われます。
http://mystorageaccount.*.core.windows.net/*
ともかく、いくら PowerShell が "動詞-名詞" 形式の命名規則で、ストレージ アカウントを新たに作成するなら New
で StorageAccount
な感じかなーあーあったあったーってヘラヘラ使ってると、ときどきこんな落とし穴に…(普通ははまらないですね)。
第1回 PowerShell 勉強会に参加してきた
12月21日に開催された第1回 PowerShell 勉強会に参加してきたのですが、内容は後述のリンクを見てもらうとして、雑感というか。
個人的に PowerShell は登場してから結構年月が経っているにもかかわらず利用者がそれほど多くないという印象を持っていて、だからというわけではないですが PowerShell というカテゴリでの勉強会に魅力を感じて参加してみた結果、想像以上に面白い勉強会だったと思っています。
また、登壇者をはじめとして PowerShell を様々な形で利用している(利用できる)のは公開されているスライドを見れば明らかで、現時点でも PowerShell は非常に強力な言語で今後さらによくなっていくものと思われます(vbs とは対照的に)。
一方で、勉強会の中でWindows PowerShell イン アクションは聖書みたいな話があって、それに異論はないのですが in Action の Second Edition も in Depth も Deep Dive も出版されているにもかかわらず翻訳されていない、v3 に対応している日本語の書籍が @mutaguchi 氏著の【改訂新版】 Windows PowerShell ポケットリファレンスだけ(?)みたいな状況を見るに Windows 系エンジニアは基本的に英語の書籍が読めて翻訳書籍の需要がないか、PowerShell に興味がないかのどっちかで、どちらかというと後者っぽい雰囲気を"ソースは俺"レベルの観測範囲で感じますが実際のところどうなんでしょうか。
懇親会の時にも、PowerShell について日本語でぐぐると結構な確率で @mutaguchi 氏か @guitarrapc_tech 氏の記事が出てくるよねっていう話をちょっとしていたのですが、PowerShell Advent Calendar レベルでほかの人ももっとエントリーを書いて PowerShell のググラビリティをあげていくと、例えばサーバー構成においてスクリーン ショットとセットになったエクセル手順書は必須みたいな世界にさよならできる、みたいないいことがあったりするのかなと PowerShell 推進派としては思ったのでした(最初からそんな世界自体が藁人形だったらいいのですが)。
- 第1回 PowerShell勉強会に参加してきました
- 第一回 PowerShell 勉強会を開催時のセッション資料公開 と舞台裏とか
- 第1回 PowerShell勉強会で「PowerShell Desired State Configuration (DSC) について」というセッションをしました
- 第1回PowerShell勉強会で「C#からPowerShellを使ってみる」でお話しました
- PowerShellにMSBuildLauncherで簡易GUIをつける
- Aws tools for power shellをつかいこなそう
- Power shell で DSL
- 第1回 PowerShell勉強会 #jpposh ツイートまとめ
ところで会場の株式会社グラニにある UFO キャッチャーを試す権利を得た人の中で一人だけマスコットをゲットできなかったのがこちらのあかうんt(ry
PowerShell DSC を実際に動かしてみる
※これは PowerShell Advent Calendar 2013: ATND 14 日目の記事です。
Windows 8.1 および Windows Server 2012 R2 が発表されてからしばらく経ちますが、PowerShell DSC に関する情報や手順があんまり出ていないようですので(公式もまだですよね?)、正式な情報が揃うまでの間でちょっと触ってみようということで簡単な構成を作ってみました。
そもそも PowerShell DSC が何かということについては @guitarrapc_tech 氏がご自身のブログで丁寧に説明されていますので丸投げしてしまいます。
環境を準備する
まず、PSDSC を実行する環境ですが、基本的には IIS が動かせるコンピューターと DSC 適用対象のコンピューターの2台程度があればいいです。もちろんもっと DSC 適用対象コンピューターを用意すると構成情報の大量のコピペが楽しめます。ドメインを構成しているほうがコンピューター間の通信が簡単にできるんじゃないかなとは思いますが、スタンドアロン構成で実施するかどうかはお好みで…。
構成例:
- PSDSCHost001 (DC, DSC: WS2012 R2)
- PSDSCClient001 (WS2012 R2)
DSC の管理サーバー(?)を構成する
では早速 PSDSCHost001 上で PowerShell を起動し、Windows PowerShell Desired State Configuration Service
機能をインストールします。GUI でもなんでも結構ですが、せっかくなので PowerShell で。この機能、のちに適切な日本語に変更されたりするんでしょうか…。MCP の翻yいえなんでもありません。
PS > Install-WindowsFeature DSC-Service
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Windows PowerShell Desired State Configur...
上のコマンドレットを実行して成功していることを確認します。関連する機能として Web-Server
の一部の機能もインストールされます。今回は使いませんすみませんすみません。続いて Desired State Configuration ファイルを作ります。こんな感じ。
PS > New-Item c:\PSDSC -ItemType Directory
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2013/12/13 20:19 PSDSC
PS > New-Item c:\PSDSC\IISConfig.ps1 -ItemType File
Directory: C:\PSDSC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2013/12/13 20:19 0 iisconfig.ps1
で、作成した IISConfig.ps1
ファイルを開いて以下の内容を書き込んで保存、実行します。
Configuration IISConfiguration
{
Node PSDSCClient001
{
WindowsFeature IIS
{
Ensure = "Present"
Name = "Web-Server"
}
WindowsFeature ASP
{
Ensure = "Present"
Name = "Web-Asp-Net45"
}
}
}
IISConfiguration
実行すると PowerShell のカレント ディレクトリ(Get-Location
で表示されるディレクトリ)に MOF ファイルが作成されます。
PS > C:\PSDSC\iisconfig.ps1
Directory: C:\PSDSC\WebSiteConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2013/12/13 20:54 1732 PSDSCClient001.mof
これで準備は完了です。
DSC でクライアントに IIS を展開する
まずは DSC 適用前の PSDSCCllient001 に PowerShell で接続して機能のインストール状態を確認します。Get-Credential
のクレデンシャル認証は PSDSCClient001 に対して十分な権限があれば何でもいいです(Domain Admins とかw)。
PS > Enter-PSSession -ComputerName PSDSCClient001 -Credential $(Get-Credential)
問題なく接続できれば、プロンプトの部分が [PSDSCClient001]: PS >
みたいな形になりますので Get-WindowsFeature
を実行します。
[PSDSCClient001]: PS > Get-WindowsFeature -Name Web*
Display Name Name Install State
------------ ---- -------------
[ ] Web サーバー (IIS) Web-Server Available
[ ] Web サーバー Web-WebServer Available
[ ] HTTP 共通機能 Web-Common-Http Available
[ ] HTTP エラー Web-Http-Errors Available
[ ] ディレクトリの参照 Web-Dir-Browsing Available
[ ] 既定のドキュメント Web-Default-Doc Available
[ ] 静的なコンテンツ Web-Static-Content Available
[ ] HTTP リダイレクト Web-Http-Redirect Available
[ ] WebDAV 発行 Web-DAV-Publishing Available
[ ] .NET 拡張機能 4.5 Web-Net-Ext45 Available
[ ] Application Initialization Web-AppInit Available
[ ] ASP Web-ASP Available
[ ] ASP.NET 3.5 Web-Asp-Net Available
[ ] ASP.NET 4.5 Web-Asp-Net45 Available
※途中割愛してます
こんな感じでまだ何もインストールされていないことを確認したら PSSession は Exit しておきます。では DSC を実行してみましょう。
Start-DscConfiguration -ComputerName PSDSCClient001 -Path IISConfiguration -Wait -Verbose -Credential $(Get-Credential)
するとこんな感じの結果が表示されます。
ここで、もう一度 PowerShell から先ほどと同じコマンドレットを実行して PSDSCClient001 に接続し、機能のインストール状況を確認してみると…
[PSDSCClient001]: PS > Get-WindowsFeature -Name web*
Display Name Name Install State
------------ ---- -------------
[X] Web サーバー (IIS) Web-Server Installed
[X] Web サーバー Web-WebServer Installed
[X] HTTP 共通機能 Web-Common-Http Installed
[X] HTTP エラー Web-Http-Errors Installed
[X] ディレクトリの参照 Web-Dir-Browsing Installed
[X] 既定のドキュメント Web-Default-Doc Installed
[X] 静的なコンテンツ Web-Static-Content Installed
[ ] HTTP リダイレクト Web-Http-Redirect Available
[ ] WebDAV 発行 Web-DAV-Publishing Available
[X] .NET 拡張機能 4.5 Web-Net-Ext45 Installed
[ ] Application Initialization Web-AppInit Available
[ ] ASP Web-ASP Available
[ ] ASP.NET 3.5 Web-Asp-Net Available
[X] ASP.NET 4.5 Web-Asp-Net45 Installed
※途中割愛してます
インストールされてますね!ということで本当はウェブサイトを作ってコンテンツも一緒に DSC で構成したほうがデモっぽい感じですが、そういうのはブログよりも動画で見るほうがおおーっ!ってなるので Channel 9 で公開されている Teched 2013 の Desired State Configuration in Windows Server 2012 R2 PowerShell でカップケーキのウェブサイトが増殖する様子を見てもらえればと思います。
追記
そういえばせっかく Desired State Configuration って言っているのに構成済みの環境に再度 DSC を適用したときにどんな振る舞いをするのかについても結果を書いておいた方がいいかなと思いますので、実行したら追記しようと思います。環境もうつぶしちゃった (・ω<)
あと、全然本文とは関係ないですがブロガーなら誰しも、ふと書き続けていたブログをぶち壊したくなる衝動に駆られることがあるかと思いますが、多分に漏れず私もその衝動のままにこれまで使っていたブログを消去し、ここからまた始めることにしました。
ということでこれが最新の記事となります()