puppetについて

4095 ワード

推薦書
Pro puppet
我慢できない
Puppet Cookbookのレイアウト
ここにもっといいものがある
Puppet Cookbook
1.基本概念
puppetはCS構造の構成管理ツールでありrubyで開発された.
サーバ側のSとしてpuppetの用語をmasterと呼ぶ
クライアントであるC,puppetの用語をagentと呼ぶ
各マシンで行われる構成、puppet用語はconfigurationと呼ばれます
1.1 ubuntuでの起動
puppet masterを起動します.
master# service puppetmaster start
デバッグを容易にするために、masterがコンソールにログを直接出力することもできます.
puppet master --verbose --no-daemonize
puppet agentの起動:
/etc/default/puppetプロファイルを変更し、自動的にランダムに起動
agent# service puppet start
テストの便利さのために手動で起動することもできます.masterを指定します.たとえば、
agent# puppet agent --server=puppet.mysite.com --no-daemonize --onetime
エージェントがmasterに接続された後、アクセスするにはmasterマシンでエージェントに権限を与える必要があります.
承認が必要なagentを確認します.
master# puppet cert --list
  agent2.mysite.com (F6:68:CB:27:E7:17:5E:60:DA:39:66:A3:A5:56:E4:DD)
指定したagentへの権限付与
master# puppet cert --sign agent2.mysite.com
その後agentはmasterからconfigurationを読み出して構成することができる.
1.2 Hello, puppet
マスター側ではsiteを構成する必要がある.ppファイル(Pro Puppetはこのファイルがないとマスターが起動できないと言っていますか?)
可以在site.ppファイルでは、指定するプロファイルの場所であり、一般的にsite.ppにnodesをインポートする.ppファイル、後者は各ノードにどの構成が適用されるかを指定します.この2つのppファイルは一般的に/etc/puppet/manifestsディレクトリの下にあります.
master# vim manifests/site.pp
import 'nodes.pp'

master# vim manifests/nodes.pp
node default {
  include mytest
}

defaultはすべてのノードのデフォルト構成を表します.もちろん、指定したノードの構成を指定することもできます.たとえば、
node 'agent02.mysite.com' {
  include mytest
}

正規表現でノードを指定します.
node /^agent\d+\.mysite\.com/ {
  include mytest
}

次に/etc/modules/の下にディレクトリmytest/manifestsとファイルinitを作成します.pp
master# mkdir -p mytest/manifests
master# vim modules/mytest/manifests/init.pp
class mytest {
  notify {hi: 
    message => "Hello, Puppet",
  }
}

agentでテストします.
agent# puppet agent --server=puppet.mysite.com --no-daemonize --onetime --verbose
info: Caching catalog for a2.mysite.com
info: Applying configuration version '1343644644'
notice: Hello, Puppet
notice:/Stage[main]/Mytest/Notify[hi]/message: defined 'message' as 'Hello, Puppet'    
notice: Finished catalog run in 0.20 seconds  
agentでtreeなどのソフトウェアをインストールしてみます.修正ppファイル
class mytest {
  notify {hi: 
    message => "Hello, Puppet",
  }
  package { tree:
    ensure => present,
  }
}

そしてagentマシンで実行すると、treeがpuppetに装着されていることに気づきます.
その他
変数について:
http://docs.puppetlabs.com/guides/language_guide.html#variables
templatesディレクトリの下のerbテンプレートの問題
factorの変数を使用する場合は、次のように直接使用します.
<%= ipaddress %>
自分のppファイルで定義した変数を使用する場合は、@記号を変数名に追加する必要があります.
<%= @myvar %>
共通リソースタイプ:
http://docs.puppetlabs.com/references/stable/type.html
pullとpush
puppetは
pullモデル、すなわちagentはmasterから構成をローカルに引き出して実行する.
すべてのagentに実行させたいコマンドがある場合、つまりmasterからagentsにコマンドをpushしたい場合は、masterのマシンで実行できます.
puppet kick

これにより、すべての接続agentsがpull操作を実行し、masterから構成をローカルに引き出します.
リファレンス
ここ
一般的なvimサポート:
まずpathogenが
https://github.com/tpope/vim-pathogen/
インストール
https://github.com/rodjek/vim-puppet/
riakのpuppetモジュール:
http://forge.puppetlabs.com/bruce/riak
でもアクセスできないみたい
Install Riak using Basho packages on Ubuntu/Debian
https://github.com/brhelwig/puppet-riak
もう1つですが、1年も更新されていません.
https://github.com/monokrome/puppet-riak
https://gist.github.com/1038441