2016-09-09 17 views
1

PuppetとHieraを使用してWindowsマシンでホストファイルを管理しようとしています。私の問題は、私が実際にHieraを使用したことがないことです。データコンテンツを適切なフォーマットに解析することに苦労しています。Puppetを使用してWindows上でhostsファイルを管理する

hieradata/hiera.yamlの関連するセクションは次のようになります。

myhosts : [ 
'host1 1.2.3.4', 
'host2 2.3.4.5', 
'host3 3.4.5.6'] 

は私がホストモ​​ジュールを使用するコードを持っているが、それはまた、私が持っていないクラスに依存するので、当然それは動作しません。 。

class hosts::module (
    $myhosts = hiera('myhosts'), 
) 
{ 
    define update_hosts { 

    $value = split($name,' ') 

    host { 
     "${value[0]}" : ip => "${value[1]}", 
    } 
    } 
    update_hosts { $myhosts :; } 
} 

私は、代わりにhostリソースのfileリソースを使用してみました、また、任意のクラスなしでそれをやってみましたが、何らかの理由で私は、このエラー

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: 
Server Error: Evaluation Error: Error while evaluating a Resource Statement, 
Evaluation Error: Error while evaluating a Resource Statement, Duplicate 
declaration: File[C:\Temp\tmp.txt] is already declared in file 
/etc/puppetlabs/code/environments/production/manifests/site.pp:4; cannot redeclare 
at /etc/puppetlabs/code/environments/production/manifests/site.pp:4 
at /etc/puppetlabs/code/environments/production/manifests/site.pp:4:1 
at /etc/puppetlabs/code/environments/production/manifests/site.pp:10 on node puppet-agent 

あなたが見ることができるように取得していています私は宣言が重複していると主張していますが、奇妙なのは同じ行に問題があると言います。何らかの理由で同じことを2回宣言していると考えています。

これは私が今持っているコード(私はそれが動作しません知っているが、エラーが本当に関連鳴りません)

define hosts_update($content) { 
    file { 'C:\Temp\tmp.txt' : 
    ensure => file, 
    content => $content, 
    } 
} 

hosts_update{ hiera('myhosts'): 
content => split($name," "), 
} 

この権利を行うにはどのように任意のアイデア?

+0

class update_hosts::host ( $hosts = hiera('hosts_list'), ) { update_host { $hosts :; } } 

init.pp大きなものは、あなたのYAMLデータとの両方パペットことですスニペットには構文エラーがあります。また、エラーメッセージはサイトマニフェストに関連しており、表示しているこのコードとは無関係ですので、代わりにそのコードを表示してください。 –

+0

これはコードです。 – Ori

+0

'site.pp'の中にクラスの中に定義を入れますか? –

答えて

0

を固定しました。最初は私に飛び出し

site.pp

include update_hosts 

host.pp

define update_host { 
​ 
    $value = split($name,' ') 
​ 
    host { 
       "${value[0]}" : ip => "${value[1]}", 
       target => "C:/Windows/System32/drivers/etc/hosts" 
     } 
} 
関連する問題