2016-08-18 5 views
0

dsc_authenticationinfo => {"Anonymous"=>false, "Basic"=>false, "Digest"=>false, "Windows"=>true},を取得しようとしています。could not evaluateエラーです。このプロパティはdsc_xwebsite {}の内部にあります。パペットDSCモジュール:評価できませんでした:タイプ 'INSTANCE []'からタイプ 'INSTANCE'にプロパティ 'authenticationinfo'の値を変換できませんでした

dsc_xwebsite{$app_dns_name: 
    dsc_ensure     => 'Present', 
    dsc_name      => $app_dns_name, 
    dsc_state      => 'Started', 
    dsc_physicalpath    => $app_webroot_path, 
    dsc_applicationpool   => $app_pool_name, 
    dsc_bindinginfo    => [{ 
    protocol => 'HTTP', 
    port  => 80, 
    hostname => $app_dns_name, 
    }], 
    dsc_authenticationinfo => {"Anonymous"=>true, "Basic"=>true, "Digest"=>true, "Windows"=>true}, 
} 

Windows 2012 R2のホストで次のエラーが表示されます。

Error: /Stage[main]/Profiles::Iis_tools/Dsc_xwebsite[tools-dev.domain.com]: Could not evaluate: Convert property 'authenticationinfo' value from type 'INSTANCE[]' to type 'INSTANCE' failed 
At line:31, char:2 
Buffer: 
ls-dev.domain.com"; 
};^ 

insta 
+0

私は間違った方向に潜んでいました。あなたの '$ app_dns_name'は文字列として渡されますか? '$ app_dns_name = ls-dev.domain.com'ではなく' $ app_dns_name = 'ls-dev.domain.com'のようにする必要があります。あなたの 'dsc_bindinginfo'はおそらく' dsc_xwebsite'型のソースコードに従ったハッシュの配列ではなく、ハッシュです。 –

+0

いいえ、ls-dev.domain.comではありません。それはtools-dev.domain.comとされていますが、何らかの理由でエラーメッセージが 'あまりにも'消えてしまいます。 Puppetは$ app_dns_nameをhieraルックアップを介して文字列として返します。他のものが変数を適切に使用しているので、ルックアップが適切に行われているとはかなり確信しています。 – FuriousD

答えて

0

をこれは、MicrosoftのDSCコード上の1)ドキュメントの問題でした。 2)puppetlabs \ dscモジュールでの不適切な実装。 MSのドキュメントは修正され、DSCモジュールはバージョン1.2.0で修正されました。

0

私はそう

dsc_authenticationinfo => 
    {"Anonymous"=>true, "Basic"=>true, "Digest"=>true, "Windows"=>true}, 

、あなたの認証コードがより多くのあなたのバインドコードのようにフォーマットする必要がありますようにそれはそう、人形の構文に慣れていないんだけど、下記のいくつかの作業DSCのお人形のコードを比較します次のようになります。しかし

dsc_authenticationinfo => 
    {dsc_anonymous => true, dsc_basic => true, dsc_digest => true, dsc_windows => true}, 

、あなたのエラーメッセージ:

を「 タイプ 『INSTANCE』に 『[] INSTANCE』タイプから値 『authenticationinfo』プロパティの変換に失敗しました」とは、単一のauthenticationinfoが予想されるときに配列を渡しているを示していますか?あなたのdsc_authenticationinfoの値は、私にとって正しいと思われる大括弧ではありません。あなたが掲示したコードとエラーメッセージがちょうど同期していないことを願っています。上記のコードの変更はあなたの問題を解決します。

参考として、これは有効なDSCコードです。 AuthenticationInfoは、単一のインスタンスである間、およびBindingInfoが1の配列であることに注意してください:

xWebSite DefaultWebSite_Site 
    { 
     Name = "Default Web Site" 
     Ensure = "Present" 
     State = "Started" 
     ApplicationPool = "DefaultAppPool" 
     PhysicalPath = "%SystemDrive%\inetpub\wwwroot" # must already exist 
     LogPath = "D:\IISLogs" 
     DependsOn = "[xWebAppPool]DefaultAppPool_Pool" 
     BindingInfo = 
       @(
         MSFT_xWebBindingInformation 
         { 
          Protocol = "http" 
          Port = "80" 
          IPAddress = "*" 
         } 
       ) 
     AuthenticationInfo = 
       MSFT_xWebAuthenticationInformation 
       { 
         Anonymous = $true 
         Basic = $false 
         Digest = $false 
         Windows = $false 
       } 
    } 
+0

ありがとうKevin。残念ながら、私はそれを認証プロパティの周りに引用符をつけずに、大括弧をつけても使わずに試してみましたが、それを人形の中で動かすことはできません。 その構文をありがとう。それはDSCで動作しました。これが人形のモジュールのバグかどうかはわかりません。 – FuriousD

+0

xwebadministrationのgithubのドキュメントには、bindinginfoとauthenticationinfoの両方が配列であると予想されています。 – FuriousD

+0

FWIW、私はDSCのドキュメントがAuthenticationInfoが配列であると言うのは間違っていると思います。 31行目と34行目の[source](https://github.com/PowerShell/xWebAdministration/blob/dev/DSCResources/MSFT_xWebsite/MSFT_xWebsite.schema.mof)を見ると、BindingInfo []タイプとAuthenticationInfoタイプは表示されませんブラケット。私はドキュメンテーションについて彼らに問題を提起します。 – KevinC

関連する問題