![对于不熟悉 Ruby 的 Puppet 用户来说,是否有 Ruby/ERB 备忘单?](https://linux22.com/image/531338/%E5%AF%B9%E4%BA%8E%E4%B8%8D%E7%86%9F%E6%82%89%20Ruby%20%E7%9A%84%20Puppet%20%E7%94%A8%E6%88%B7%E6%9D%A5%E8%AF%B4%EF%BC%8C%E6%98%AF%E5%90%A6%E6%9C%89%20Ruby%2FERB%20%E5%A4%87%E5%BF%98%E5%8D%95%EF%BC%9F.png)
我仍在努力掌握 Puppet,并开始尝试基于 Ruby 的 ERB 系统的模板。我对 Ruby 总体上不太熟悉,有人知道 ERB 的速查表吗?或者我是否需要亲自动手学习一些 Ruby 基础知识?
答案1
我以前也遇到过同样的情况。基本上,对于 puppet 使用的 erb 模板,你不需要太多的 Ruby 知识。但这也取决于 puppet 模块的复杂性和用途。
例如,如果您主要将它们用作服务器管理的配置文件,那么您主要需要操作诸如 IP 地址和主机名之类的内容。您遇到的最常用的 Ruby 函数是split
和join
。
处理这些和其他函数的最简单方法是安装 ruby 及其交互式 shell irb 并测试您的代码。所以...一份备忘单,我不知道。我在 stack overflow 和 irc 上的 #ruby 上骚扰了大家!我这里有一堆模板https://github.com/alcy/pupmods/tree/master/puppet/templates/(组织得很糟糕!),这可能会对你有帮助。
关于案例陈述查询,您可以有类似这样的事情(可能的方法之一):
$ip1=inline_template('<%= ipaddress.split(".")[0..2].collect{|x| x}.join(".") %>')
$source = $ip1 ? {
"10.0.0" => "puppet:///your-module-name/resolv.conf.1",
"10.0.1" => "puppet:///your-module-name/resolv.conf.2",
}
file {"/etc/resolv.conf":
ensure => present,
source => $source,
}
模板部分解释为:将从 facter 获得的客户机 ipaddress 拆分为每个出现点“。”的项,收集前三个数字,并在每个元素之间用点连接起来。将其存储为变量ip1
。根据此值,从 puppet 的文件服务器提供必要的 resolv.conf 文件。