变量类型常见三种
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 内容