技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> puppet 手册检查puppet配置文件和使用puppet tags

puppet 手册检查puppet配置文件和使用puppet tags

浏览:1621次  出处信息

[导读]

本系列文档是根据puppet cookbook 2.7翻译而来,由于个人水平有限,其中错误在所

难免,本章节是接着上一小节,如何调试puppet代码,以及如何记录puppet 输出到日志,

都是偏重于调试以及故障排查,本章节是主要检查puppet的配置文件,以及在puppet

中应用很广的tags(标签), 可以学习如何使用puppet tag?以及使用puppet tag的好处,

关于puppet的配置文件 puppet.conf说明,可以参阅之前的

文档 ,点我阅读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

栏目更新.

建议继续学习:

  1. 使用Apache 和Passenger来运行puppetmaster    (阅读:6878)
  2. 自动化运维之企业实际案例分析    (阅读:3744)
  3. puppet使用rsync来同步文件教程    (阅读:3249)
  4. DevOps之Puppet    (阅读:2929)
  5. 如何有效运行puppet cron任务以及如何触发运行puppet    (阅读:2941)
  6. puppet vagrant 管理VirtualBox 虚拟机    (阅读:2683)
  7. puppet运维之使用自定义函数    (阅读:2594)
  8. puppet extlookup 和puppet hiera使用    (阅读:2204)
  9. puppetmaster集群解决方案之puppet客户端共享一张证书    (阅读:1958)
  10. puppet手册之建立软件安装源    (阅读:1560)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1