Ubuntu/puppet

提供: fukudat
移動: 案内検索

オープンソースの構成管理ツール.Rubyで書かれている.

宣言的言語 (declarative language) を用いてシステム構成を定義する. マスター (puppet master) とエージェントノード (agent node) からなる.

目次

Puppet Master

インストール

$ sudo apt-get install puppet puppetmaster

/etc/puppet/puppet.conf を編集して [main] section に comma-separated list として master server の名前を記述する.

dns_alt_names = takeshi,takeshi.fukudat.com

ここで,takeshi, takeshi.fukudat.com は puppet master のDNS名.

puppet master を再起動.

$ sudo /etc/init.d/puppetmaster restart

Puppet Agent

インストール

$ sudo apt-get install puppet

/etc/puppet/puppet.conf を編集して,以下を追加

[agent]
server=takeshi.fukudat.com

ここで,takeshi.fukudat.com は puppet master のDNS名.

インストール時に起動されている agent を停止し,enable して,再起動する.

$ sudo service puppet stop
$ sudo puppet agent --enable
$ sudo service puppet start

起動時に puppet master に certificate request が飛んでいるはず.puppet master 上で以下を実行.

$ sudo puppet cert list                      # certificate request が届いているかどうかの確認
$ sudo puppet cert sign <agent名> # 届いた request にサインして承認.<agent名> の代わりに --all とすると,全部を承認

site.pp

/etc/puppet/manifests/site.pp に agent で実行したいことを記述する.

基本的な文法

具体的な例を用いて説明する.

file {'ntp.conf':
      path    => '/etc/ntp.conf',
      ensure  => file,
      content => template('ntp/ntp.conf'),
      owner   => root,
      mode    => 0644,
}

ここで,

  • file: リソースタイプ
  • 'ntp.conf': タイトル
  • path: 属性
  • '/etc/ntp.conf': 属性値.この場合は文字列.
  • template('ntp/ntp.conf'): 関数呼び出し.値を返す.この場合は module ntp の templates ディレクトリにある ntp.conf.erb をparseした結果が返る.(template function参照)
package {'ntp':
      ensure => installed,
      before => File['ntp.conf'],
}
service {'ntpd':
      ensure    => running,
      subscribe => File['ntp.conf'],
}

ここでは2つのリソースが定義さていて,それらの関係が before, subscribe によって記述されている.(relationship metaparameters参照)

Agentの削除

agent を削除したら,certification も削除しておく(そうしないと,削除したのと同じ名前の agent node を作った時に conflict が起こる). puppet master で,以下を実行.

$ sudo puppet cert clean <削除したagent名>

master, agent ともに次のファイルを消してしまえば,次に agent が動いた時に,master に certification の sign request が飛ぶ.

/var/lib/puppet/ssl/certs/<agent名>.pem

参考文献

個人用ツール
名前空間

変種
操作
案内
ツールボックス