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
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/
このモジュールをすべてのノードに適用する方法は?ファイルがすべてのノードにコピーされるように。
Puppetは頭を動かすのにちょっとした怪物なので、例によって学ぶことは悪いことではありません。以下では、モジュールを使用していると仮定しています-そうでない場合、またはモジュールを組み立てる方法についての詳細が必要な場合は、コメントで言ってください。
mymodule
という新しいモジュールを開始するとします。パペットマスターのパペットホームディレクトリ(通常は/etc/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 には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=no
をSTART=yes
に変更します。
また、/etc/puppet/puppet.conf
を編集し、[main]
セクションに行を追加して、パペットマスターの検索場所を指定します。
server=puppet.mydomain.com
その後、Sudo puppetd --test
を使用してテストを実行できます。キーエラーが発生した場合は、Puppetマスターサーバーに進み、クライアントキーに署名する必要があります。正確な名前を確認するには、Sudo puppetca --list
を実行してからSudo puppetca --sign server1.mydomain.com
(またはlistコマンドで指定されたサーバー名)を実行します。
Sudo service puppet start
でパペットサービスを開始すると、すぐに離れます。パペットサービスは1時間ごとに実行されるため、パペットレシピを更新すると、すべてのクライアントも更新されます。
元の質問で、ファイルを削除する方法を知りたいと思いました。 manifests/init.pp
を編集して
file { "/home/operator1/Desktop/Backup/datas.xls":
ensure => absent,
}
問題がある場合は、いくつかの方法があります。 puppetがインストールされているマシンでは、次を実行して構文を確認できます。
puppet --parseonly --ignoreimport myfile.pp
または--ignoreimport
フラグを削除して全体を確認しますが、実際にはエラーではない面白いエラーメッセージが表示される可能性があります。以下を実行することで、puppetクライアントマシンでpuppetをライブで実行することもできます。
Sudo puppetd --test
さまざまな有用な出力が表示され、エラーと警告が異なる色で強調表示されます。さらに詳細が必要な場合は、次を実行できます。
Sudo puppetd --test --debug
しかし、それは一般的に非常に多くの出力を生成するので、通り抜けるのは難しいので、前のステップをすでに試したがスタックしており、すべてが行われていることを確認する必要がある場合にのみ行ってください。
これは、現在仕事で使用しているpuppet 0.25.xに基づいており、Ubuntu 10.04のバージョンでもあることに注意してください。メインセクションのパペットコードは間違いなく機能しますが、パペットの新しいバージョンには出力のデバッグに役立つ新しいフラグがあります。