puppet 利用 facter, 实现不同主机调用不同变量方法
分析¶
变量类型常见三种
1. 内建变量, 如 $title, $name 等, 针对类固定的格式而进行调用 2. 自定义变量, 如 myname = tttttt, 等, 但需要在每个类中进行独立定义, 不能够在类之间进行传递, 3. facter , 公共变量, 可以在每个类中共同使用, 当前打算使用 facter 作为变量的调用
测试1.¶
修改 /etc/puppet/fileserver.conf 如下, 目的, 创建文件传输目录
grep -v "#" /etc/puppet/fileserver.conf | grep -v ^$ [extra_files] path /etc/puppet/files allow *
创建对应目录
mkdir /etc/puppet/files
把 facter 模板存放至 /etc/puppet/files
cat /etc/puppet/files/roles.txt db01ip=10.10.10.1 puppetip=10.10.0.100 db01sqlip=10.10.10.2 db01user=terry db02ip=10.10.20.2 db02sqlip=10.10.10.4 db02user=bbxxswqq
创建测试用 puppet 推送模板
[root@gd02-openstack-puppet manifests]# tree . ├── openstack │ ├── cinder.vclound.com.pp │ ├── db.vclound.com.pp │ ├── galera.vclound.com.pp │ ├── glance.vclound.com.pp │ ├── glusterfs.vclound.com.pp │ ├── haproxy.vclound.com.pp │ ├── keystone.vclound.com.pp │ └── test.pp <--- 测试用模板 └── site.pp
测试模板内容
[root@gd02-openstack-puppet manifests]# cat openstack/test.pp node 'gd02-openstack-testdb1.vclound.com', 'gd02-openstack-testdb2.vclound.com' { file { [ '/etc/facter','/etc/facter/facts.d']: ensure => directory, owner => root, group => root, mode => 0755, } file { '/etc/facter/facts.d/roles.txt': source => "puppet://$fileserver/extra_files/roles.txt", owner => root, group => root, mode => 0755, require => File [ '/etc/facter','/etc/facter/facts.d'], } if $fqdn == "gd02-openstack-testdb1.vclound.com" { file { "/tmp/test.txt": content => "dbip=$db01ip\npuppet=puppetip\ndbsql=$db01sqlip\ndbuser=$db01user\n", owner => root, group => root, mode => 644, require => File ['/etc/facter/facts.d/roles.txt'], } }elsif $fqdn == "gd02-openstack-testdb2.vclound.com" { file { "/tmp/test.txt": content => "dbip=$db02ip\npuppet=$puppetip\ndbsql=$db02sqlip\ndbuser=$db02user\n", owner => root, group => root, mode => 644, require => File ['/etc/facter/facts.d/roles.txt'], } } }
目的, 分别在 'gd02-openstack-testdb1.vclound.com', 'gd02-openstack-testdb2.vclound.com' 主机中添加 /tmp/test.txt
文件中分别调用 facter 变量
效果如下
testdb1 内容
[root@gd01-openstack-testdb1 ~]# cat /tmp/test.txt dbip=10.10.10.1 puppet=10.10.0.100 dbsql=10.10.10.2 dbuser=terry
testdb2 内容
[root@gd02-openstack-testdb2 /]# cat /tmp/test.txt dbip=10.10.20.2 puppet=10.10.0.100 dbsql=10.10.10.4 dbuser=bbxxswqq
结论: 可以在不同主机上匹配不同的 facter 内容

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用Docker开发NodeJs APP
英文版原文地址 这是两篇连载文章的第一篇,讲解了如何使用Docker替代Vagrant开发基于Express框架的NodeJs App的部分细节。不过,这次要增加点难度:我们要使用connect-redis在 Redis 中实现 session 功能。第二篇文章将基于此继续。 The Node App 这个 App 由一个package.json,server.js和.gitignore文件组成,就这么简简单单: .gitignore: 1 node_modules/* package.json: 1 { 2 "name": "docker-dev", 3 "version": "0.1.0", 4 "description": "Docker Dev", 5 "dependencies": { 6 "connect-redis": "~1.4.5", 7 "express": "~3.3.3", 8 "hiredis": "~0.1.15", 9 "redis": "~0.8.4" 10 } 11 } server.js: 1 var express = require('exp...
- 下一篇
openStack工具集
Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用。 很多公司都投入人力去做这个,新浪也计划做一个Openstack的iso,集成OS,当你决定去做这个的时候,那么先了解一下目前的现状。说到部 署,肯定和OS有关,对于Openstack来说,无非就是Ubuntu还是CentOS,当然也会和OpenStack版本有关。 其实部署工具,最麻烦的地方,不是软件的配置和安装,而且网络。用户的网络情况太多,还有Openstack本身的网络也很复杂。 关于如何step by step的部署,目前Openstack 官方已经把文档整理的很好,基本把我收藏夹里的内容都整理在这里:http://www.openstack.org/software/start/ 微博评论 HZT-intel StackOps自身规模比较小没有顺利走Mirantis和CloudScaling的路子,商业模式也不够清晰;Dell的CrowBar还是 不错的一套工具,我做过它对RHEL6.x 的支持,并不复杂,可惜由于限制没能贡献回去;Juju本身...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路