3

我的任务是模板化 MySQL 的 my.cnf,以尝试使用 Puppet 标准化从属数据库之间的配置。现在,我的目标是 innodb 设置。是否有可以安全地根据内存、磁盘和 procs 等硬件规格计算的配置选项?

4

3 回答 3

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,
}

请参阅 puppet 实验室上的“向 Facter 添加自定义事实”。

于 2011-03-24T19:45:27.273 回答
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 中完成。

于 2011-07-19T19:25:46.543 回答
0

puppet 有 erb 模板,erb 模板可以使用因子值,如主机名或内存。你可以编写你自己的 shell 脚本。

于 2011-03-09T05:41:31.873 回答