2016-12-12 10 views
1

クライアントではなく、人形サーバー上にあるSELinux .teファイルでコマンドを実行する方法を見つけようとしています私はpuppetforgeのpuppet-selinuxモジュールを使って.teファイルを.ppモジュールファイルにコンパイルするので、クライアントサーバには必要ありません。私が取得クライアントサーバー上でそれを実行しようとしたときPuppetサーバー上のクライアントではなく、ファイル上でBASHコマンドを実行する

class security::selinux_module { 

    exec { 'selinux_module_check': 
    command => "grep module selinux_module_source.te | awk '{print $3}' | sed 's/;//' > /tmp/selinux_module_check.txt", 
    source => 'puppet:///modules/security/selinux_module_source.te', 
    } 
} 

けれども:私の基本的な考え方は、のようなものである

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter source on Exec[selinux_module_check] at /etc/puppet/environments/master/security/manifests/selinux_module.pp:3 on node client.domain.com 
Warning: Not using cache on failed catalog 
Error: Could not retrieve catalog; skipping run 

この上の任意の助けをいただければ幸いです。

答えて

1

Puppetのgenerate()関数を使用すると、カタログのコンパイル中にコマンドを実行して出力を取り込むことができますが、特に問題のコマンドが高価な場合には、これはお勧めできません。結果の出力をクライアントに転送する場合は、クライアントに適切なものであることを確認することに注意を払う必要があります。サーバ。

私はコンパイルするpuppetforgeから人形のSELinuxモジュールを使用します(クライアント人形サーバーにあるSELinuxの.TEファイル上でコマンドを実行する方法を見つけようとしますが、ありませんよ。 TE .PPモジュールファイルにファイルなので、私は最も簡単な方法は、対話型シェルから、すべてのために一度、直接を必要なコマンドを実行するようになり、クライアント・サーバ

にそれを必要としない、とその結果を、エージェントがそれを得ることができるファイルに、Puppetなどを介して入れます。型強制ファイルが動的に生成された場合にのみ、buiを実行するたびにコンパイルするのは意味がありますカタログがあります。

しかし、selinuxポリシーファイルと必要なインストールスクリプトを含むパッケージ(RPM、DEBなど)を作成することをお勧めします。そのパッケージをあなたのローカルリポジトリに入れて、Packageリソース経由で管理してください。

+0

カタログのコンパイル時にマスター上で何かをしようとすると、その機能はかなり進んでいます。 'source'を' exec'で使用し、絶対的でない実行ファイルを 'exec'で使用しようとしたときの問題点について言及しているかどうか不明です。 –

関連する問題