パペットを使用してすべてのクライアントにファイルをコピーするにはどうすればよいですか?パペットサーバーとクライアントをセットアップし、正常に機能していた接続をテストしました。私は人形の専門家ではなく、単なる初心者であり、人形サーバーからすべてのクライアントにファイルをコピーする方法を知りたいだけですか?ファイルを削除する方法も知りたいですか?
パペットを使用してすべてのクライアントにファイルをコピーするにはどうすればよいですか?パペットサーバーとクライアントをセットアップし、正常に機能していた接続をテストしました。私は人形の専門家ではなく、単なる初心者であり、人形サーバーからすべてのクライアントにファイルをコピーする方法を知りたいだけですか?ファイルを削除する方法も知りたいですか?
回答:
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は次のことを行います。
つまり、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.conf
:modules
とで管理できる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 *と同等であることに注意してください。