パペットマスターを使用してすべてのマシンにファイルをコピーする方法は?


12

puppetmasterをubuntu 11.04にインストールし、puppetをすべてのクライアントにインストールしました。私はすべてのパペットクライアントにパペットマスターを参加させました。パペットマスターからこれらすべてのパペットクライアントにファイルをコピーすることは可能ですか?

例えば:

デスクトップ(Puppetマスター)にdatas.xlsという名前のファイルがあります。このファイルを次の場所(/ home / operator1 / Desktop / Backup /)にあるすべてのパペットクライアントにコピーするにはどうすればよいですか?

更新:

  • こんにちは、まだファイルは共有されていません。
  • この行を変更するにpuppet:///modules/module_name/datas.xlsは、コピーするファイルはこの場所にあり/etc/puppet/modules/mymodule/manifests/datas.xlsますか?

クライアントのエラー:(解決済み)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

クライアントのエラー2:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

新しいアップデート:

このモジュールをすべてのノードに適用する方法は?ファイルがすべてのノードにコピーされるようにします。


...しかし、あなたはすでにこの質問をしませんでしたか?askubuntu.com/questions/61080/...
fossfreedom

はい。ただし、ソリューションはもう機能していません。
karthick87

また、あまり明確ではないため、ユーザーは一部のWebサイトからコンテンツをコピーしただけです。
karthick87

まだ新しい質問をする理由ではありません(?)
リンツウィンド

ここで別の参照があります:serverfault.com/questions/200101/...
Rinzwind

回答:


24

Puppetは頭を動かすのにちょっとした怪物なので、例によって学ぶことは悪いことではありません。以下では、モジュールを使用していると仮定しています-そうでない場合、またはモジュールを組み立てる方法についての詳細が必要な場合は、コメントで言ってください。

という新しいモジュールを開始するとしましょうmymodule/etc/puppetpuppetマスターのpuppetホームディレクトリ(通常)で、モジュールマニフェストとファイルディレクトリを作成する必要があります。

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

次に、そのディレクトリにファイルを作成し、次のinit.ppように入力します。

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

次に入れdatas.xlsモジュールのにファイルをfilesディレクトリ-この例ではmodules/mymodule/files/。(テンプレートtemplates用のディレクトリも存在することに注意してください)。

manifests/site.ppファイルあなたのような何かをすることによって、モジュールをインポートし、クラスを含める必要があります。

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

すべてのノードがbaseから継承していることを確認してください。puppet 0.25の時点では、ノード名に正規表現を使用できます。例:

node server[0-9] inherits base {}

さらに説明が必要な場合は、コメントでお知らせください。

操り人形マスターと会話するためのクライアントのセットアップ

クライアントでは、次のことを行う必要があります。

sudo apt-get install puppet

次に、編集/etc/default/puppetしてに変更START=noSTART=yesます。

また/etc/puppet/puppet.conf[main]セクションに行を編集して追加し、パペットマスターの場所を指定します。

server=puppet.mydomain.com

その後、を使用してテストを実行できますsudo puppetd --test。キーエラーが発生した場合は、Puppetマスターサーバーに進み、クライアントキーに署名する必要があります。正確な名前を確認するにはsudo puppetca --list、それからsudo puppetca --sign server1.mydomain.com(またはlistコマンドで指定されたサーバー名)を実行します。

ここでpuppetサービスを開始するとsudo service puppet start、離れます。パペットサービスは1時間ごとに実行されるため、パペットレシピを更新すると、すべてのクライアントも更新されます。

ファイルを削除する

元の質問で、ファイルを削除する方法を知りたいと思いました。に編集manifests/init.ppします

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

その他の便利なヒント

問題が発生している場合、いくつかの方法があります。puppetがインストールされているマシンでは、次を実行して構文を確認できます。

puppet --parseonly --ignoreimport myfile.pp

または、--ignoreimportフラグを削除して全体を確認しますが、実際にはエラーではない面白いエラーメッセージが表示される場合があります。また、次を実行することにより、パペットクライアントマシンでパペットをライブで実行できます。

sudo puppetd --test

さまざまな有用な出力を示し、エラーと警告が異なる色で強調表示されます。さらに詳細が必要な場合は、次を実行できます。

sudo puppetd --test --debug

しかし、それは一般に非常に多くの出力を生成するので、通り抜けるのは難しいので、前のステップをすでに試していて立ち往生していて、すべてが行われていることを確認する必要がある場合にのみ行ってください。

これは、現在仕事で使用しているpuppet 0.25.xに基づいており、Ubuntu 10.04のバージョンでもあることに注意してください。メインセクションのパペットコードは間違いなく機能しますが、パペットの新しいバージョンには出力のデバッグに役立つ新しいフラグがあります。


今夜、この解決策を試して、更新をお知らせください。
どうも

この行を変更する方法puppet:///modules/module_name/datas.xlsは、コピーするファイルがこの場所の下にある/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87

コピーするファイルを配置する必要があり/etc/puppet/modules/mymodule/files/datas.xlsます-それについてより明確になるように回答を更新します。
ハミッシュダウナー

有難うございます。マニフェストを実行する方法は?
karthick87

このモジュールをpuppetmasterのすべてのノードに適用する方法は?実行してすべてのノードに強制的に適用する代わりにpuppet agent --test
-karthick87
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.