您现在的位置是:首页 > 文章详情

puppet 利用 facter, 实现不同主机调用不同变量方法

日期:2014-06-30点击:709


分析

变量类型常见三种

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 内容

原文链接:https://yq.aliyun.com/articles/70863
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章