puppet extlookup 和puppet hiera使用
浏览:2277次 出处信息
[导读]
sky在工作中,遇到这样的一个问题,公司有些C++服务器需要在配置文件里填写下数据库相关的信息.
每次部署的时候,填写觉得挺麻烦,又浪费时间,另外还容易出错.本打算是让DBA 把相关信息写进数据
库,通过shell脚本来取得相应的变量值.不想折腾,想想puppet是可以读取csv文件的.另外又想了想还
有没有其它方法来实现呢?这时候看过了puppet hiera可以满足需求.如是就写了个类来测试. 测试
共分为两节,一是使用extlookup来实现,二是使用hiera来实现
[正文]
一.使用extlookup来读取csv文件
1.使用csv文件,需要使用extlookup.puppet 2.6的某此版本不支持extlookup.请升级puppet.
centos下面如何升级puppet server,请参阅centos 下升级puppet指南 :
2. 写了个类来调用extlookup 读取csv文件内容:
class server::test { $extlookup_datadir = "/etc/puppet/modules/extdata/" $extlookup_precedence = [ "%{name}", "test" ] $A_db_host = extlookup("A_HOST") $A_db_port = extlookup("A_PORT") $A_db_usr = extlookup("A_USER") $A_db_pwd = extlookup("A_PASSWD") $A_db_name = extlookup("A_DB_NAME") file { 'config_file': path => "/tmp/server.conf, content => template("server/server.conf.erb"), } } 注:上面的类会读取/etc/puppet/modules/extdata/test.csv里的内容,然后使用puppet 模板 来生成新配置文件,上面的类是用来测试,实际使用需要添加相应的服务启动等,以及服务与配置相关关联. 3.我们来看下test.csv内的文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 | extdata /test .csv ####test1### A_HOST,10.10.1.X A_PORT,3306 A_USER,xxx A_PASSWD,xxxxxx A_DB_NAME,xxxx ###test2### T_HOST,10.10.1.X T_PORT,3306 T_USER,xxx T_PASSWD,xxxxxx T_DB_NAME,xxxxxx |
4.我们来看下模板内容: cat server/templates/server.conf.erb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | A_db_host:<%= A_db_host %> A_db_port:<%= A_db_port %> A_db_usr:<%= A_db_usr %> A_db_pwd:<%= A_db_pwd %> A_db_name:<%= A_db_name %> T_db_host:<%= T_db_host %> T_db_port:<%= T_db_port %> T_db_usr:<%= T_db_usr %> T_db_pwd:<%= T_db_pwd %> T_db_name:<%= T_db_name %> 5.我们可以在客户端运行puppet 来测试. #puppet agent --test OK的没有问题.我们接下来使用puppet 的hiera来实现上述功能.如不容易hiera,请参阅 a.查看下当前gem 源.如没有,请添加taobao的镜像源. |
1 2 3 4 5 6 | gem source --list *** CURRENT SOURCES *** http: //ruby .taobao.org/ b.我们使用gem来安装hiera |
1 2 3 | gem install hiera hiera-puppet c.我们来配置hiera.使用puppet hiera,以及测试puppet 下的hiera. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | mkdir /etc/puppet/hieradata ##创建目录,用于存放xx.yaml文件 cat /etc/puppet/hieradata/dev .yaml ##编写yaml文件 --- db_host: 10.10.1.xx db_port: 3306 db_pwd: xxxx db_name: xxx class server:: test ( $db_host = hiera( "db_host" ), $db_port = hiera( "db_port" ) ...) { ... } ## 上面没有写全,同样加上db_pwd,db_name即可.类内容可以抄上面的,这里省略 cat /etc/puppet/hiera .yaml --- :backends: - yaml :logger: console :hierarchy: - %{ env }/%{calling_module} - common :yaml: :datadir: /etc/puppet/hieradata 我们可以先测试下,是否写得正确.是否能读取上面的定义的四个变量. hiera -c /etc/puppet/hiera .yaml db_host env =dev calling_module=server ##来测试是否来读到数据. |
1 2 3 4 5 6 7 | 能正确的读到变量,那么在客户端可以puppet agent -- test 即可. <strong> [总结]< /strong > puppet 的hiera 是对extlookup的一个增强吧,同事看了我写这么多,说你不于直接写个shell, 也不至于这么麻烦,至于么,这里不想多说.每个人都有每个人的做法.这里再说下,可以使用extlookup2hiera 命令能将csv文件格式转化为json格式的.例如: |
1 2 3 | extlookup2hiera -- in sky.csv --out sky.json --json |
建议继续学习:
- 使用Apache 和Passenger来运行puppetmaster (阅读:7106)
- 自动化运维之企业实际案例分析 (阅读:3826)
- puppet使用rsync来同步文件教程 (阅读:3334)
- DevOps之Puppet (阅读:3013)
- 如何有效运行puppet cron任务以及如何触发运行puppet (阅读:3062)
- puppet vagrant 管理VirtualBox 虚拟机 (阅读:2763)
- puppet运维之使用自定义函数 (阅读:2673)
- puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读:1979)
- puppet 手册检查puppet配置文件和使用puppet tags (阅读:1638)
- puppet手册之建立软件安装源 (阅读:1626)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:sky 来源: MySQLOPS 数据库与运维自动化技术分享
- 标签: extlookup hiera puppet
- 发布时间:2012-03-19 23:40:06
建议继续学习
近3天十大热文
- [4612] 最常见的电话号码
- [365] QR码分析
- [62] 如何拿下简短的域名
- [57] Oracle MTS模式下 进程地址与会话信
- [56] Go Reflect 性能
- [56] Twitter/微博客的学习摘要
- [54] android 开发入门
- [54] 图书馆的世界纪录
- [53] IOS安全–浅谈关于IOS加固的几种方法
- [50] 流程管理与用户研究