2016-04-14 15 views
0

私は人形を使用するのが初めてで、マスターとエージェントのサーバーをセットアップしました。私は、エージェントサーバー上でPythonスクリプトを実行する方法を理解するのが難しいです。人形のpythonスクリプトの実行

私はクイックスタートガイドに従っており、回答を探していますが、明確な説明がありません。

現在、私のsite.ppがありますpythontestのマニフェストフォルダに

node default { 
    class { 'helloworld':} 
    class { 'helloworld::motd':} 
    include python 
    class { 'pythontest':} 
} 

init.ppがあります

class pythontest { 
    exec {'python etc/puppetlabs/code/environments/production/modules/pythontest/print.py': 
    require => File['etc/puppetlabs/code/environments/production/modules/pythontest/print.py'] 
    } 
} 

の両方がこれまで

のUbuntu 15.04を実行している、こんにちは、世界をが表示され、Pythonモジュールがインストールされます(https://forge.puppet.com/stankevich/python)。

私はエラーを取得する:私はちょうどexecを置くことができない

Error: Failed to apply catalog: Validation of Exec[etc/puppetlabs/code/environments/production/modules/pythontest/print.py] failed: 'etc/puppetlabs/code/environments/production/modules/pythontest/print.py' is not qualified and no path was specified. Please qualify the command or specify a path. at etc/puppetlabs/code/environments/production/pythontest/manifests/init.pp:2 

思う:pythonのパス名が、いくつかのGoogle検索は、そのメソッドを使用して、いくつかの人を見つけました。

答えて

-1

それを実感してください!

class pythontest { 
    file { '/etc/puppetlabs/code/environments/production/modules/pythontest/': 
    ensure => directory, 
    mode => '0755', 
    } 
    file { '/etc/puppetlabs/code/environments/production/modules/pythontest/print.py": 
    mode => '0644', 
    source => 'puppet:///modules/pythontest/print.py', 
    } 
    exec { 'pythontestprint': 
    path => '/usr/bin', 
    logoutput => true, 
    command => '/usr/bin/python /etc/puppetlabs/code/environments/production/modules/pythontest/print.py', 
    } 
} 

私は/ before/etcが見つかりませんでした。変更が行われ、最初の2つのファイルコマンドがディレクトリを作成し、source => puppet:///

を使用してファイルをコピーしました。最後に、私は人形エージェントにPythonがインストールされている場所を探して、コマンドとして/ usr/bin/pythonを使用します。

通知:/ステージ[メイン]/Pythontest/Exec [pythontestprint]/returns:successfully executed。

logoutput => trueを追加すると、私が期待していた出力が得られます。

1

より良いまだあなたの依存関係を指定するには:。また

class pythontest { 
    file { '/etc/puppetlabs/code/environments/production/modules/pythontest/': 
    ensure => directory, 
    mode => '0755', 
    } 
    file { '/etc/puppetlabs/code/environments/production/modules/pythontest/print.py': 
    mode => '0644', 
    source => 'puppet:///modules/pythontest/print.py', 
    } 
    exec { 'pythontestprint': 
    path => '/usr/bin', 
    command => '/usr/bin/python /etc/puppetlabs/code/environments/production/modules/pythontest/print.py', 
    require => File['/etc/puppetlabs/code/environments/production/modules/pythontest/print.py'], 
    } 
} 

は不明、なぜあなたは人形と/etc/puppetlabs/codeに(人形自身のファイルを管理しようとしている

+0

まあ、私はパペットする全く新たなんだとしようエージェント上でPythonスクリプトを実行するより良い方法はありますか?スクリプトをコピーして実行するとか、実行してもらうか、それとも別の場所に保存するのですか? – kckaiwei

+1

これを見て、コードをPuppet Masterに置いてください。Puppet自体は通常、/ etc/puppetlabsにあるファイルを管理するべきではありません。https://docs.puppet.com/pe/latest/cmgmt_managi ng_code.html –

+0

うん、それを手に入れた。うん、私が従ってきたチュートリアルの中には、Gitを使ってそれを引っ張ってきたものがあります。ここでは、このスクリプトを使用してテストする必要のあるpythonパッケージです。 gitと一緒に行く方が良いでしょうか、あるいはpipにpipをインストールするようにエージェントに指示するだけでいいですか? コードマネージャを調べて、使用する方が良いかどうかを確認します。ありがとう! – kckaiwei

関連する問題