SlideShare una empresa de Scribd logo
1 de 24
アレっぽく 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 Function

End 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
どちらでも同じ管理作業が可能に!
今度こそ
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編
Yoichi Toyota
 
Web講座 第9回
Web講座 第9回Web講座 第9回
Web講座 第9回
nanametown
 
Wpfと非同期
Wpfと非同期Wpfと非同期
Wpfと非同期
yone64
 

La actualidad más candente (20)

Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編
 
Web講座 第9回
Web講座 第9回Web講座 第9回
Web講座 第9回
 
ストリーム処理エンジン「Zero」の開発と運用
ストリーム処理エンジン「Zero」の開発と運用ストリーム処理エンジン「Zero」の開発と運用
ストリーム処理エンジン「Zero」の開発と運用
 
ES Harmony Proxy on Firefox 4
ES Harmony Proxy on Firefox 4ES Harmony Proxy on Firefox 4
ES Harmony Proxy on Firefox 4
 
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
 
前期講座09
前期講座09前期講座09
前期講座09
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
1day cloud on_your_lab
1day cloud on_your_lab1day cloud on_your_lab
1day cloud on_your_lab
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
20150219 初めての「embulk」
20150219 初めての「embulk」20150219 初めての「embulk」
20150219 初めての「embulk」
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
MSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシーMSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシー
 
StackStormではじめる1人Slackのすすめ
StackStormではじめる1人SlackのすすめStackStormではじめる1人Slackのすすめ
StackStormではじめる1人Slackのすすめ
 
Wpfと非同期
Wpfと非同期Wpfと非同期
Wpfと非同期
 
タイマー
タイマータイマー
タイマー
 

Destacado

7 habiits1 by stephen r kavi
7 habiits1 by stephen r kavi7 habiits1 by stephen r kavi
7 habiits1 by stephen r kavi
phaniy405
 

Destacado (8)

Tejo Vignette
Tejo VignetteTejo Vignette
Tejo Vignette
 
Cadernos humanizasus atencao_basica
Cadernos humanizasus atencao_basicaCadernos humanizasus atencao_basica
Cadernos humanizasus atencao_basica
 
Conheça o VideoFan
Conheça o VideoFanConheça o VideoFan
Conheça o VideoFan
 
7 habiits1 by stephen r kavi
7 habiits1 by stephen r kavi7 habiits1 by stephen r kavi
7 habiits1 by stephen r kavi
 
Auzoko diagnostikoa ibaizabal bhi
Auzoko diagnostikoa ibaizabal bhiAuzoko diagnostikoa ibaizabal bhi
Auzoko diagnostikoa ibaizabal bhi
 
Tic
TicTic
Tic
 
Kalça artroplastisi, kk
Kalça artroplastisi, kkKalça artroplastisi, kk
Kalça artroplastisi, kk
 
Feliz Cumple mi querida Monina!
Feliz Cumple mi querida Monina!Feliz Cumple mi querida Monina!
Feliz Cumple mi querida Monina!
 

Similar a Lt 111217

クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
 

Similar a Lt 111217 (20)

クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
AWS Lambda Update
AWS Lambda UpdateAWS Lambda Update
AWS Lambda Update
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
Clrh 20121215
Clrh 20121215Clrh 20121215
Clrh 20121215
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
 
Nawatech 20131123
Nawatech 20131123Nawatech 20131123
Nawatech 20131123
 
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
 
20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzure20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzure
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Lt 111119
Lt 111119Lt 111119
Lt 111119
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
Lt 110205
Lt 110205Lt 110205
Lt 110205
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
 

Más de Tomoyuki Obi

Más de Tomoyuki Obi (20)

それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automateそれは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
 
Only Logic Apps
Only Logic AppsOnly Logic Apps
Only Logic Apps
 
This is iPaas
This is iPaasThis is iPaas
This is iPaas
 
Miniacs Power Automate
Miniacs Power AutomateMiniacs Power Automate
Miniacs Power Automate
 
Work Automate with Power Automate
Work Automate with Power AutomateWork Automate with Power Automate
Work Automate with Power Automate
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power Automate
 
CodelessDevelop using iPaas
CodelessDevelop using iPaasCodelessDevelop using iPaas
CodelessDevelop using iPaas
 
20190727_DevelopUseiPaas
20190727_DevelopUseiPaas20190727_DevelopUseiPaas
20190727_DevelopUseiPaas
 
Logic Apps/Flow Update Summary
Logic Apps/Flow Update SummaryLogic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
 
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04
 
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03
 
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02
 
decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01
 
20190427 global azurebootcamp
20190427 global azurebootcamp20190427 global azurebootcamp
20190427 global azurebootcamp
 
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
 
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
Create Bot using LogicApps
Create Bot using LogicAppsCreate Bot using LogicApps
Create Bot using LogicApps
 

Último

Último (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Lt 111217