• Save
Lt 111217
Upcoming SlideShare
Loading in...5
×
 

Lt 111217

on

  • 477 views

2011/12/17 ハイパーカソウ化にておこった LT

2011/12/17 ハイパーカソウ化にておこった LT
[アレっぽく Hyper-V を管理]

Statistics

Views

Total Views
477
Views on SlideShare
477
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Lt 111217 Lt 111217 Presentation Transcript

  • アレっぽく Hyper-V を管理 Ahf(小尾 智之)
  • 自己紹介VB と SQL Server を主軸にする何でも屋  絶賛転職活動中!インディー団体を含むプロレス全般と クマ(クマー含む)好きWorkflow Foundation ソムリエが目標@IT エンジニアライフで色々書いてます [地方からの戯言](http://el.jibun.atmarkit.co.jp/ahf/)Blog:てすとぶろぐ(http://blogahf.blogspot.com/)
  • 唐突ですがSQL Server Integration Servicesを知っていますか?
  • もうひとつ唐突ですがSystem Center Orchestrator 2012(もしくは System Center Opalis)を知っていますか?
  • どちらもビジュアルに制御フローを設定できるいい製品・サービスですよね!
  • 管理といえば System Center仮想化環境に限らず運用管理といえばコレ http://www.microsoft.com/japan/systemcenter/default.mspx これがあれば物凄く便利に管理・運用できます。 ・・・でも、お高いんでしょう?
  • ハードルは高い・・・利用すれば便利なのは間違いない極小~小規模環境の場合コストバランスが・・・ 場合によっては一番高額になることもでも何らかの運用管理は必要!がんばって作りましょう! 当然 Workflow Foundation でね!
  • そこで WFワークフロー形式で構築できる  Opalis や SSIS みたい!ステキ!Hyper-V 環境の管理は WMI を利用  Hyper-V WMI クラス群は MSDN で公開 (http://msdn.microsoft.com/en-us/library/cc136986(VS.85).aspx)  WMI Code Creator を使えば .NET の ロジックコード生成も行ってくれるWMI をリモート管理で利用する場合 ファイアウォールの設定があれこれ必要…  WF サービス通して公開すれば設定不要  IIS でも IIS Express でも可能 WMI クエリは Web 上でサンプルが豊富!
  • Public MustInherit Class WMIExecuteActivityBase Inherits AsyncCodeActivity Protected _target As String = "" Protected _where As String = "" WMI 実行用アクティビティのベース Protected _service As String = "" Public Property Scope As InArgument(Of ManagementScope) Public Property Results As OutArgument(Of List(Of Hashtable)) Private Delegate Function asyncExecuteWMIDelegate(ByVal target As String, ByVal whereCondition As String, ByVal wmScope As ManagementScope) As List(Of Hashtable) Protected Overrides Function BeginExecute(context As AsyncCodeActivityContext, callback As AsyncCallback, state As Object) As IAsyncResult Dim currentScope = context.GetValue(Me.Scope) Dim asyncExecute = New asyncExecuteWMIDelegate(AddressOf ExecuteWMI) context.UserState = asyncExecute Return asyncExecute.BeginInvoke(_target, _where, currentScope, callback, state) End Function Protected Overrides Sub EndExecute(context As AsyncCodeActivityContext, result As IAsyncResult) Dim asyncExecute = TryCast(context.UserState, asyncExecuteWMIDelegate) Dim wmiResult = asyncExecute.EndInvoke(result) context.SetValue(Me.Results, wmiResult) End Sub Private Function ExecuteWMI(ByVal target As String, ByVal whereCondition As String, ByVal wmScope As ManagementScope) As List(Of Hashtable) End FunctionEnd Class WMI クエリは時間がかかるので非同期で実行
  • Private Function ExecuteWMI(ByVal target As String, ByVal whereCondition As String, ByVal wmScope As ManagementScope) As List(Of Hashtable) Dim result As New List(Of Hashtable) Try If wmScope Is Nothing Then wmScope = New ManagementScope("" + My.Computer.Name + "root" + _service) End If If Not wmScope.IsConnected Then wmScope.Connect() Dim wmQueryString = "SELECT * FROM " + target If whereCondition.Trim <> "" Then wmQueryString += " WHERE " + whereCondition Dim wmQuery As New ObjectQuery(wmQueryString) Using searcher As New ManagementObjectSearcher(wmScope, wmQuery) Using queryCollection = searcher.Get() For Each wmResult In queryCollection Dim resultRecord As New Hashtable For Each wmResultColumn In wmResult.Properties resultRecord.Add(wmResultColumn.Name, wmResultColumn.Value) Next If resultRecord.Count > 0 Then result.Add(resultRecord) Next End Using End Using Catch ex As Exception result.Clear() End Try Return result WMI 実行部分のロジック例 End Function ロジックとしては非常に簡単でアクティビティとするのに それほど手間はかかりません
  • Demo
  • ワークフローでの実装アクティビティを貼り付けていくだけ! シーケンス フローチャート これで運用管理する制御を作成してしまいます
  • ワークフローサービスで公開IIS や IIS Express を利用して公開ワークフローサービス定義(xamlx) と実行に必要な Dll があればそれもAzure 上でも同じように利用できます 基本アクティビティのみ利用時 xamlx ファイル一つだけで Azure 上でもサービスが!
  • 既存スクリプトの活用もし VBS や ps1 などのスクリプト資産があるなら スクリプト実行のアクティビティを作成 とりあえずのワークフロー化 ちゃんとしたアクティビティ化は後々… 極端に言えば Process.Start( VBS スクリプトファイル ) だけなアクティビティでOK
  • とりあえずはワークフローでスクリプトの再利用が進む アクティビティ化を更に行えば更に顕著に VBS や ps1 スクリプトは VB や C# に 移植する手間もあまりかからないコードを書かないでよいのでより多くの 人が運用に関われる ワークフローデザイナ上で事足りるのは 大きいメリット WF は .NET プラットフォーム構成要素の 一つなのでやろうと思えばなんでもできる!
  • まとめWF + WMI という組み合わせはかなり便利ワークフロー上のみで実装できるので IT 管理者でも多分大丈夫  WMI を実行する VBS 等スクリプトがあれば アクティビティ化は終わったも同然有償版 Visual Studio なくてもできるよ! http://wfdesignerexpress.codeplex.com/ で WF エディターツール公開中!WF に足りないのは 人気 啓蒙活動です! 実際に試すと意外と簡単です!  …ちなみに Opalis も SSIS も WF を使ってません。
  • ご清聴ありがとうございました
  • ・・・こんな感じに考えていました。 3 日程前までは。
  • PowerShell 3.0
  • Windows PowerShell Workflows
  • PowerShell も Workflow Foundation も 双方ともに超機能追加・統合
  • PowerShell コマンドレットのアクティビティ化WMI 操作用アクティビティWF xaml ワークフローを PowerShell から実行Xaml → ps コンバートWF 永続化等の機能を PowerShell に適用 これからの Windows の管理は WMF + PowerShell + WF へ!
  • PowerShell と WFどちらでも同じ管理作業が可能に!
  • 今度こそご清聴ありがとうございました