2017-12-28 10 views
0

mungeコールなどで類似のタイトル値を正規化する方法はありますか?カスタムタイプ/プロバイダーの大文字と小文字を区別しないタイトル

は、私はWindowsマシン上のローカルグループメンバーシップを管理するカスタムタイプ/プロバイダを持っている(私たちは、ユーザー/グループタイプの内部よりも、グループメンバーシップをより精度を必要としていました。すべてがある。一般に

group_member{"Group => Member": 
    ensure=>present, 
} 

group_member{"Group => DOMAIN\Member": 
    ensure=>present, 
} 

resources{'group_member': 
    purge =>true, 
} 

、したがって、self.instancesが呼び出されると、リソースGroup_member["Users => DOMAIN\SomeGroup"]が生成されますが、私たちの人形マニフェストではUsersがハードコードされており、DOMAINは事実に由来し、SomeGroupヒエラの値に由来します。

私たちはこれについて約5年間、人形の大文字と小文字を区別して戦ってきました。ほとんどの管理者は、ドメインとyamlの構成の大文字と小文字の区別に慣れてきました。

今、新しい問題があります...何とかDOMAINがうんざりしています。新しいテストドメインでは、NETBIOS名は小文字です。 DOMAINを返すという事実は依然として大文字を返しますが、Windows ADSIは小文字のフォームを返しています。 resources{'group_member': purge=>true}を使用していない場合、これは問題にはなりませんが、このテスト環境では、各パペットを実行するごとにグループが追加され(それぞれの.ppファイルを通じて)、削除されます(resources{'group_member': purge=>true})。

理想的には、self.instancesと.ppファイルのすべてを小文字に正規化したいのですが、私たちは400個の人形モジュールを持っており、かなり異なるチームによって管理されるgroup_memberを120回使用します。私がちょうどmungeというタイトルのメタパラメータしかできないのであれば、はるかに簡単です。

提案がありますか?

+1

私はリソース*タイトル*を傍受したり変更したりする手段がないことに気づいていませんが、あなたのタイプの* namevar *に対してmungingを設定できると思います。明示的に表現するのではなく、namevarがリソースタイトルから自動的にその値を取得したときに、実際に発生していることを確認する必要があります。この仕組みがあなたのリソースをパージから守ることを確認したいと思うでしょう - 私はそれが正しければそれが行われると思っていますが、以前はそれをやっていません。 –

+0

@JohnBollinger私はnamevarの一部として2つのパラメータを使用していますが、それらを試してみましたが、タイトルは元の文字列値pre-title_patternを保持しています。 – ruckc

+0

実際には、カスタムタイプの 'namevar'コードに焦点を当てるべきです。 Mungingは型コードで確実にサポートされており、例を見てきました。これは、ここで適用しようとしているダクトテープアプローチに大きく役立ちます。しかし、カスタムタイプとカスタムファクトコードについてここで説明したことは本当に不審なものがいくつかあります。これらのコメントはどちらも、あいまいな説明ではなく、関連するコードを見て、さらなる支援を必要としています。 NDAに懸念がある場合は、最初にそれを浄化してください。 –

答えて

0

これを処理する方法は、既存の型/プロバイダの名前を変更し、それをtitleのdowncaseである定義型にラップすることです。

関連する問題