powershell de azure
TRANSCRIPT
PowerShell De Azureコマンドラインで操作しよう
TECHNO OFFICER Atsushi Kojima
あるときはさすらいのハードコアお父さん。
あるときは釣り師。
あるときはゴッドハンド整体師(虚)。
たまにクラウドコンサルやってます。
Agenda1. PowerShell アレコレ2. セットアップ方法3. Azure で遊ぶ
PowerShellアレコレ
PowerShellアレコレ
PowerShell の位置づけ• MS-DOS時代から使われてきたコマンドスクリプト。豊富なコマンド群があり現在でも実用性が高く多くのシステムで利用されている。
バッチファイル( .bat)
• VBのスクリプト版。と言っても Visualではない。 VBライクに使えるので気軽に利用できる。 VBAはまた別。VBScript( .vbs)
• JavaScriptをマイクロソフト独自の仕様によって拡張することで汎用性を増した。最近流行っている .js的なスクリプトではない。Jscript( .js)
• 今回のメインディッシュ。 .NET Frameworkが利用できることからサーバー管理だけでなくアプリケーションまで動かせる。また多くの MS製品が PowerShell用のコマンドレットを持っているので複雑なスクリプトも実装が可能。
PowerShell( .ps1)
実行環境
PowerShell スクリプト
PowerShell エンジンCOM .NET Framework
PowerShell バージョンと対応 OSOS 1.0 2.0 3.0
Windows Server 2003 ○SP1 ○SP2 ×
Windows Server 2003 R2 ○SP1 ○SP2 ×
Windows Server 2008 ○SP1 ○SP2
Windows Server 2008 R2 ◎ ○SP1
Windows Server 2012 ◎
Windows XP ○SP2 ○SP3 ×
Windows Vista ○ ○SP1 ×
Windows 7 ◎ ○SP1
Windows 8 ◎
なにはともあれ使ってみる。
見た目はコマンドプロンプトと似てる
覚えておきたいコマンドGet-Help :ヘルプ表示Set-ExecutionPolicy Unrestricted :スクリプト実行時のすべての制約を取り除くGet-ExecutionPolicy :実行ポリシーの確認Get-Service :すべてのサービスリスト表示ConvertTo-HTML :出力結果をHTMLへ変換するExport-CSV :出力結果を CSVにするSelect-Object :出力時にプロパティを指定するGet-EventLog :イベントログを調べるGet-Process :すべてのプロセスリスト表示Stop-Process :プロセスの終了
GUI で快適操作コマンドラインで PowerShell を利用する場合、デバッグやコードエディタがないため非常に効率が悪いです。そこでコードエディタ、実行環境、デバッグ環境が統合された PowerShell ISE を使うことをお勧めします。
コード保管やデバッグ、ステップ実行などが可能。また、マウスオーバーでヘルプ表示されます。
セットアップ方法
セットアップ方法
PowerShell 実行環境のセットアップ事前準備・ Web Platform Installer ( WebPI )※ 基本的には WebPI からすべてインストール可能。
Windows PowerShell 3.0 (と思ったけど、 4.0 が出てた!)Windows Azure PowerShell
Windows Azure SDK は Windows Azure ポータルサイトからでもダウンロード可能。http://www.windowsazure.com/ja-jp/downloads/
Azure 用セットアップPS C:\> Get-Module –ListAvailable 提供されている Azure用モジュールを確認するModuleType Name ExportedCommands---------- ---- ----------------Binary Azure {Disable-AzureServiceProjectRemoteDesktop, Enable-AzureMemcacheRole, ...
PS C:\> Import-Module Azure Azure用モジュールをインポートするPS C:\> Get-AzurePublishSettingsFile 発行プロファイルをダウンロードする
ブラウザから発行プロファイルのダウンロードできます。適当な場所に保存してください。
Azure 用セットアップPS C:\> Import-AzurePublishSettingsFile "C:\Users\user\Desktop\7-11-2013-credentials.publishsettings“ダウンロードした発行プロファイルをインポートする
PS C:\> Get-AzureSubscription Azureが操作できるか確認する
PS C:\> Select-AzureSubscription 使用するサブスクリプション名
サブスクリプション情報が表示されれば問題なし。
Azureで遊ぶ
Azureで遊ぶ
WEB サイトの新規作成をやってみるPS C:\> New-AzureWebsite fukuazu -Location "East Asia"
NumberOfWorkers : 1DefaultDocuments : {Default.htm, Default.html, Default.asp, index.htm...}NetFrameworkVersion : v4.0PhpVersion : 5.3RequestTracingEnabled : FalseHttpLoggingEnabled : FalseDetailedErrorLoggingEnabled : FalsePublishingUsername : $fukuazuPublishingPassword : eutex71HuWxd4sj7Lu13n09Cuw3XiKSlkD67vl6w1l5csFkq45uKx0ns8xlDAppSettings : {}Metadata : {}ConnectionStrings : {}HandlerMappings : Name : fukuazuState : HostNames : {fukuazu.azurewebsites.net}WebSpace : eastasiawebspaceSelfLink : RepositorySiteName : Owner : UsageState : NormalEnabled : AdminEnabled : EnabledHostNames : SiteProperties : AvailabilityState : NormalSSLCertificates : SiteMode : HostNameSslStates : AzureDriveTraceEnabled : AzureDriveTraceLevel : ErrorAzureTableTraceEnabled : AzureTableTraceLevel : Error
WEB サイトのログをリアルタイムで見るPS C:\> Get-AzureWebsiteLog -tail –Name fukuazu
tail -f みたいな感じで使えます。
EndPoint を追加してみる
PS C:\> $vm = Get-AzureVM -ServiceName jazvm01 -Name jazvm01PS C:\> $acl = New-AzureAclConfigPS C:\> Set-AzureAclConfig -AddRule Permit -RemoteSubnet "1.115.192.184/32" -Order 1 -ACL $acl -Description "SSH“RuleId : 0Order : 1Action : PermitRemoteSubnet : 1.115.192.184/32Description : SSH
PS C:\> $vm | Set-AzureEndpoint -Name SSH -Protocol tcp -LocalPort 22 -PublicPort 22 -ACL $acl | Update-AzureVMOperationDescription OperationId OperationStatus -------------------- ----------- --------------- Update-AzureVM 99210143-e36c-4838-bc10-01837b5292a8 Succeeded
EndPoint とは仮想マシンが外部からの接続を受け入れるためのポートフォワーディングで、公開ポートと内部ポートを接続することでポート間の転送を実現します。ただ、実際は IP アドレスベースでの細かいアクセス制御をしたいわけで、それは今のところ Management ポータルからできません。実現するには ACL と呼ばれる制御リストを作成し、それを EndPoint に読み込ませるようにします。
以下は、 jazvm01 という仮想マシンに、 1.115.192.184/32 からの SSH を許可するという設定です。
PS C:\> Get-AzureEndpoint -VM $vmLBSetName : LocalPort : 22Name : SSHPort : 22Protocol : tcpVip : 168.63.200.224ProbePath : ProbePort : 0ProbeProtocol : ProbeIntervalInSeconds : ProbeTimeoutInSeconds : EnableDirectServerReturn : Acl : {SSH}
PS C:\> Get-AzureAclConfig -VM $vm -EndpointName SSHRuleId : 0Order : 1Action : PermitRemoteSubnet : 1.115.192.184/32Description : SSH
まとめPowerShell を利用することで、 Azure 操作を自動化することが可能です。また、 EndPoint 設定のように Management ポータルから設定できないものも、 PowerShell からなら設定が可能な場合があります。(その逆もありけどw)
ぜひ PowerShell での Azure 操作やってみてください。