web-dev-qa-db-ja.com

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

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

8
karthick87

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は次のことを行います。

  • パスの次のセグメントをモジュールの名前として解釈します…
  • ...サーバーのモジュールパスでそのモジュールを見つけます(「モジュール検索」で説明します)...
  • ...そして、そのモジュールの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 *

クライアント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つの特別なマウントポイントがあります:modulesplugins。これらのマウントポイントには、パスオプションを指定しないでください。モジュールマウントポイントの動作は、上記のカスタムマウントポイントからのファイルの提供で説明されています。プラグインのマウントは真のマウントポイントではなく、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 *と同等であることに注意してください。

8
Rinzwind