2017-04-20 8 views
0

Azure Automation DSCを使用したデプロイ用のdsc設定にpscredentialsを渡そうとしていますが、文書化された2つの方法では動作しません。Azure Automation DSC - DSC設定でのPSCredentialの使用

1)最初の方法は、dscに使用されている自動化アカウントに関連付けられている資格証明ストアにPSCredentialを追加できることを示しています。私が見つけることができるすべてのドキュメントは、紺碧の古典ポータルを参照し、資格情報のタイプを選択するように指示します。しかし、Azure Automationの管理機能は従来のポータルでは使用できなくなり、新しいポータルには新しい資格情報の「タイプ」ドロップダウンがなく、タイプは「Microsoft.Azure.Commands.Automation.Model.CredentialInfo」です。 - pscredentialタイプが持つgetnetworkcredential()メソッドがない(dsc config内からプレーンテキストパスワードを取得して、新しいユーザ[user dsc resource]を設定する必要がある)。私はここで何かを見逃しているのですか、または古典からオートメーション機能のための新しいポータルへの切り詰めを考えると、奇妙な状態のAzureです。また、Get-AutomationPSCredentialを使用して、新しいポータルに追加した資格情報を読み込み、暗黙的に型変換を行っているかどうかを確認しようとしましたが、どちらも機能しませんでした(その名前でオブジェクトが見つかりませんでした)。

2)ドキュメントでは、param()ブロックを追加し、パラメータとしてpscredentialsを指定すると、コンパイル時にこれらのパラメータが動的に設定されるため、ポータルからコンパイルするときに値を記入できるこれは起こらず、コンパイルジョブは 'param'を認識できず、終了例外をスローして停止します。

$configdata = @{ 
    AllNodes = @(
     @{ 
      NodeName = "samplenode" 
      PSDSCAllowPlainTextCredential = $true 
} 
) 
} 

configuration testconfig { 
    Import-DSCResource -ModuleName PSDesiredStateConfiguration 

    param (
     [pscredential]$cred 
    ) 

    Node $AllNodes.NodeName { 
     User testuser { 
     "blah blah blah" 
} 
} 
} 

任意の助けをいただければ幸いです、ありがとう:

のコードは次のようになります!

答えて

1

私はドキュメントとしてMSのケースを開くことになったgithubの上に誤解を招くかdowright間違っているのいずれかであった、と彼らはかなり詳細な応答と有用なガイダンスを提供しました...以下を参照してください:あなたがいない場合は、コマンドラインの場合

  1. を、これらは最高の記事がありますすでにそれらを見て: https://msdn.microsoft.com/en-us/powershell/dsc/configData https://msdn.microsoft.com/en-us/powershell/dsc/configdatacredentials https://docs.microsoft.com/en-us/azure/automation/automation-dsc-compile#credential-assets

  2. 資格の資産を取得する際に使用する正しいPowerShellコマンドがあります。Get-AutomationPSCredential私はいくつかの 追加説明がhelpfされるかもしれないところ、これがある疑いがありますul。

一つの決定的な違いがある:•のGet-AutomationPSCredentialが[なPSCredential]•は、Get-AzureAutomationCredentialは、型の値を返します タイプの 値[CredentialInfo]•は、Get-AzureRMAutomationCredential [CredentialInfoを返すタイプの 値を返します。 ]•[CredentialInfo] は[なPSCredential]

もう一つの違いは、さの代わりに使用することはできません。•GETは-AutomationPSCredentialは、コンパイル時に 資格を取得し、時間を実行していません。 •資格は、MOFコンパイラが認識していない•Azureの自動化は、MOF

を暗号化し、その したがって• PSDscAllowPlainTextPassword = $真の要件MOFにコンパイル あるもう一つの大きな違いは次のとおりです。•は、Get-AzureAutomationCredentialと GET- AzureRMAutomationCredentialは実行時に実行されます。 •したがって、 スクリプトは、使用する前にAzureにログインする必要があります。 •実際には があり、DSC設定でこれらのコマンドレットを使用する必要はありません。 •私は

それがうまくいくならば、それは一度だけ見て 試してみて、それがない(だけ 成功Azureのログイン後に)やった、これを言って、私は、Get-AzureRMAutomationCredentialは にあなたが参照され、Microsoftの記事を使用気づきませんでした。 https://github.com/Microsoft/azure-docs/blob/master/articles/automation/automation-dsc-compile.md#credential-assets

この記事は間違っていると設定はそのままである二つの理由 動作しません•クレデンシャルは、[なPSCredential]型の値を期待する(タイプの 値は[CredentialInfo]は動作しません)DSCの設定•記事の は、Azureのにログインしませんので、 は、Get-AzureRMAutomationCredentialは

は、私は、3つの異なるPowerShellは混乱するかもしれませんオートメーション資格資産を取得するためのコマンド ことを理解することができます失敗します。 で明解にもう1つのビットを追加できます。 •Get-AzureAutomationCredentialはAzureサービス管理APIを使用します (ASM)•Get-AzureRMAutomationCredentialはAzureリソースを使用します 管理API(ARM)•ASMは古いAzureポータルであるARM は新しいAzureポータル(Ibiza)に対応しています。•ASMはARM の前に来ており、下位互換性のために引き続きサポートされています。 • Get-AutomationPSCredentialがAutomation Runbooks用に作成されている• がAzure Automation DSCで動作する(ただしWindowsでは機能しません) PowerShell DSC•すべてのOrchestrator.AssetManagement.CmdletsもAzure Automation DSCの です。 左のウィンドウでコマンドレットを編集し、展開してください。• 以下の記事では、ランブックのコンテキスト でもこれらのコマンドレットについて説明しています。 https://azure.microsoft.com/en-us/blog/getting-started-with-azure-automation-automation-assets-2/

覚えておくべき重要なことは Orchestrator.AssetManagement.Cmdletsが排他的に自動化環境内で使用 のために(例えば、Runbookのか、DSC 構成)を意図している••他の場所で使用することはできないと動作しないということです対話型のPowerShellセッションで • は実行時ではなくコンパイル時に評価されます。• は実行可能コードではなく静的定義(MOF)にコンパイルされます。• 例外は、 実行時にPowerShellを実行するScriptリソースのみです。 https://msdn.microsoft.com/en-us/PowerShell/DSC/scriptResource

0

Azure Automation資格情報に移動し、資格情報オブジェクトを作成します。

は、構成データとパラメータを用意

Import-AzureRmAutomationDscConfiguration -SourcePath 'somepath' ` 

-ResourceGroupName $ ResourceGroupName -AutomationAccountName $ AutomationAccountName -Published -Force:

$ConfigurationData = @{ 
    AllNodes = @(
     @{ 
      NodeName = $nodeName 
      PSDscAllowPlainTextPassword = $true 
     } 
    ) 
} 

$Parameters = @{ 
    "nodeName" = $nodeName 
    "cred" = 'Azure Automation Credentials Name' 
} 

そして、それをコンパイルします。

Start-AzureRmAutomationDscCompilationJob -ResourceGroupName $ResourceGroupName -AutomationAccountName $AutomationAccountName ` 
-ConfigurationName 'anything' -Parameters $Parameters -ConfigurationData $ConfigurationData 
DSCの設定をアップロード
関連する問題