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.

Azureで始めるDevOps

3,030 views

Published on

2015年4月18日行われたJAZUG沖縄で使った資料です。

Published in: Software

Azureで始めるDevOps

  1. 1. Azureで始めるDevOps Japan Azure User Group 福岡支部 株式会社オルターブース 小島 淳
  2. 2. 自己紹介 元某有名パンクバンド出身 あるときは さすらいのハードコアお父さん。 あるときは 釣り師。 あるときは ゴッドハンド整体師(マジです)。 たまにクラウドコンサルやってま す。
  3. 3. 株式会社オルターブース 代表取締役 小島 淳(Kojima Atsushi) システムマネジメントのプロフェッショナル 「オペレーションアーキテクト」を提唱し、シ ステム運用の在り方を大きく変える超マネジメ ント思考エンジニア。JAZUG福岡支部長として も日々クラウド技術を啓蒙してます。 Facebook https://www.facebook.com/a2c.kojima Profile
  4. 4. ちょっとだけ 4 株式会社オルターブース オフィスは福岡ですが、主に東京のお仕事が中心。 クラウド専門のコンサル~デベロッパー。 主にエンタープライズ向け業務システムとWindowsスト アアプリとAzureのコンサルが中心。
  5. 5. 超お堅い業界を 超ちゃらくやる 5
  6. 6. DevOpsってなに? おいしいの?? 6
  7. 7. 新しいシステム運用の形 開発部門と運用部門が協力し、ビジネスリスクを 軽減させるための仕組みのことです。 7
  8. 8. 暗黙知をなくせ システム運用上で最も大きいビジネスリス クは「技術力」といわれています。 この技術力が属人化していくと、いわゆる 「暗黙知」ができあがりノウハウ蓄積が困 難になっていきます。 この「暗黙知」を無くすことがDevOpsのメ リットと言えます。 8
  9. 9. インフラをコード化する マニュアルでの手作業の場合、オペレー ション実行時のログが結果になる。 暗黙知を無くすには「あるべき姿」を作り 上げることが重要です。 そのために、インフラのあるべき姿を 「コード化」することで誰でも同じオペ レーションで同じ結果を残し、なおかつロ グ=結果に依存しない環境を作ります。 9
  10. 10. リーンソフトウェアの原則 DevOpsを導入するときの原則に近い。 原則1:無駄をなくす 原則2:品質を作り込む 原則3:知識を作り出す 原則4:デメリットを把握する 原則5:素早く提供する 原則6:人を尊重する 原則7:全体を最適化する 10
  11. 11. 誰のためのDevOpsか • 開発者側でのDevOps Continuous Deliveryとか。 • 運用者側でのDevOps Infrastructure as a Codeとか。 • 2つのDevOpsのコラボレーション Immutable Infrastructureとか。 11
  12. 12. 継続的インテグレーションとは、継続的にビルドを実行 しソフトウェアをインテグレーションしたときに発生す る様々な問題を早期に検出し、フィードバックサイクル を短くしてソフトウェア開発の品質と生産性を向上させ る仕組みのことです。 継続的インテグレーション デプロイ コンパイル インスペク ション テスト
  13. 13. DevOps全体像 13 Microsoft Azure Virtual machine Config Management Server Web Site Cloud Service
  14. 14. • PowerShell DSC • Chef • Puppet • Ansible 代表的な構成管理アプリケーション
  15. 15. 仮想マシンおさらい 15
  16. 16. Azureが提供するコンピューティングサービス Web サイトWeb サイト アプリケーション データ クラウド サービス アプリケーション データ ファイアウォール 仮想ネットワーク 仮想マシン アプリケーション データ ファイアウォール 仮想ネットワーク OS オンプレミス アプリケーション データ ファイアウォール ネットワーク OS 仮想化 ハードウェア IaaS PaaS
  17. 17. 仮想マシン Microsoft Azureが提供するコンピューティング サービスの一つで、仮想マシン(VM)をクラウド 上に構築できる。 Windows Server あるいは Linux の仮想マシンを作成し、任意のアプリ ケーションをインストール可能。
  18. 18. 仮想マシンのベースとなる 仮想アーキテクチャ ハードウェア(x64アーキテクチャー)・Intel VT・AMD-V Windows Hypervisor(仮想化レイヤー) ペアレンタル パーティション VHD OS Image VHD OS Image VHD OS Image VHD OS Image
  19. 19. Hyper-V イメージ (テンプレート) プラットフォーム イメージ (標準テンプレート) Windows CentOS Ubuntu VHD VHD VHD VHD ・・・ マイ イメージ (カスタムテンプレート) (Generalize 済) アップロード 仮想マシン インス タンス化 イメージ化 コピー BLOB ストレージ 仮想マシン VHD Microsoft Azure ・・・ 仮想マシンの展開パターン
  20. 20. オンプレミスからクラウドへをシームレス にサポートする。 Windows Server Hyper-V オンプレミスの Hyper-V と Azure の間で仮想マシンを相互に移行可能
  21. 21. インスタンスサイズ • 追加ディスクも同様に BLOB スト レージに保存される • ディスク 1 本当たりの最大サイズは 1023 GB • 接続可能な最大数は仮想マシンの サイズによって異なる サイズ コア数 メモリ容 量 (GB) データ ディスク 数 A0 共有 0.768 1 1 x 500 A1 1 1.75 2 2 x 500 A2 2 3.5 4 4 x 500 A3 4 7 8 8 x 500 A4 8 14 16 16 x 500 A6 4 28 8 8 x 500 A7 8 56 16 16 x 500 A8 (※) 8 56 16 16 x 500 A9 (※) 16 112 16 16 x 500 ディスクの追加 A8/A9は大規模コンピューティング用 としてRDMA(Remote Direct Memory Access)で構成されている。
  22. 22. ディスク接続状態(A1の場合)
  23. 23. 仮想マシンの2つの階層レベル ■Basic (基本) レベル Azure ロード バランサーと自動スケーリング機能が提供さ れず、料金は最大で 27% 低く設定されている。 ■Standard(標準)レベル 全ての機能が提供されている最も標準なレベル。 2つの階層レベルは管理ポータルより切り替えが可能。ただ しすでにAzure ロードバランサーや自動スケーリングなど を組み込んである場合は、一端それらの機能を削除しなけ ればダウングレード(標準→基本)は出来ない。
  24. 24. PowerShell DSC で簡単サーバー構築 24
  25. 25. PowerShellおさらい 25 • MS-DOS時代から使われてきたコマンドスクリプト。豊富なコマン ド群があり現在でも実用性が高く多くのシステムで利用されている。 バッチファイル (.bat) • VBのスクリプト版。と言ってもVisualではない。VBライクに使える ので気軽に利用できる。VBAはまた別。 VBScript (.vbs) • JavaScriptをマイクロソフト独自の仕様によって拡張することで汎 用性を増した。最近流行っている.js的なスクリプトではない。 Jscript(.js) • .NETが利用できることから様々なアプリケーションが動かせる。ま た多くのMS製品がPowerShell拡張を持っているので汎用性が高い。 PowerShell (.ps1)
  26. 26. PowerShellおさらい 26 実行環境 PowerShell スクリプト PowerShell エンジン COM .NET Framework
  27. 27. PowerShellおさらい 27 OS 1.0 2.0 3.0 4.0 WinSrv 2003 ○SP1 ○SP2 × × WinSrv 2003 R2 ○SP1 ○SP2 × × WinSrv 2008 ○SP1 ○SP2 × WinSrv 2008 R2 ◎ ○SP1 ○SP1 WinSrv 2012 ◎ ○ WinSrv 2012 R2 ◎ Windows 7 ◎ ○SP1 ○SP1 Windows 8 ◎ × Windows 8.1 ◎
  28. 28. GUIで快適操作 コマンドラインでPowerShellを利用する場合、デバッ グやコードエディタがないため非常に効率が悪いです。 そこでコードエディタ、実行環境、デバッグ環境が統合 されたPowerShell ISEを使うことをお勧めします。 コード保管やデ バッグ、ステッ プ実行などが可 能。 また、マウス オーバーでヘル プ表示されます。 PowerShellおさらい
  29. 29. PowerShell DSCとは PowerShell DSCは、WMF4.0から新たに導 入されたサーバー構成管理ツールです。 PowerShell4.0がインストールされている Windows Server 2012 R2とWindows8.1 からは標準で使えます。 ChefやPuppetと同じくサーバー構成をコー ド化し、冪等性を持ちます。 29
  30. 30. PowerShell DSCの特徴 • DMTF標準に沿ってManaged Object Format(MOF)やWS-Managementで構成 されている。 • Pullだけでなく、Pushもサポートしている。 • Pushでは、サーバーとノード間の通信には Windows版WS-Management実装のWinRM を利用する。 • Pullでは、サーバーとノード間の通信には HTTP(あるいはHTTPS)を利用する。 • PowerShellで記述ができる。 30
  31. 31. PowerShell DSCの構成 31 DSC Server Node Node Push DSCサーバーが各ノードに対して問い合わせて ノードを構築していく。 Pull ノードがDSCサーバーに対して「あるべき構成」 が変化してないかどうかを定期的に確認する。
  32. 32. .MOFファイル MOF(Managed Object Format)とは、 サーバー構成を既述したファイルだが、こ れを手書きで書くととても大変。 DSCはこの.MOFファイルを簡単に生成する Configurationが用意されていて、 Configurationを元に.MOFファイルが自動 生成されます。 32
  33. 33. Resource拡張 DSCにはResourceと呼ばれるPowerShellの 拡張モジュールが用意されており、目的に応じ たResourceを利用することで簡単に構成管理 をすることが可能です。 ちなみにResourceは自作することも出来ます が、拡張Resource Kitを公式からダウンロード できます。 http://gallery.technet.microsoft.com/scriptcenter/DSC- Resource-Kit-All-c449312d 33
  34. 34. 宣言的構文 DSC Resourceを使って「あるべき姿」を コード化したものを「Configuration」と 言います。DSCではConfigurationを「宣言 的構文」で記述します。 宣言的構文をを用いたConfigurationでは従 来の「どのように構成するか」ではなく、 シンプルに「何をしたいか」を記述します。 34
  35. 35. コード比較 従来のPowerShellコード Web Server(IIS)の機能が未インストールかどうか確認 してから、未インストールならIISをインストールする。 Import-Module ServerManager If (-not (Get-WindowsFeature "Web-Server").Installed) { try { Add-WindowsFeature Web-Server -IncludeManagementTools -ErrorAction Stop } catch [Exception] { Write-Error $_ } } 35
  36. 36. コード比較 DSCのコード Web Server(IIS)の機能が未インストールかどうか確認 してから、未インストールならIISをインストールする。 Configuration IISInstall { Node localhost { WindowsFeature IIS { Ensure = "Present" Name = "Web-Server" IncludeAllSubFeature = $true } } } 36
  37. 37. 冪等性(べきとうせい) 冪等性とは「何回実行しても同じ結果を返 す」という概念です。これはChefやPuppet でも担保されている概念で、オペレーショ ンの品質保証にも繋がる大事なことです。 一度インストールしたら、2回目は失敗する ということがないように「あるべき姿」を 常に捉え、自動化をより安全なものにしま す。 37
  38. 38. 実装 38
  39. 39. DSCによる実装の流れ 以下はPush構成であった場合の流れです。 1. Configurationを書く。 2. Configurationを実行して、Nodeごと に.MOFファイルを生成する。 3. .MOFをファイルを対象ノードに転送して 実行させる。 39
  40. 40. シナリオ Local ServerにIISとASP.NETを実装する。 PowerShellのバージョンを確認する。 40 $PSVersionTable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.34014 BuildVersion 6.3.9600.17090 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2
  41. 41. Configuration構文の構造 41 Resource Block Configuration WebSiteConfigInstall { Node "localhost" { WindowsFeature IIS { } } } Configuration Block Configuration Block:Configuration名を定義するブロック Node Block Node Block:コンピュータノードを定義するブロック Resource Block Resource Block:処理内容を記述するブロック
  42. 42. Resource code 42 WindowsFeature IIS { Ensure = "Present" Name = "Web-Server" } WindowsFeature IISMgmt { Ensure = "Present" Name = " Web-Mgmt-Tools" } WindowsFeature ASP { Ensure = "Present" Name = "Web-Asp-Net45" } IIS機能追加 IIS管理機能追加 .NET4.5追加
  43. 43. .MOFファイルの生成 Configurationの最下部に以下のコマンドを 挿入する。 43 WebSiteConfigInstall -OutputPath . -Node localhost -OutputPath:.MOFファイルの生成先 -Node:対象Node Configurationを実行すると指定したPathに Node Block毎に.MOFファイルが生成され る。
  44. 44. DSCとNode間での接続設定 Configurationを各ノードに配布するには以 下のPowerShellコマンドをDSC Serverお よびNodeで実行しなくてはいけない。 44 Enable-PSRemoting -Force Set-Item wsman:localhostClientTrustedHosts -Value * -Force Set-ExecutionPolicy RemoteSigned
  45. 45. 実装 DSC ServerとNode間でのポリシーセット が完了したら、.MOFファイルをNodeに転 送して実行させます。 ※今回はlocal Serverが対象です。 45 Start-DscConfiguration -Path .WebSiteConfigInstall -Wait -Verbos -Path:.MOFファイルがあるフォルダ+ Configuration名 -Wait:完了するまで待機する -Verbos:詳細メッセージ出力
  46. 46. 実は。。。。 46 Linuxも!!
  47. 47. Node側セットアップ 47 yum groupinstall ‘Development Tools‘ yum install pam-devel openssl-devel mkdir /root/downloads cd /root/downloads wget https://collaboration.opengroup.org/omi/documents/30532/omi- 1.0.8.tar.gz tar -xvf omi-1.0.8.tar.gz cd omi-1.0.8/ ./configure make && make install yum install python python-devel cd /root/downloads Node側にてomiserverをセットアップする。
  48. 48. Node側セットアップ 48 wget https://github.com/MSFTOSSMgmt/WPSDSCLinux/releases/download/ v1.0.0-CTP/PSDSCLinux.tar.gz tar -xvf PSDSCLinux.tar.gz mv ./dsc/* ./ make make reg 続き OMI_HOME=/opt/omi-1.0.8 /opt/omi-1.0.8/bin/omiserver -d omiserverの起動。
  49. 49. Configuration Code 49 Configuration MyDSCDemo { Import-DSCResource -Module nx Node “to-linux.cloudapp.net" { nxFile myTestFile { Ensure = "Present" Type = "File" DestinationPath = "/tmp/test" Contents="This is my DSC Test!" } } } MyDSCDemo -OutputPath C:UsersazureuserDesktopPS_DSC
  50. 50. Nodeへ配布 50 $cred=Get-Credential -UserName:"root" -Message:"Root User?" $opt = New-CimSessionOption -UseSsl:$true -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $linuxcomp=New-CimSession -Credential:$cred -ComputerName:to- linux.cloudapp.net -Port:5986 -Authentication:basic - SessionOption:$opt Start-DscConfiguration -CimSession:$linuxcomp -Path:"C:temp" - Verbose -Wait
  51. 51. Immutable Infrastructure 51
  52. 52. 壊す、作る、壊す、・・・ システム運用のリスクは本番環境への変更オペレーションです。本番 環境ではすでにサービスが稼働しているため、何かトラブルがあれば サービスダウンの危険性が高まります。解決策は意外と簡単で本番環 境に「触らない」ことです。 Immutable Infrastructreとは本番環境と全く同じ構成のステージン グ環境を用意し、それらを交互に入れ替えていく運用方法です。 Immutable Infrastructure 本番サーバー ステージングサーバー 変更オペレーション
  53. 53. Docker DockerとはDocker社が開発するOSSでコンテナ型仮想アプリケーションです。 ※従来のホストOS型仮想化と仕組みは似ている Immutable Infrastructure
  54. 54. 主な機能 Dockerは、コンテナーでアプリケーションを実行するために以 下の機能を持ちます。  コンピューターリソースの隔離および制限  他のホスト、他のコンテナーとのネットワークの構成  ファイル/ディレクトリの世代と差分の管理 Dockerの特徴の1つとして、新しい独自技術はほとんど使って いないということがあります。コンテナ管理に必要となる既存 のOSSを組み合わせて、コマンドラインおよびREST APIで手軽 かつ効率良くコンテナー管理ができるようになっていることが、 Dockerが広く支持され、注目されている理由だと思います。 Immutable Infrastructure
  55. 55. Azureの展望 • Docker VM 拡張(新ポータルとxplat-cli) http://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-docker-vm-extension/ • CoreOSイメージ http://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-coreos-how-to/ • Nano Server http://blogs.technet.com/b/server-cloud/archive/2015/04/08/microsoft-announces-new-container- technologies-for-the-next-generation-cloud.aspx • マイクロソフトのコンテナ仮想技術 Windows Server Container Hyper-V Container Immutable Infrastructure
  56. 56. 詳しくは de:codeで!! 56
  57. 57. Azure Automation 57
  58. 58. Azure Automationって? PowerShellスクリプトを定期実行するため のサービス。 Runbookと言われるPowerShellワークフ ローを使って簡単にプロセス処理ができる ので、定期ジョブ以外にも使い道が多くあ ります。 58
  59. 59. Runbook Runbookは既存のPowerShellワークフロー を活用することも、自作もできるが Runbookギャラリーから必要なRunbookを 取得し利用した方が手間がなく、簡単です。 RunbookとはChefでいうところの cookbookと同じようなものと考えてもいい と思います。 59
  60. 60. だが、しかし・・・・ 60
  61. 61. Runbook RunbookギャラリーにあるRunbookは結構 中途半端なやつが多くて、修正が必要にな る可能性が高いorz 61
  62. 62. Runbookの作り方 http://www.techno- officer.com/blog/archives/1671 62
  63. 63. Automationの使い方 1. 管理証明書の作成と管理ポータルへの アップロード 2. ASSETの作成 3. Runbookの作成 4. テスト、発行 63
  64. 64. まとめ Azureは他にも様々なサービスを展開してい ています。是非楽しんで試してみてくださ い。 64
  65. 65. ご清聴 ありがとうございました。 65

×