2016年11月5日土曜日

System Center 2016 Operations Managerのセットアップ 2/2

System Center 2016 Operations Managerのセットアップに必要なアカウント(サービスアカウント)を準備します。

アクションアカウント、構成サービスのアカウント、データウェアハウス用の読み取りと書き込みのアカウントをドメインユーザーとして作成します。


作成したサービスアカウントのうち、アクションアカウント、構成サービスのアカウントをManagement Serverのローカル管理者グループに追加します。本来ならば構成サービスのアカウントのみで良いのです。が、Linuxを監視する際にアクションアカウントをローカル管理者グループに追加する必要があります。


データウェアハウス用の読み取りと書き込みのアカウントは、SQL Serverのログイン権限を付与しておきます。



この後は、SQL Server System CLR TypesとReport Viewerを入れるのです。
が、事前に入れた2012用のSQL Server System CLR TypesとReport Viewer 2012では、インストールの前提条件をパスしないことがわかりました。
2014用のSQL Server System CLR TypesとReport Viewer 2015を入れましょう。

続いて、必要な「役割と機能」を追加します。




上記をGet-WindowsFeatureでリストアップしてみました。
Display Name                                            Name                       Install State
------------                                            ----                       -------------

[X] Web Server (IIS)                                    Web-Server                     Installed
    [X] Web Server                                      Web-WebServer                  Installed
        [X] Common HTTP Features                        Web-Common-Http                Installed
            [X] Default Document                        Web-Default-Doc                Installed
            [X] Directory Browsing                      Web-Dir-Browsing               Installed
            [X] HTTP Errors                             Web-Http-Errors                Installed
            [X] Static Content                          Web-Static-Content             Installed
        [X] Health and Diagnostics                      Web-Health                     Installed
            [X] HTTP Logging                            Web-Http-Logging               Installed
            [X] Request Monitor                         Web-Request-Monitor            Installed
        [X] Performance                                 Web-Performance                Installed
            [X] Static Content Compression              Web-Stat-Compression           Installed
        [X] Security                                    Web-Security                   Installed
            [X] Request Filtering                       Web-Filtering                  Installed
            [X] Windows Authentication                  Web-Windows-Auth               Installed
        [X] Application Development                     Web-App-Dev                    Installed
            [X] .NET Extensibility 3.5                  Web-Net-Ext                    Installed
            [X] .NET Extensibility 4.6                  Web-Net-Ext45                  Installed
            [X] ASP.NET 3.5                             Web-Asp-Net                    Installed
            [X] ASP.NET 4.6                             Web-Asp-Net45                  Installed
            [X] ISAPI Extensions                        Web-ISAPI-Ext                  Installed
            [X] ISAPI Filters                           Web-ISAPI-Filter               Installed
    [X] Management Tools                                Web-Mgmt-Tools                 Installed
        [X] IIS Management Console                      Web-Mgmt-Console               Installed
        [X] IIS 6 Management Compatibility              Web-Mgmt-Compat                Installed
            [X] IIS 6 Metabase Compatibility            Web-Metabase                   Installed
[X] .NET Framework 3.5 Features                         NET-Framework-Features         Installed
    [X] .NET Framework 3.5 (includes .NET 2.0 and 3.0)  NET-Framework-Core             Installed
[X] .NET Framework 4.6 Features                         NET-Framework-45-Fea...        Installed
    [X] .NET Framework 4.6                              NET-Framework-45-Core          Installed
    [X] ASP.NET 4.6                                     NET-Framework-45-ASPNET        Installed
    [X] WCF Services                                    NET-WCF-Services45             Installed
        [X] HTTP Activation                             NET-WCF-HTTP-Activat...        Installed
[X] Windows Process Activation Service                  WAS                            Installed
    [X] Process Model                                   WAS-Process-Model              Installed
    [X] Configuration APIs                              WAS-Config-APIs                Installed

今回のセットアップは、MSDN版のISOを使用していますが、ISOをマウントしたところ、実行ファイルがあるのみ。


これを実行


解凍先を指定するようですね。


そのまま回答すると、怒られます。読み取り専用ですので。


ということで、記憶域プールなFドライブへ解凍します。



無事にインストール用バイナリーが出てきました。


setup.exeを起動します。


更新プログラムを含めてインストールします。


マネジメントサーバー、管理コンソール、Webコンソールをインストールします。


インストール先は、Fドライブに変更


Report Viewerがインストール要件を満たしませんでした。


Report Viewer 2015が必要ですが、


先に2014用のSQL Server System CLR Typesをダウンロード/インストールします。








続いてReport Viewer 2015をインストールします。





再度、前提条件を確認します。今回は問題無し。


管理グループを設定します。


ライセンス条項の確認します。


データベースを指定します。


データウェアハウスのデータベースを指定します。


Webコンソールをホストするサイトを指定します。


認証方式を指定します。


冒頭で作成したサービスアカウントを設定します。



設定のサマリーです。




30分ほどでインストール完了。



上記の警告を解消するため、PowerShellでプロダクトキーを設定します。

System Center 2016 Operations Managerのセットアップ 1/2

SCOMのAzure Resource Manager VM TempleteでVMを作りましたので、まずSQL Server 2016を入れます。
以下、備忘録です。

setupを起動し、Installationを選択


SQL Serverの新規インストールを選択

ちなみに、ここからManagement Studioがインストール可能。

プロダクトキーの入力画面


ライセンス条項の画面


更新プログラムの確認および適用画


インストールルールの画面、エラーがない事を確認


SCOMは、データベースエンジン以外に、フルテキスト検索が必要


ドキュメントを追加
そして、インストール先をFドライブ(8本のディスクを記憶域プールでまとめたもの)へ変更


デフォルトのインスタンスを指定


SQL Serverの各サービスアカウントとして、ドメインのアカウントを指定


照合順序は、英語環境での既定値を選択


認証は、Windows認証のままとし、管理者アカウントとしてdomain adminsを追加


データベースの格納先がFドライブになっていることを確認


tempDBは、既定値のまま


ファイルストリームは、既定値のまま


レポーティングサービスは、インストールのみを選択


設定値サマリー






8本のディスクを記憶域プールでまとめたドライブでは、10分ほどでインストール完了


Download SQL Server Management Studio (SSMS)より最新版をダウンロードしてインストール



次回は、System Center 2016 Operations Managerのセットアップに必要なアカウントの準備、インストールをまとめます。

SCOMのAzure Resource Manager VM Templete

データディスク8本を記憶域プールで束ねて、SCOMのバイナリーやDBを置くドライブとしているラボを構成しています。
新規作成から、データディスク8本を追加するのがだんだん面倒になりました。。。

そこで、SCOMのAzure Resource Manager VM Templeteを書いてみました。
ベースは、
githubのAzure Resource Manager テンプレートをカスタマイズしてみた - RDP接続できるVMテンプレート
です。

テンプレートをデプロイする際の前提は、リソースグループ、ストレージアカウント、仮想ネットワークは、構築済みであること。

今後の改善事項は、NICにDNSサーバー設定を入れ込むことでしょうか。

デプロイの画面。

実際にデプロイ後、ディスクの管理で確認。

記憶域プールでディスクをまとめたところ。


では、コードを下記に掲載しておきます。
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string",
      "defaultValue": "arscom2016",
      "metadata": {
        "description": "name for the Virtual Machine."
      }
    },
    "dnsLabelPrefix": {
      "type": "string",
      "defaultValue": "arscom2016",
      "metadata": {
        "description": "Unique DNS Name for the Public IP used to access the Virtual Machine."
      }
    },
    "adminUsername": {
      "type": "string",
      "metadata": {
        "description": "Username for the Virtual Machine."
      }
    },
    "adminPassword": {
      "type": "securestring",
      "metadata": {
        "description": "Minimum 12 characters. Password for the Virtual Machine."
      }
    },
    "windowsOSVersion": {
      "type": "string",
      "defaultValue": "2016-Datacenter",
      "allowedValues": [
        "2012-R2-Datacenter"
        "2016-Datacenter"
      ],
      "metadata": {
        "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2012-R2-Datacenter, 2016-Datacenter."
      }
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_DS3",
      "allowedValues": [
        "Standard_DS3_v2",
        "Standard_DS3"
      ]
    },
    "vmDataDiskSize": {
      "type": "int",
      "defaultValue": 33
    },
    "rdpFrontend": {
      "type": "int",
      "defaultValue": 50001,
      "metadata": {
        "description": "Public port number for RDP"
      }
    },
    "VNetName": {
      "type": "string",
      "defaultValue": "arejpVNet1"
    },
    "VSubnetName": {
      "type": "string",
      "defaultValue": "Subnet"
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "arejpstorageact0"
    }
  },
  "variables": {
    "sizeOfDiskInGB": "[parameters('vmDataDiskSize')]",
    "imagePublisher": "MicrosoftWindowsServer",
    "imageOffer": "WindowsServer",
    "vmName": "[parameters('vmName')]",
    "vmSize": "[parameters('vmSize')]",
    "OSDiskName": "[concat(variables('vmName'),'-os')]",
    "dataDisk1VhdName": "[concat(variables('vmName'),'-data1')]",
    "dataDisk2VhdName": "[concat(variables('vmName'),'-data2')]",
    "dataDisk3VhdName": "[concat(variables('vmName'),'-data3')]",
    "dataDisk4VhdName": "[concat(variables('vmName'),'-data4')]",
    "dataDisk5VhdName": "[concat(variables('vmName'),'-data5')]",
    "dataDisk6VhdName": "[concat(variables('vmName'),'-data6')]",
    "dataDisk7VhdName": "[concat(variables('vmName'),'-data7')]",
    "dataDisk8VhdName": "[concat(variables('vmName'),'-data8')]",
    "nicName": "[concat(variables('vmName'),'-nic01')]",
    "existingVNetName": "[parameters('VNetName')]",
    "subnetName": "[parameters('VSubnetName')]",
    "publicIPAddressName": "[concat(variables('vmName'),'-PublicIP01')]",
    "publicIPAddressType": "Dynamic",
    "vmStorageAccountContainerName": "[concat(variables('vmName'),'-vhds')]",
    "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('existingVNetName'))]",
    "subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]",
    "lbName": "[concat(parameters('vmName'),'-lb01')]",
    "lbInboundNatRulesName": "[concat(parameters('vmName'),variables('lbName'),'-InboundNatRules01')]",
    "lbFrontEndName": "[concat(parameters('vmName'),variables('lbName'),'-FrontEnd01')]",
    "lbBackendAddressPoolName": "[concat(parameters('vmName'),variables('lbName'),'-BackendPool01')]",
    "publicIPAddressID": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]",
    "lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbName'))]",
    "lbFrontEndIPConfigID": "[concat(variables('lbID'),'/frontendIPConfigurations/',variables('lbFrontEndName'))]",
    "lbPoolID": "[concat(variables('lbID'),'/backendAddressPools/',variables('lbBackendAddressPoolName'))]",
    "lbNatID": "[concat(variables('lbID'),'/inboundNatRules/',variables('lbInboundNatRulesName'))]",
    "apiVersion": "2015-06-15"
  },
  "resources": [
    {
      "apiVersion": "[variables('apiVersion')]",
      "type": "Microsoft.Network/publicIPAddresses",
      "name": "[variables('publicIPAddressName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "publicIPAllocationMethod": "[variables('publicIPAddressType')]",
        "dnsSettings": {
          "domainNameLabel": "[parameters('dnsLabelPrefix')]"
        }
      }
    },
    {
      "apiVersion": "[variables('apiVersion')]",
      "name": "[variables('lbName')]",
      "type": "Microsoft.Network/loadBalancers",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
      ],
      "properties": {
        "frontendIPConfigurations": [
          {
            "name": "[variables('lbFrontEndName')]",
            "properties": {
              "publicIPAddress": {
                "id": "[variables('publicIPAddressID')]"
              }
            }
          }
        ],
        "backendAddressPools": [
          {
            "name": "[variables('lbBackendAddressPoolName')]"
          }
        ],
        "inboundNatRules": [
          {
            "name": "[variables('lbInboundNatRulesName')]",
            "properties": {
              "frontendIPConfiguration": {
                "id": "[variables('lbFrontEndIPConfigID')]"
              },
              "protocol": "tcp",
              "frontendPort": "[parameters('rdpFrontend')]",
              "backendPort": 3389,
              "enableFloatingIP": false
            }
          }
        ]
      }
    },
    {
      "apiVersion": "[variables('apiVersion')]",
      "type": "Microsoft.Network/networkInterfaces",
      "name": "[variables('nicName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.Network/loadBalancers/',variables('lbName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "subnet": {
                "id": "[variables('subnetRef')]"
              },
              "loadBalancerBackendAddressPools": [
                {
                  "id": "[variables('lbPoolID')]"
                }
              ],
              "loadBalancerInboundNatRules": [
                {
                  "id": "[variables('lbNatID')]"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "apiVersion": "[variables('apiVersion')]",
      "type": "Microsoft.Compute/virtualMachines",
      "name": "[variables('vmName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[variables('vmSize')]"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "[variables('imagePublisher')]",
            "offer": "[variables('imageOffer')]",
            "sku": "[parameters('windowsOSVersion')]",
            "version": "latest"
          },
          "osDisk": {
            "name": "[variables('OSDiskName')]",
            "vhd": {
              "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]"
            },
            "caching": "ReadWrite",
            "createOption": "FromImage"
          },
          "dataDisks": [
            {
              "name": "[variables('dataDisk1VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 0,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk1VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk2VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 1,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk2VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk3VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 2,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk3VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk4VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 3,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk4VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk5VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 4,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk5VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk6VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 5,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk6VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk7VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 6,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk7VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            },
            {
              "name": "[variables('dataDisk8VhdName')]",
              "diskSizeGB": "[variables('sizeOfDiskInGB')]",
              "lun": 7,
              "vhd": {
                "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk8VhdName'),'.vhd')]"
              },
              "createOption": "Empty"
            }
          ]
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
            }
          ]
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "enabled": "true",
            "storageUri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net')]"
          }
        }
      }
    }
  ]
}

2016年10月10日月曜日

PowerShell Script Analyzer

自分でも、お仕事で少しPowerShellを書く機会があり、常々lint的なものがあればと。
エディター経由がいいなと思いましたが、Visual Studio Codeのマーケットプレイス見たものの、どうもない様子。

じゃあPowerShellのモジュールでないのかなと思ったら、ありました。という事、今回は備忘録かつShort Tipsです。


PowerShell Script Analyzer: Static Code analysis for Windows PowerShell scripts & modules
https://blogs.msdn.microsoft.com/powershell/2015/02/24/powershell-script-analyzer-static-code-analysis-for-windows-powershell-scripts-modules/
が該当しました。ですが、肝心のダウンロード先が不明確。

改めて調査し直し、githubにPSScriptAnalyzerがありました!
Windows PowerShell 3.0 or greater とあるので、どこでも使い易いのではないでしょうか。

https://github.com/PowerShell/PSScriptAnalyzer#introduction

ダウンロード先のガイドは下記にもあります。
https://www.powershellgallery.com/packages/PSScriptAnalyzer/

Install-Module -Name PSScriptAnalyzer
を実行しますが、管理者権限が必要です。


管理者権限で改めてインストールします。


Get-ScriptAnalyzerRule、Invoke-ScriptAnalyzerが使えます~


カスタムルールも作れますが、シンプルに使うなら、
Invoke-ScriptAnalyzer チェックするPowerShell
です。
ちなみに、Ignite2016Downloader.ps1を試しにチェックする以下のような感じになりますよ。
※手元にちょうどあったので、Ignite2016Downloader.ps1を確認してみました。自分のファイル有れば良かったのですが、申し訳ないです。


以上、参考になれば幸いです。

2016年10月8日土曜日

Windows Server 2016 Hyper-VのゲストOSサポート状況

Windows Server 2016も評価版として、正式リリースされています。

Windows Server 2016 Hyper-VのゲストOSサポート状況をWindows Server 2012 R2と比較してみるshort tipsです。
よって、主語は"Windows Server 2016 Hyper-V"です。
元ネタは、下記の二つ。


Windows Serverは、Windows Server 2003 R2 SP2、Windows Server 2003 SP2がサポート外になります、Windows Server 2016がが追加です
Windows Small Business Server 2011、Windows Home Server 2011は、サポート内。

Windowsは、Windows XP SP3が64bitおよび32bit共に、サポート外です。
Windows 10は、Windows Server 2012 R2 Hyper-Vからサポートされているので、状況変わらず。

LinuxとFreeBSDは、
Supported Linux and FreeBSD virtual machines for Hyper-V on Windows
に記載の通りで、違い無しです。

以上

※Windows Server 2012 R2でも、Windows Server 2016をゲストとして利用できるため、訂正しました(2016/12/20)

2016年10月1日土曜日

USBメモリでWindows Server 2016評価版を入れてみた

とは言っても
Create Bootable Windows Server 2016 USB Thumb Drive for Installing OS - See more at: http://itproguru.com/expert/2016/05/create-bootable-windows-server-2016-usb-thumb-drive-for-installing-os/#sthash.8o7BWMIo.MzcMc6KS.dpuf
を参考にさせて頂きました。
ただし途中のformatコマンドは、下記の通りとしました。
format fs=exfat

exfatにしたのはUEFIで起動した際にも、Windows Server 2016をインストールできるようにとの思いです。
Windows Server 2016のinstall.wimは4GB越えですので、

fat32ではなくexfatである必要もあります。

さてWindows Server 2016のインストール自体は、従来通りでした。
ただ、エディションの選択画面はお見せしておきます。
StandardとDatacenterでそれぞれGUI(デスクトップエクスペリエンス)、Server Coreが選択できますね。

2016年9月19日月曜日

Update Rollup 11 for System Center 2012 R2 Virtual Machne Manager用の管理パックを入れる

Performance and Resource Optimization (PRO) のために、Update Rollup 11 for System Center 2012 R2 Virtual Machne Manager用の管理パックをOMにインポートします。

(既定値では)VMMサーバーの
C:\Program Files\Microsoft System Center 2012 R2\Virtual Machine Manager\ManagementPacks
に配置されているので、タイムスタンプを確認してみます。
予想通り、UR11でSCOM用の管理パックも更新されています。


これをOM側にインポートします。



管理パックを取り込みました。一つだけセキュリティの警告があるぐらいで、エラーとなるような問題はないですね。



セキュリティの警告が出ていますので、処理を続行するため、[Yes]を押します。


Management Packの一覧でも8224の管理パックがありますので、インポートは問題ないようですね。