パペットを使用してすべてのクライアントにファイルをコピーする方法は?


8

パペットを使用してすべてのクライアントにファイルをコピーするにはどうすればよいですか?パペットサーバーとクライアントをセットアップし、正常に機能していた接続をテストしました。私は人形の専門家ではなく、単なる初心者であり、人形サーバーからすべてのクライアントにファイルをコピーする方法を知りたいだけですか?ファイルを削除する方法も知りたいですか?


1
Jorge in chat:docs.puppetlabs.com/guides/file_serving.htmlリンクを回答としてコピーしました。
Rinzwind

回答:


8

Puppetファイルサーバー

このガイドでは、Puppetのファイルサービス機能の使用について説明します。


Puppetマスターサービスには、静的ファイルを転送するためのファイルサーバーが含まれています。ファイルリソース宣言のソース属性にpuppet:URIが含まれている場合、ノードはマスターのファイルサーバーからそのファイルを取得します。

#リモートファイルを/ etc / sudoersにコピー
ファイル{"/ etc / sudoers":
    モード=> 440、
    所有者=>ルート、
    グループ=>ルート、
    ソース=> "puppet:/// modules / module_name / sudoers"
}

すべてのPuppetファイルサーバーURIは次のように構成されています。

puppet://{server hostname (optional)}/{mount point}/{remainder of path}

サーバーのホスト名が省略されている場合(つまりpuppet:///{mount point}/{path}、トリプルスラッシュに注意)、URIは、評価ノードがマスターであると見なしたサーバーに解決されます。これにより、マニフェストコードの移植性と再利用性が高まるため、可能な限りホスト名は省略してください。

puppet:URIの残りの部分は、ファイルがによって提供されるmoduleか、またはを通じて公開されるかに応じて、2つの方法のいずれかでサーバーのファイルシステムにマップされますcustom mount point

モジュールファイルの提供

ファイルサービスの大部分はモジュールを介して行われる必要があるため、Puppetファイルサーバーは、モジュールと呼ばれる特別でセミマジカルなマウントポイントを提供します。これはデフォルトで使用可能です。URIのマウントポイントがモジュールの場合、Puppetは次のことを行います。

  • パスの次のセグメントをモジュールの名前として解釈…
  • ...サーバーのモジュールパスでそのモジュールを見つけます(ここで「モジュール検索」で説明されています)...
  • ...そして、そのモジュールのfiles /ディレクトリで始まるパスの残りを解決します。
  • つまり、test_moduleという名前のモジュールが中央サーバーの/etc/puppet/modulesディレクトリにインストールされている場合、次のパペット:URI ...

    puppet:///modules/test_module/testfile.txt
    

    ...次の絶対パスに解決されます:

    /etc/puppet/modules/test_module/files/testfile.txt
    

    場合test_moduleにインストールされていた/usr/share/puppet/modules、同じURIが代わりに解決します:

    /usr/share/puppet/modules/test_module/files/testfile.txt
    

モジュールのマウントポイントを使用するために追加の構成は必要ありませんが、[modules]構成ブロックを追加することで、一部のアクセス制御をファイルサーバー構成で指定できます。セキュリティを参照してください。

カスタムマウントポイントからのファイルの提供

Puppetは、サーバーのファイルサーバー構成で指定された任意のマウントポイントからファイルを提供することもできます(以下を参照)。カスタムマウントポイントからファイルを提供する場合、Puppetはモジュールマウントで使用される追加のURI抽象化を実行せず、マウント名に続くパスを単純なディレクトリ構造として解決します。

ファイルサーバー構成

ファイルサーバーの構成データのデフォルトの場所は/etc/puppet/fileserver.confです。これは、--fsconfigフラグをパペットマスターに渡すことで変更できます。

fileserver.confファイルの形式はとほぼ同じでrsync、INIファイルとほぼ同じです。

[mount_point]
    path /path/to/files
    allow *.domain.com
    deny *.wireless.domain.com

現在、特定のマウントポイントに次のオプションを指定できます。

  • ディスク上のマウントの場所へのパス
  • 任意の数の許可ディレクティブ
  • 任意の数の拒否ディレクティブ

pathは唯一の必須オプションですが、デフォルトのセキュリティ構成はすべてのアクセスを拒否することなので、allowディレクティブのないマウントポイントはどのノードでも使用できません。

パスは、のいずれかまたは全てを含むことができ%h%Hおよび%d動的にそれぞれのクライアントのホスト名、完全修飾ドメイン名とそのドメイン名に置き換えています。すべてがクライアントのSSL証明書から取得されます(ホスト名/証明書名の不一致がある場合は注意してください)。これは、プライベートsshホストキーなど、各クライアントのファイルが完全に個別に保持されるモジュールの作成に役立ちます。たとえば、構成

[private]
   path /data/private/%h
   allow *

/private/file.txtクライアントclient1.example.comからのファイルの要求はファイルを探しますが/data/private/client1/file.txt、からの同じ要求client2.example.comはファイルサーバー上のファイル/data/private/client2/file.txtを取得しようとします。

現在、パスに末尾のスラッシュを含めることはできません。そうしないと、エラーが発生します。また、puppet.conf末尾にスラッシュがあるディレクトリの場所を指定しないように注意してください。

安全保障

Puppetファイルサーバーのセキュリティ保護は、マウントポイントごとに(さまざまなレベルの詳細度で)アクセスを許可および拒否することで構成されます。ノードのグループは、IPアドレス、名前、または単一のグローバルワイルドカード(*)の3つの方法で、許可または拒否の対象として識別できます。カスタムマウントポイントは、デフォルトですべてのアクセスを拒否します。

カスタムマウントポイントに加えて、fileserver.confmodulesとで管理できる2つの特別なマウントポイントがありpluginsます。これらのマウントポイントには、パスオプションを指定しないでください。モジュールのマウントポイントの動作については、上記の「カスタムマウントポイントからのファイルの提供」で説明しています。プラグインのマウントは真のマウントポイントではなく、Puppetマスターからのプラグインの同期を許可するノードをfileserver.confが指定できるようにするフックです。これらのマウントポイントは両方ともデフォルトで存在し、デフォルトですべてのアクセスを許可します。これらの特別なマウントのいずれかに許可または拒否のディレクティブが設定されている場合、そのセキュリティ設定は通常のマウントと同じように動作します(つまり、デフォルトですべてのアクセスを拒否します)。これらは、deny *が冗長でない唯一のマウントポイントであることに注意してください。

ノードがPuppetファイルサーバーに直接接続していない場合、たとえばリバースプロキシやMongrelを使用している場合(Mongrelの使用を参照)、ファイルサーバーはすべての接続をPuppet AgentノードのIPアドレスではなくプロキシサーバーのIPアドレスからのものとして認識します。 。この場合、ホスト名に基づいてアクセスを制限するのが最善です。さらに、リバースプロキシとして機能するマシン(通常は127.0.0.0/8)が、該当するマウントポイントにアクセスできるようにする必要があります。

優先

より具体的な拒否と許可のステートメントは、具体性の低いステートメントよりも優先されます。つまり、node.domain.comの許可ステートメントは、*。domain.comの拒否ステートメントにもかかわらず、接続を許可します。特定のレベルの特定性では、拒否ステートメントが許可ステートメントよりも優先されます。

IPアドレスディレクティブとホスト名およびドメイン名のディレクティブを混在させると、予期しない動作が発生する可能性があるため、そうしないようにしてください。(現在、node.domain.comのIPアドレスが192.168.1.80で、fileserver.confに許可192.168.1.80と拒否node.domain.comが含まれている場合、IPベースの許可ディレクティブが実際に優先されます。この動作は、将来に依存するべきではありません。)

ホスト名

ホスト名は、完全なホスト名を使用するか、*ワイルドカードを使用してドメイン全体を指定するかのいずれかで指定できます。

[export]
    path /export
    allow host.domain1.com
    allow *.domain2.com
    deny badhost.domain2.com

IPアドレス

IPアドレスは、完全なIPアドレスまたはワイルドカードアドレスを使用して、ホスト名と同様に指定できます。CIDRスタイルの表記を使用することもできます。

[export]
    path /export
    allow 127.0.0.1
    allow 192.168.0.*
    allow 192.168.1.0/24

グローバル許可

単一のワイルドカードを指定すると、すべてのノードがマウントポイントにアクセスできます。

[export]
    path /export
    allow *

カスタムマウントポイントのデフォルトの動作はdeny *と同等であることに注意してください。


こんにちは@Rinzwindあなたが私が望むものに正確な答えを追加するといいでしょう。
karthick87 2011

Jorge /この回答からのリンクは、これを実行するための開始であり、「人形を使用してすべてのクライアントにファイルをコピーするにはどうすればよいですか?」という質問に答えます。考慮すべきセキュリティを含めます。欠けているのは、ファイルを削除する方法だけです。私はそれを含めます(この回答の最後のビットは、安全にそれを実行することについての詳細ですが、おそらくそれを削除する方が良いかもしれません)。
Rinzwind 2009

マニフェストファイルを編集しますか?上記の行を入力しますか?
karthick87 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.