puppet 变量作用域

上篇介绍了puppet 变量归类,本篇介绍下puppet 变量作用域。

根据puppet变量作用域可以分为全局变量,节点变量,类变量,以及子类变量

  • 全局变量: 在site.pp里定义的变量。
     cat /etc/puppet/manifests/site.pp    $role = default 
  • 节点变量: 在node里定义的变量。
     node 'www.puppetfans.com' {  $dbname =  puppetfans } 
  • 类变量:    在class中定义的变量。
    class "base" { $username = puppetfans }
  • 子类变量
     class "base01"  { name = $::base::username }

 

puppet facter 使用方法及示例

puppet facter 使用方法

查看所有facter

facter 或者facter -p

查看内核版本

facter kernelversion

 

 

以yaml格式显示所有facts

facter -y

以json格式显示所有facts

facter -j

facter 使用示例:

在manifests代码清单里使用facter 函数

notify { "OS is ${::facts[‘operatingsystem’]}": }

直接在manifests代码清单里使用

nofify {"productnmae is $::productname"}

获取 facter hash数组值(puppet 4版本)

[puppetfans@li664-233 nginx]$ sudo /opt/puppetlabs/bin/facter system_uptime
{
days => 3,
hours => 93,
seconds => 336477,
uptime => "3 days"
}
[puppetfans@li664-233 nginx]$ sudo /opt/puppetlabs/bin/facter system_uptime.hours
93

puppet stage 使用示例

puppet stage 使用示例

【puppet stage使用方法】

class puppetfans::stages {
stage { 'first': before => Stage['main'] }
stage { 'last': require => Stage['main'] }
class pe_first {
notify { 'This will be done first': }
} 

class pe_last {
notify { 'This will be done last': }
}

class { 'pe_first':
stage => 'first',
}

class { 'pe_last':
stage => 'last',
}
}

 

可以使用如下测试puppet stage效果 :

node 'basenode' {
class {'roles::web': }
class {'roles::db': }
include puppetfans::stages
}