パペットを使用してすべてのクライアントにファイルをコピーするにはどうすればよいですか?パペットサーバーとクライアントをセットアップし、正常に機能する接続をテストしました。私は操り人形の専門家ではなく、単なる初心者です。操り人形サーバーからすべてのクライアントにファイルをコピーする方法を知りたいだけです。ファイルを削除する方法も知りたいですか?
Puppet File Server
このガイドでは、Puppetのファイルサービス機能の使用について説明します。
Puppet masterサービスには、静的ファイルを転送するためのファイルサーバーが含まれています。ファイルリソース宣言のソース属性にpuppet:URIが含まれている場合、ノードはマスターのファイルサーバーからそのファイルを取得します。
#リモートファイルを/etc/sudoers file {"/etc/sudoers": mode => 440、 owner => root、 group => root、 source => "puppet:/// modules/module_name/sudoers" }
すべてのパペットファイルサーバーURIは、次のように構成されています。
puppet://{server hostname (optional)}/{mount point}/{remainder of path}
サーバーのホスト名が省略された場合(つまり、puppet:///{mount point}/{path}
;トリプルスラッシュに注意してください)、URIは、評価ノードがそのマスターと見なすサーバーに解決されます。これにより、マニフェストコードの移植性と再利用性が向上するため、可能な限りホスト名を省略してください。
残りのpuppet:URIは、ファイルがmodule
で提供されるか、custom mount point
で公開されるかによって、2つの方法のいずれかでサーバーのファイルシステムにマッピングされます。
モジュールファイルの提供
ファイルサービスの大部分はモジュールを介して実行する必要があるため、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 *
クライアントclient1.example.comからのファイル/private/file.txt
のリクエストはファイル/data/private/client1/file.txt
を探しますが、client2.example.com
からの同じリクエストはファイル/ data/private/client2 /を取得しようとしますファイルサーバー上のfile.txt。
現在、パスに末尾のスラッシュを含めることはできません。そうしないと、エラーが発生します。また、puppet.conf
では、末尾にスラッシュがあるディレクトリの場所を指定していないことに注意してください。
セキュリティ
Puppetファイルサーバーのセキュリティ保護は、マウントポイントごとに(さまざまなレベルの特異性で)アクセスを許可および拒否することで構成されます。ノードのグループは、IPアドレス、名前、または単一のグローバルワイルドカード(*)の3つの方法で許可または拒否のために識別できます。カスタムマウントポイントは、デフォルトですべてのアクセスを拒否します。
カスタムマウントポイントに加えて、fileserver.conf
で管理できる2つの特別なマウントポイントがあります:modules
とplugins
。これらのマウントポイントには、パスオプションを指定しないでください。モジュールマウントポイントの動作は、上記のカスタムマウントポイントからのファイルの提供で説明されています。プラグインのマウントは真のマウントポイントではなく、fileserver.confがPuppet Masterからのプラグインの同期を許可するノードを指定できるようにするフックです。これらのマウントポイントは両方ともデフォルトで存在し、両方ともデフォルトですべてのアクセスを許可します。これらの特別なマウントのいずれかにallowまたはdenyディレクティブが設定されている場合、そのセキュリティ設定は通常のマウントと同様に動作します(つまり、デフォルトですべてのアクセスを拒否します)。これらは、deny *が冗長ではない唯一のマウントポイントであることに注意してください。
ノードがPuppetファイルサーバーに直接接続していない場合、たとえばリバースプロキシとMongrelを使用すると(Mongrelの使用を参照)、ファイルサーバーはすべての接続をPuppet AgentノードではなくプロキシサーバーのIPアドレスからのものとして認識します。この場合、ホスト名に基づいてアクセスを制限することをお勧めします。さらに、リバースプロキシ(通常は127.0.0.0/8)として機能するマシンは、適切なマウントポイントにアクセスできる必要があります。
優先度
より具体的な拒否および許可ステートメントは、特定度の低いステートメントよりも優先されます。つまり、node.domain.comのallowステートメントは、*。domain.comのdenyステートメントにもかかわらず接続を許可します。特定のレベルの特異性では、拒否ステートメントは許可ステートメントよりも優先されます。
IPアドレスディレクティブとホスト名およびドメイン名ディレクティブを混在させると、予期しない動作が発生する可能性があるため、それを避けてください。 (現在、node.domain.comのIPアドレスが192.168.1.80で、fileserver.confにallow 192.168.1.80とdeny 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 *と同等であることに注意してください。