puppet运维之使用自定义函数
浏览:2595次 出处信息
[导读]
上一篇puppet rsync使用教程,sky提到自定义函数,以及自定义provider和fact.本小节主要是介绍在puppet
下如何编写自定义函数,自定义函数在puppet 使用过程中有什么需要注意的地方,以及puppet 自定义函数是
如何执行的等,要知道答案么,答案均来自puppet 官网<<Writing your own functions>>,主要是sky,对ruby的语法
不是很了解,估大家请见谅.let’s go!
[正文]
1. puppet是如何加载自定义函数的,要注意哪些地方?
答: puppet 下自定义函数会加载以下几个路径下的,并且后缀名为.rb的文件.
- $libdir/puppet/parser/functions
- $moduledir/<modulename>/lib/puppet/parser/functions
- puppet/parser/functions sub-directories in your Ruby $LOAD_PATH
备注:libdir以及moduledir大家都应该知道吧,不知道使用如下命令:
1
2
3
4
5
6 |
puppetmasterd --configprint libdir puppetmasterd --configprint modulepath 那么ruby的$LOAD_PATH的值又是如何查看的呢? 可以使用ruby的irb来查看: |
1
2
3 |
#irb irb(main):001:0> $LOAD_PATH => [ "/usr/local/lib/site_ruby/1.8" ,...] |
1 |
sky觉得$LOAD_PATH指的是Ruby读取外部文件的一个环境变量,这点和windows的环境变量差不多吧. |
NOTE: In Puppet versions prior to 0.25.0, the lib directory underneath $moduledir/<modulename>/ was named plugins.
我采用第二种方法,如下面编写的get_var,就定义在$moduledir/<modulename>/lib/puppet/parser/functions/get_var.rb中
-
function的名字与文件名最好一致,如你也写了一个get_var,那文件也应该是get_var.rb
-
function中使用客户端facter收集到的参数,应该这样lookupvar(‘fact_name’)
-
function的返回状态有两种statements 和 rvalues,如果你有返回值,应定义 :type ⇒ :rvalue
1
2
3
4 |
函数是在服务端被执行的,它调用的各种资源包括文件等,应在服务端存在. 例子: 把参数值写到文件: |
1
2
3
4
5
6
7
8
9
10
11 |
module Puppet::Parser::Functions newfunction(:write_line_to_file) do |args| filename = args[0] str = args[1] File. open (args[0], 'a' ) {|fd| fd.puts str } end end 官网上都有示例,就不多写了.写下注意要点吧! 2. 如何调用函数: |
1
2
3
4
5 |
module Puppet::Parser::Functions newfunction(:myfunc2, : type => :rvalue) do |args| function_myfunc1(...) end end |
1 |
3.函数错误如何处理: |
1
2
3
4 |
raise Puppet::ParseError, "my error" 4.函数调试 a.puppet检查自定义函数是否有语法错误: |
1
2
3
4
5
6
7
8
9 |
ruby -rpuppet my_funct.rb b.调试puppet 函数是否可用 irb > require 'puppet' > require '/path/to/puppet/functions/my_funct.rb' > Puppet::Parser::Functions. function (:my_funct) => "function_my_funct" c.puppet模板里调用puppet自定义函数 |
1
2
3 |
<%= scope.function_namegoeshere(“one”,”two”) %> <strong> [总结]< /strong > |
这里没有提自定义provider,感兴趣的同学可以看puppet pro那本pdf文档,里面有
详尽的说明.大家可以结合下puppet rsync模块,再看下puppet 组织结构模块.关于
这些自定义的都需要ruby知识.这方面不太懂,就不多说了.
推荐阅读官网:自定义fact以及函数
建议继续学习:
- 使用Apache 和Passenger来运行puppetmaster (阅读:6878)
- 自动化运维之企业实际案例分析 (阅读:3745)
- puppet使用rsync来同步文件教程 (阅读:3250)
- DevOps之Puppet (阅读:2930)
- 如何有效运行puppet cron任务以及如何触发运行puppet (阅读:2941)
- puppet vagrant 管理VirtualBox 虚拟机 (阅读:2684)
- puppet extlookup 和puppet hiera使用 (阅读:2205)
- puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读:1959)
- puppet 手册检查puppet配置文件和使用puppet tags (阅读:1621)
- puppet手册之建立软件安装源 (阅读:1561)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:Linux系统内存相关信息获取 >>
文章信息
- 作者:sky 来源: MySQLOPS 数据库与运维自动化技术分享
- 标签: puppet
- 发布时间:2012-02-26 23:23:20
建议继续学习
近3天十大热文
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [52] android 开发入门
- [52] Go Reflect 性能
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [49] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑