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 (阅读:7851)
- 自动化运维之企业实际案例分析 (阅读:4327)
- puppet使用rsync来同步文件教程 (阅读:3829)
- DevOps之Puppet (阅读:3542)
- 如何有效运行puppet cron任务以及如何触发运行puppet (阅读:3485)
- puppet vagrant 管理VirtualBox 虚拟机 (阅读:3171)
- puppet运维之使用自定义函数 (阅读:3071)
- puppet extlookup 和puppet hiera使用 (阅读:2776)
- puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读:2483)
- puppet手册之建立软件安装源 (阅读:2265)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:sky 来源: MySQLOPS 数据库与运维自动化技术分享
- 标签: puppet
- 发布时间:2011-12-20 23:57:28
-
[914] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[52] Innodb分表太多或者表分区太多,会导致内 -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] 分享一个JQUERY颜色选择插件
