2017-10-24 7 views
0

私のノード上のファイル/home/user_name/scripts/file0/home/user_name/scripts/file1、...をマスターの同じパスを持つファイルのコピーとして管理したいのですが。実際、各ノード上で作成したディレクトリを取得します人形のコピーディレクトリですが、その内容はありません

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    path => '/home/user_name/scripts', 
    recurse => true 
} 

を、その内容file0file1、...:

/home/user_nameに依存するすべてのノード上に存在することが、私はマニフェストでこれを置きますコピーされません。

sourceパラメータを追加しようとしましたが、それでもrecurse=>remoteを追加しようとしましたが、これ以上成功しませんでした。

更新は:sourceパラメータを追加しようとすると、私が追加:

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    path => '/home/user_name/scripts', 
    recurse => true, 
    source => '/home/user_name/scripts' 
} 

しかし、誰成功を収めました。 puppet apply

Notice: Compiled catalog for puppet, master_dns in environment production in 0.64 seconds 
Notice: /Stage[main]/Exec_script/Exec[add_archi]/returns: executed successfully 
Notice: Applied catalog in 2.60 seconds 
+0

は、我々は 'source'と実際のリソースは、あなたが関連outpuだけでなく、追加したことを主張する属性を参照できますカタログの適用中にエージェントから削除します。 –

+0

@MattSchuchard私は自分の投稿を編集したばかりです – user2478159

+1

'source'属性が疑わしいと思われます。これを見てみましょう:https://puppet.com/docs/puppet/5.2/types/file.html#file-attribute-source。また、そのエージェント出力には 'file'もありません。 –

答えて

2

@MattSchuchardはすでにthe relevant documentationを指しています。 Puppetはsourceの形式の4つの選択肢をサポートしており、使用しようとしている形式はローカルのファイルを管理対象のファイルのソースとして使用していると説明しています。つまり、構成中のノードに対してローカルです。

マスターに存在するファイルをソースとして使用し、クライアントから直接アクセスできない場合(ネットワークファイルシステムなど)は、2つの選択肢が残っています。puppet:またはhttp:スキーム。マスターでHTTPサーバーを実行しない限り、実際にはpuppet: URIのみが実行可能なオプションです。

ただし、既定では、Puppetのファイルサーバーは、任意のパスからではなく、モジュールからのみファイルを処理します。そして、なぜあなたはにマスターのファイルシステムから任意のファイルを提供したいのですか?災害のためのレシピ。とにかく、一般ユーザーがマスターのホームディレクトリを必要とするのはなぜですか?

あなたのfileリソースに表示されるモジュールにディレクトリツリーを置くのが最善の解決策です。たとえば、mymodule/files/user_name/scriptsです。そして、あなたはそうのようなあなたのリソースを書くことができ:

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    recurse => true, 
    source => 'puppet://modules/mymodule/user_name/scripts' 
} 

しかし、あなたが主張するならば、あなたは彼らが今しているソースファイルを残すことができ、かつシンボリックリンクと一緒にパッチを適用する必要があります

mymodule/files/user_name-scripts -> /home/user_name/scripts 

...と...

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    recurse => true, 
    source => 'puppet://modules/mymodule/user_name-scripts', 
    links => 'follow' 
} 
+0

応答ありがとう!私は既に 'puppet' URIを実装しましたが、シンボリックリンクは使用していませんでした;)今私は設計によってこれを行う方法がないことを知っています – user2478159

1

を実行するときにところで、ここでの出力がソースを提供つまり、あなたは人形のファイルをコピーする場合は、ファイルがからをコピーする必要がどこにそれを伝える必要があります属性:

file {'/my/path': 
    ensure => 'directory', 
    path => '/my/path', 
    recurse => true, 
    source => '/home/user_name/scripts', 
    } 

これが作成するディレクトリ/私の/パスを開き、ノードのローカルディレクトリ/home/user_name/scriptsから/my/pathにあるすべてのファイルとディレクトリを再帰的にコピーします。

+0

もちろんこれは私がやったことです!成功していないと – user2478159

関連する問題