模仿MySQL的my.cnf以便在Puppet中进行设置

时间:2011-02-18 20:32:24

标签: mysql optimization puppet

我的任务是模仿MySQL的my.cnf,尝试使用Puppet在slave数据库之间标准化配置。现在,我的目标是innodb设置。 是否可以根据硬件规格(如内存,磁盘和触发器)安全地计算配置选项?

3 个答案:

答案 0 :(得分:4)

你需要因素。

puppet:/etc/puppet/modules/master/lib/facter$ cat disks.rb
#!/usr/bin/ruby
#require 'facter'

mount = `/bin/mount`
disks=Array.new 
mount.split("\n").each_with_index { | disk,i |
  unless disk.scan(/ext3|simfs|reiserfs|xfs/).empty?
    d=disk.split[2]
    disks.push d
    disks.push ','
 end
}

Facter.add('disks') do
 setcode do
   disks
 end 
end 

` 并在puppet.pp我使用事实$ disks

#add disk check to zabbix
exec { "create_host":
    command => "/bin/echo $fqdn $ipaddress $disks | do_work",
    require => File["/root/ticket"],
    subscribe => File["/root/ticket"],
    refreshonly => true,
}

请参阅木偶实验室中的“向Facter添加自定义事实”。

答案 1 :(得分:2)

我很想将计算移到erb文件中,例如建议将key_buffer_size设置为系统RAM的1/4:

set-variable = key_buffer_size=<%= (memorysize.split(' ')[0].to_i * 1024) / 4 -%>M

没有理由不能处理Facter提供的其他变量(处理器数量等),并提出自己的计算来设置上述其他变量。

请记住,ERB有效地提供了Ruby的一个子集,因此您在Ruby中可以做的几乎任何事情都可以在ERB中完成。

答案 2 :(得分:0)

puppet有erb模板,erb模板可以使用facter值,比如hostname或memor。你可以写你自己的shell脚本。