Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
リリースとPowerShell 
かめがわかずし(@kkamegawa)
自己紹介 
 
亀川和史(かめがわかずし) / 会社員 
 
Twitter:@kkamegawaFacebook:https://www.facebook.com/kkamegawa/ 
 
Microsoft MVP for Visu...
PowerShell成分かなり薄めです 
ほかの特濃セッションで 
補充してください
Agenda 
 
リリース振り返り 
 
リリース方式について 
 
PowerShell DSCとRelease Management Serverを使った活用
やることとやらないこと 
 
やること 
 
PowerShell DSCとRelease Managementを使ったリリースの承認フロー 
 
やらないこと 
 
PowerShell DSCの詳細 
 
PowerShellの基...
リリースを 
自動化している?
手作業リリース 
リリース職人の 手による伝統 
完璧な手順書 
チェックシート 
リリース日 フォルダに整理 
一部スクリプト 
エビデンスを Excel貼り付け
手作業のどこが悪い? 
職人じゃないと できない 
手順書の日本語レ ビューになりがち 
チェックしづらい 作業がある 
新規環境作る時 多くのパッチ適用 
スクリプト実行 手順失敗の可能性 
作業完了までに時 間かかる
よろしい、ならば自動化だ 
OS設定 
パッチ 
再起動 
追加設定 
発行 (インストール) 
(アプリ固有の) 設定変更
リリースの難しさ 
リリースの 責任者は? 
え、知らな かった! 
ステージン グと本番 
リリースす る根拠は? 
自動化の テスト 
リリース 検証
リリース方式いろいろ 
 
Staging(検証)環境なし。すべてが本番 
 
Facebook(ただし、特定の人のみに機能をONするといった仕組みはある) https://www.facebook.com/publications/514...
リリースの自己責任方式 
リリース用 
本番 
開発者 
開発者 
開発者 
開発者 
ユーザ 
コミット 
コミット 
コミット 
コミット
リリースの組織方式 
リリース用 
開発者 
リーダー 
品質管理 
本番 
ユーザ 
コミット 
確認 
承認 
承認 
デプロイ
どっちが好き?
自己責任方式 
承認方式
リリースワークフロー 
 
好き嫌いは別にして、承認フローを通してリリースしたい要件もある。 
 
客先作業 
 
自分が信用できない 
 
テストも承認フローの一部として組み込まれている 
 
Visual Studioから担当者の...
Release Management Server 
 
リリース作業に承認フローを提供するソフトウェア 
 
もともとInCycleSoftwareという会社のTFS拡張機能 (TFSがあるとビルド時にリリーストリガを設定可能) 
 
...
PowerShellでリリーススクリプト作れば? 
 
「設定の手順」を自分で考えてPowerShellで作る必要がある 
 
スクリプト自身のテストも大変 
 
まっさらの環境用意して 
 
OSパッチ当てて 
 
各種ソフト入れて...
PowerShell DSCで何とか救おう 
 
DSC = Desired State Configuration 
 
「あるべき設定」を定義して、あっていないところを自動的に更新する →(ある)べき→冪等制 
 
@guitarra...
Release Management Serverの構成 
デプロイ先 
TFS Webサーバ 
Release Management 
Webサーバ 
SQL Server 
(Express可) 
Domain 
Controller 
ク...
Release Managementのリリース構成 
 
標準とvNextの構成の二種類 
 
サーバ、リリースパス、環境それぞれ別に設定 
 
別な理由は使用するインフラの差 
 
標準:WinRM→Release Managemen...
PowerShell DSC とRelease Management 
 
PowerShell DSC サーバが必要になる代わりに、Release Management Agentが不要になる 
 
ただし、Windows Managem...
オンプレミスとクラウド 
 
Azure対応済み。Azureへのデプロイ時に必要な情報 
 
サブスクリプションID 
 
ストレージアカウント 
 
管理証明書(拡張子publishsettingsに含まれている長いあれ) 
 
オ...
ステージの設定 
任意のステージを 
追加可能
提供コマンド
リリース対象サーバ 
エージェント有無
ビルドパスの定義 
TFSのビルド定義を 指定
Azureへのリリース承認も同じUI
ビルドをトリガーにしてリリース 
 
Release Management Serverの以下の場所にあるビルドテンプレートを VisualStudioから追加 %ProgramFiles(x86)%¥Visual Studio 12.0¥R...
ビルドトリガを設定するときの注意点 
 
「ビルドからリリースをトリガーできます か?」にチェックがあるかどうか 
 
ビルド定義が正しいか確認 
 
ステージで受け入れと配置手順が「自動」に設 定されていないとリリースは開始されないので...
ビルドをトリガーにしてリリース(VS) 
ビルド定義に 
リリースターゲットを 指定 
Tokenは特定の機能を持 つデプロイ用に振り分 けるために使う
標準のリリーステンプレート 
従来のVBScript などで手続き書 くのと変わらな い
vNextのリリーステンプレート 
Chefと標準 (DSCのこと) の選択のみ
リリース承認 
承認フロー
最終的なリリース承認
PowerShell DSCを使う前に 
 
実行前にはWinRMを有効にして、信頼するホストを設定 Set-Item wsman:¥localhost¥Client¥TrustedHosts-Value * -Force (全ホストを信頼)...
本日の環境(オンプレミス) 
デプロイ先 
Release Management 
TFS + SQL Server 
Windows 8.1 
Domain 
Controller 
ThinkPad T440p 
(8core 16GB 4...
本日の環境(Azure on IaaS) 
デプロイ先 
Azure Basic A2 
Release Management + 
TFS + SQL Server 
Azure Basic A3 
(4core 7GB RAM 10GB D...
まとめ 
 
リリースにワークフローが必要な場合は便利 
 
環境作成結構大変なので、燃え尽きないように 
 
PowerShell DSCやChef使えばリリースフローから依存性を切り離せてよい 
 
PowerShell DSCはア...
参考資料 
 
How to trigger deployments to Chef managed environments from Release Management 2013 with Update 3 RChttp://blogs...
Upcoming SlideShare
Loading in …5
×

PowerShell and Release Management Server

1,815 views

Published on

Introduct to PowerShell DSC and Release Management Server.

Published in: Technology
  • Be the first to comment

PowerShell and Release Management Server

  1. 1. リリースとPowerShell かめがわかずし(@kkamegawa)
  2. 2. 自己紹介  亀川和史(かめがわかずし) / 会社員  Twitter:@kkamegawaFacebook:https://www.facebook.com/kkamegawa/  Microsoft MVP for Visual Studio ALM(2012/7~)  @ITさんでちょこちょこ書かせていただいています。 現在:アプリの運用監視サービスとは?New Relic vs. Application Insights http://www.atmarkit.co.jp/ait/articles/1410/06/news145.html  はじめてのTeam Foundation Server 現在発売中 http://www.shuwasystem.co.jp/products/7980html/4046.html
  3. 3. PowerShell成分かなり薄めです ほかの特濃セッションで 補充してください
  4. 4. Agenda  リリース振り返り  リリース方式について  PowerShell DSCとRelease Management Serverを使った活用
  5. 5. やることとやらないこと  やること  PowerShell DSCとRelease Managementを使ったリリースの承認フロー  やらないこと  PowerShell DSCの詳細  PowerShellの基礎文法  TFSとはといった情報
  6. 6. リリースを 自動化している?
  7. 7. 手作業リリース リリース職人の 手による伝統 完璧な手順書 チェックシート リリース日 フォルダに整理 一部スクリプト エビデンスを Excel貼り付け
  8. 8. 手作業のどこが悪い? 職人じゃないと できない 手順書の日本語レ ビューになりがち チェックしづらい 作業がある 新規環境作る時 多くのパッチ適用 スクリプト実行 手順失敗の可能性 作業完了までに時 間かかる
  9. 9. よろしい、ならば自動化だ OS設定 パッチ 再起動 追加設定 発行 (インストール) (アプリ固有の) 設定変更
  10. 10. リリースの難しさ リリースの 責任者は? え、知らな かった! ステージン グと本番 リリースす る根拠は? 自動化の テスト リリース 検証
  11. 11. リリース方式いろいろ  Staging(検証)環境なし。すべてが本番  Facebook(ただし、特定の人のみに機能をONするといった仕組みはある) https://www.facebook.com/publications/514128035341603/ http://wazanova.jp/items/724(日本語概要)  自己責任でデプロイ  CookpadなどのGitを使っている企業に多い(?) https://speakerdeck.com/mirakui/cookpads-deployment-and-auto-scalinghttp://www.publickey1.jp/blog/14/110jaws_day_2014_1.html  リリース承認制  顧客の依頼を受けて開発する場合多い
  12. 12. リリースの自己責任方式 リリース用 本番 開発者 開発者 開発者 開発者 ユーザ コミット コミット コミット コミット
  13. 13. リリースの組織方式 リリース用 開発者 リーダー 品質管理 本番 ユーザ コミット 確認 承認 承認 デプロイ
  14. 14. どっちが好き?
  15. 15. 自己責任方式 承認方式
  16. 16. リリースワークフロー  好き嫌いは別にして、承認フローを通してリリースしたい要件もある。  客先作業  自分が信用できない  テストも承認フローの一部として組み込まれている  Visual Studioから担当者の裁量で発行は楽だけど、台数多くなると…  承認ワークフローでも自動化の恩恵は必要  QAの人が自動化を組めるとは限らない  むしろできない前提
  17. 17. Release Management Server  リリース作業に承認フローを提供するソフトウェア  もともとInCycleSoftwareという会社のTFS拡張機能 (TFSがあるとビルド時にリリーストリガを設定可能)  Visual Studio 2013リリースのタイミングでMicrosoftに部門買収されて、 Visual Studio 2013の一部分となる  Visual Studio 2013 Update 3でPowerShell DSCをサポート  複数台のデプロイもサポート PowerShell DSCを使えばエージェントなくてもいい
  18. 18. PowerShellでリリーススクリプト作れば?  「設定の手順」を自分で考えてPowerShellで作る必要がある  スクリプト自身のテストも大変  まっさらの環境用意して  OSパッチ当てて  各種ソフト入れて  順番に設定変更…  デバッグ… Install-WindowsFeature(略) $exe = new-object system.diagnostics.Process $exe.StartInfo.FileName= “¥¥server¥share¥build¥22222¥drop¥hoge.msi"; $exe.StartInfo.Arguments=“/Silent” $exe.Start() $exe.WaitForExit()
  19. 19. PowerShell DSCで何とか救おう  DSC = Desired State Configuration  「あるべき設定」を定義して、あっていないところを自動的に更新する →(ある)べき→冪等制  @guitarrapc_techさんの連載と資料を見るといいよ! http://www.atmarkit.co.jp/ait/articles/1405/22/news131.html  PowerShell DSCのサーバとしてWindows Server 2012 R2が必要  クライアントにはWindows Management Framework(PowerShell込) 4.0がある といい(エージェントとどっちを入れるのがいい?) http://www.microsoft.com/ja-jp/download/details.aspx?id=40855→もちろんPowerShell !
  20. 20. Release Management Serverの構成 デプロイ先 TFS Webサーバ Release Management Webサーバ SQL Server (Express可) Domain Controller クライアント PowerShell DSC サーバ Release Management Agentインス トール
  21. 21. Release Managementのリリース構成  標準とvNextの構成の二種類  サーバ、リリースパス、環境それぞれ別に設定  別な理由は使用するインフラの差  標準:WinRM→Release Management Serverがコントロール  vNext:ChefやPowerShell DSC→外部のインフラに依存(承認ワークフローのみ提供)
  22. 22. PowerShell DSC とRelease Management  PowerShell DSC サーバが必要になる代わりに、Release Management Agentが不要になる  ただし、Windows Management Framework 4.0が必要なので、 Windows Server 2012 R2/Windows 8.1より前のOSでは注意  PowerShellDSCサーバはほかと兼用でもOK  TFS WebサーバとPowerShell DSCとRelease Management Server共存させる  SQL Serverも同一環境で実行可能  今回の構成では全部入り  ちなみにChefも使えます
  23. 23. オンプレミスとクラウド  Azure対応済み。Azureへのデプロイ時に必要な情報  サブスクリプションID  ストレージアカウント  管理証明書(拡張子publishsettingsに含まれている長いあれ)  オンプレミス  Active Directoryがほぼ必須 (アカウントやTFS連携で必要)  デプロイも認証がからむと難しい
  24. 24. ステージの設定 任意のステージを 追加可能
  25. 25. 提供コマンド
  26. 26. リリース対象サーバ エージェント有無
  27. 27. ビルドパスの定義 TFSのビルド定義を 指定
  28. 28. Azureへのリリース承認も同じUI
  29. 29. ビルドをトリガーにしてリリース  Release Management Serverの以下の場所にあるビルドテンプレートを VisualStudioから追加 %ProgramFiles(x86)%¥Visual Studio 12.0¥Release Management¥bin  接続するTFSのバージョンによって指定するビルドテンプレートが変わる ので注意  TFS 2013  Git:ReleaseGitTemplate.12.xaml  TFVC:TfvcTemplate.12.xaml  TFS 2012:ReleaseDefaultTemplate.11.1.xaml  TFS 2010:ReleasedefaultTemplate.xaml
  30. 30. ビルドトリガを設定するときの注意点  「ビルドからリリースをトリガーできます か?」にチェックがあるかどうか  ビルド定義が正しいか確認  ステージで受け入れと配置手順が「自動」に設 定されていないとリリースは開始されないので 注意  TFSビルドサーバにRMクライアントがない  配置完了までにデフォルトの10分が経過した ※リリーステンプレートの名前変更できないの で注意
  31. 31. ビルドをトリガーにしてリリース(VS) ビルド定義に リリースターゲットを 指定 Tokenは特定の機能を持 つデプロイ用に振り分 けるために使う
  32. 32. 標準のリリーステンプレート 従来のVBScript などで手続き書 くのと変わらな い
  33. 33. vNextのリリーステンプレート Chefと標準 (DSCのこと) の選択のみ
  34. 34. リリース承認 承認フロー
  35. 35. 最終的なリリース承認
  36. 36. PowerShell DSCを使う前に  実行前にはWinRMを有効にして、信頼するホストを設定 Set-Item wsman:¥localhost¥Client¥TrustedHosts-Value * -Force (全ホストを信頼)  PowerShell Resource Kit(現在Wave7)にいろんなモジュールが登録されている。  TechnetGalleryから入手 https://gallery.technet.microsoft.com/DSC-Resource-Kit-All-c449312d  以下のフォルダに展開 64bit版:%ProgramFiles%¥WindowsPowerShell¥Modules※:Hyper-Vもあるけど、おそらくWindows Server 2008 R2では使えない(名前空 間非互換のため)  Import-DscResourceコマンドレットで使用する 例:import-DscResource–Module xWebAdministration
  37. 37. 本日の環境(オンプレミス) デプロイ先 Release Management TFS + SQL Server Windows 8.1 Domain Controller ThinkPad T440p (8core 16GB 480GB SSD)
  38. 38. 本日の環境(Azure on IaaS) デプロイ先 Azure Basic A2 Release Management + TFS + SQL Server Azure Basic A3 (4core 7GB RAM 10GB Data HDD) • Azure ADなしのぬるい環境 • SQL Serverイメージ使うと高 いので、SQL ServerはMSDN のライセンスで持ち込み。検 証ならExpressでもOK • ISOイメージの持ち込みでは まった(Add-AzureVHDコマン ドレットで容量固定VHDを アップロード) • レポートなど動いてない機能 がある
  39. 39. まとめ  リリースにワークフローが必要な場合は便利  環境作成結構大変なので、燃え尽きないように  PowerShell DSCやChef使えばリリースフローから依存性を切り離せてよい  PowerShell DSCはアドホックなインストールスクリプトのデバッグから解 放してくれる(かも)  とりあえず@guitarrapc_techさんをフォローしておこう
  40. 40. 参考資料  How to trigger deployments to Chef managed environments from Release Management 2013 with Update 3 RChttp://blogs.msdn.com/b/visualstudioalm/archive/2014/07/08/how-to-trigger-deployments-to-chef- managed-environment-from-release-management.aspx  How to deploy to Standard or Azure environments in Release Management 2013 with Update 3 RChttp://blogs.msdn.com/b/visualstudioalm/archive/2014/07/07/how-to-deploy-to-standard-or-azure- environments-in-release-management-2013-with-update-3-rc.aspx  Release Management Update 3 CTP1 is now available with DSC Deployment Feature! http://blogs.msdn.com/b/visualstudioalm/archive/2014/05/22/release-management-for-microsoft-visual- studio-2013-with-update-3-ctp1-is-live.aspx  How to modify the TFS 2013 default build process template (GitTemplate.12.xaml & TfvcTemplate.12.xaml) to enable releasing from a buildhttp://blogs.msdn.com/b/visualstudioalm/archive/2013/12/09/how-to-modify-the-build-process- template-to-use-the-option-trigger-release-from-build.aspx  リリース管理を使用したリリースの管理 http://msdn.microsoft.com/ja-jp/library/dn217874.aspx  PowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本 http://www.atmarkit.co.jp/fwin2k/operation/indexpage/index.html#powershelldsc

×