HybridRunbookWorkerConfig.ps1
<#PSScriptInfo .VERSION 0.1.0 .GUID a62fccd2-e507-43f9-b29b-1a1d6ef8c337 .AUTHOR Ben Gelens, Michael Greene .COMPANYNAME Microsoft .COPYRIGHT .TAGS DSCConfiguration .LICENSEURI https://github.com/Microsoft/HybridRunbookWorkerConfig/blob/master/LICENSE .PROJECTURI https://github.com/Microsoft/HybridRunbookWorkerConfig .ICONURI https://github.com/Microsoft/HybridRunbookWorkerConfig/blob/master/Icon.png .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES https://github.com/Microsoft/HybridRunbookWorkerConfig/blob/master/README.md#releasenotes .PRIVATEDATA 2016-Datacenter-Server-Core #> #Requires -Module @{ModuleName = 'HybridRunbookWorkerDSC'; ModuleVersion = '1.0.0.0'} #Requires -Module @{ModuleName = 'xPSDesiredStateConfiguration'; ModuleVersion = '8.0.0.0'} <# .DESCRIPTION Automatically onboard node to OMS and Azure Automation. Required variables in Automation service: - OMS Workspace ID as Variable: WorkspaceID - OMS Workspace Key as Variable: WorkspaceKey(encrypted) - Automation Account Endpoint URL as Variable: AutomationEndpoint - Automation Account Primary or Secondary Key as Credential: AutomationCredential - Username can be any value. Key as password. Requires the following modules be imported from the PowerShell Gallery: - HybridRunbookerWorkerDSC - xPSDesiredStateConfiguration To compile using Azure PowerShell: Add-AzureRMAccount (Login) $ConfigurationData = @{ AllNodes = @( @{ NodeName = 'Localhost' PSDscAllowPlainTextPassword = $true } ) } $CompileParams = @{ ResourceGroupName = <ResourceGroupName> AutomationAccountName = <AutomationAccountName> ConfigurationName = HybridRunbookWorkerConfig ConfigurationData = $ConfigurationData } Start-AzureRmAutomationDscCompilationJob @CompileParams #> configuration HybridRunbookWorkerConfig { Import-DscResource -ModuleName @{ModuleName='xPSDesiredStateConfiguration';ModuleVersion='8.0.0.0'} Import-DscResource -ModuleName @{ModuleName='HybridRunbookWorkerDsc';ModuleVersion='1.0.0.0'} $OmsWorkspaceId = Get-AutomationVariable WorkspaceID $OmsWorkspaceKey = Get-AutomationVariable WorkspaceKey $AutomationEndpoint = Get-AutomationVariable AutomationEndpoint $AutomationKey = Get-AutomationPSCredential AutomationCredential $OIPackageLocalPath = "C:\MMASetup-AMD64.exe" Node Localhost { # Download a package xRemoteFile OIPackage { Uri = "https://opsinsight.blob.core.windows.net/publicfiles/MMASetup-AMD64.exe" DestinationPath = $OIPackageLocalPath } # Application, requires reboot. Allow reboot in meta config Package OI { Ensure = "Present" Path = $OIPackageLocalPath Name = "Microsoft Monitoring Agent" ProductId = "6D765BA4-C090-4C41-99AD-9DAF927E53A5" Arguments = '/Q /C:"setup.exe /qn ADD_OPINSIGHTS_WORKSPACE=1 OPINSIGHTS_WORKSPACE_ID=' + $OmsWorkspaceID + ' OPINSIGHTS_WORKSPACE_KEY=' + $OmsWorkspaceKey + ' AcceptEndUserLicenseAgreement=1"' DependsOn = "[xRemoteFile]OIPackage" } Service OIService { Name = "HealthService" State = "Running" DependsOn = "[Package]OI" } WaitForHybridRegistrationModule ModuleWait { IsSingleInstance = 'Yes' RetryIntervalSec = 3 RetryCount = 2 DependsOn = '[Package]OI' } HybridRunbookWorker Onboard { Ensure = 'Present' Endpoint = $AutomationEndpoint Token = $AutomationKey GroupName = 'Managed' DependsOn = '[WaitForHybridRegistrationModule]ModuleWait' } } } |