puppet 手册检查puppet配置文件和使用puppet tags
[导读]
本系列文档是根据puppet cookbook 2.7翻译而来,由于个人水平有限,其中错误在所
难免,本章节是接着上一小节,如何调试puppet代码,以及如何记录puppet 输出到日志,
都是偏重于调试以及故障排查,本章节是主要检查puppet的配置文件,以及在puppet
中应用很广的tags(标签), 可以学习如何使用puppet tag?以及使用puppet tag的好处,
关于puppet的配置文件 puppet.conf说明,可以参阅之前的
[正文]
检查配置文件设置
你已经知道,puppet 的配置设置是存储在puppet.conf文件里,在该文件里没有提及的参数
使用的是默认值,你怎么样才能所有的配置参数的值呢?不管它是否在puppet.conf文件里
明确设置?你可以使用puppet的 -genconfig开关。
如何做:
1.运行
# puppet -genconfig
这将输出每个配置参数以及参数的值(配置参数有许多)。但是,输出里包括解释每个参数说明
非常有用,要找到你感兴趣的特定参数,你可以像这样使用grep:
# puppet -genconfig |grep “reportdir =”
1 |
reportdir = /var/lib/puppet/reports |
―――――――――――――――- ―――――――――――――――――――-
使用tags(标签)
puppet类有相互依赖关系,有时类之间需要知道类是否存在。
例如。管理防火墙的puppet 类可能需要知道该节点是否是一个web服务器。
puppet 的tagged函数将会告诉你,在代码里检查类的名字或者资源标签是否存在。
1.如果你想puppet 在一个特定的节点运行,或者在节点上运行特定的类,
为了帮助你查找出特定的节点, 所有的节点自动以节点名或者从父节点继承类
搜索该标签 .
node bitfield_server {
1
2
3
4
5
6
7
8
9
10
11 |
include bitfield } node cookbook inherits bitfield_server { if tagged( "cookbook" ) { notify { "this will succeed" : } } if tagged( "bitfield_server" ) { notify { "so will this" : } } } |
2.因此你可以告诉puppet在某个节点上执行一个特定类的,所有结点自动都会检查
其类以及父类(类有继承)是否有被tagged(标签)的类名。
include apache::port8000
1
2
3 |
if tagged( "apache::port8000" ) { notify { "this will succeed" : } } |
3.如果你想给一个节点设置任意的tag,可以使用标签(tag)凼数。
1
2
3
4
5 |
tag( "old-slow-server" ) if tagged( "old-slow-server" ) { notify { "this will succeed" : } } 4.如果你想对特定的资源设置一个标签,可以使用tag 元参数。 |
1
2
3
4
5 |
file { "/etc/ssh/sshd_config" : notify => Service[ "ssh" ], tag => "security" , } |
5.你可以使用tags(标签),以便应用puppet部分代码,如果
你在puppet命令行下运行那些有明确的tags(标签)的pupet类,或者特定资源,
可以使用 -tags 选项,例如:如果你只想Exit更新配置,但是不想运行其它的
代码。
1
2
3
4 |
#puppet agent -- test --tags exim 译者说明,在很多情况下客户端可能需要执行很多类,使用tag标签的话,就可以只 运行你想要运行特定资源.tag标签可以应用在node或者类中. |
1 |
|
还有更多:
你可以使用(tags)标签来创建资源的集合,例如:如果一些服务信赖于
许多片断文件。
1
2
3
4
5
6
7
8
9
10
11
12 |
class firewall::service { service { “firewall”: .... } File <| tag == “firewall-snippet” |> ~> Service[“firewall”] } class myapp { file { “ /etc/firewall .d /myapp .conf”: tag => “firewall-snippet”, .... } } |
在这里,我们指定了任何标签为firewall-snipped资源更新了
就必须通知防火墙服务,我们要做的就一切就是为特定的app或者
服务添加一个防火墙配置并标签为firewall-snippet,这样的话puppet会重新加载服务。
虽然我们已经在每个资源片段添加了notfiy=>Service["firewall"],
如果我们定义防火墙服务随着代码文件不断更新而自动的变化。标签可以让
我们把相应的代码进行逻辑封装在一个地方,这样也使得将来的维护和重构更加容易。
译者说明,在使用虚拟资源时候,经常会用到tag标签.
[总结]
本小节就到此,下一章节会为大家介绍puppet的运行阶段,我们知道 puppet运行有相关依赖,
并不一定按照代码的顺序来执行,而puppet的运行阶段可以很好的解决puppet 代码之间的
依赖关系,欲知详情,敬请下篇,关于puppet cookbook 中文最新翻译进展,请留意本站puppet
栏目更新.
建议继续学习:
- 使用Apache 和Passenger来运行puppetmaster (阅读:6894)
- 自动化运维之企业实际案例分析 (阅读:3752)
- puppet使用rsync来同步文件教程 (阅读:3257)
- DevOps之Puppet (阅读:2934)
- 如何有效运行puppet cron任务以及如何触发运行puppet (阅读:2948)
- puppet vagrant 管理VirtualBox 虚拟机 (阅读:2691)
- puppet运维之使用自定义函数 (阅读:2602)
- puppet extlookup 和puppet hiera使用 (阅读:2210)
- puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读:1961)
- puppet手册之建立软件安装源 (阅读:1564)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:sky 来源: MySQLOPS 数据库与运维自动化技术分享
- 标签: puppet
- 发布时间:2011-12-20 23:57:28
- [41] 界面设计速成
- [40] IOS安全–浅谈关于IOS加固的几种方法
- [39] 图书馆的世界纪录
- [38] 如何拿下简短的域名
- [38] Oracle MTS模式下 进程地址与会话信
- [37] android 开发入门
- [35] 视觉调整-设计师 vs. 逻辑
- [35] 【社会化设计】自我(self)部分――欢迎区
- [33] 程序员技术练级攻略
- [33] 读书笔记-壹百度:百度十年千倍的29条法则