閱讀937 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go ant的高級使用,ant命令詳解,ant打包,ant編譯後打包去掉jar文件
  下一篇:go Vxworks下的SATA提速