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 內容
最後更新:2017-04-03 05:38:54