一、资源引用

Type['title']
例如:Package['nginx']

二、元参数

用于定义资源间的依赖关系,及应用次序,通知机制
特殊属性:
require:                            #依赖
    package{'nginx':
        ensure => present,
    }

    service{'nginx':
        ensure => true,
        enable => true,
        require => Package['nginx'],
    }

before:                  
      package {'nginx':
           ensure  =>  present,
           before  =>  Service['nginx'],
      }

      service {'nginx':
           ensure  => true,
           enable  => true, 
       }
notify和subscribe: #通知和订阅
                package {'nginx':
                    ensure  =>  present,
                } ->

                service {'nginx':
                    ensure  => true,
                    enable  => true, 
                    restart => '/etc/rc.d/init.d/nginx reload'
                }



            package{'nginx': } ->      #依赖链
           file {'nginx.conf':} ~>      #通知链
            service {'nginx':} 

            Package['nginx'] -> File['nginx.conf'] ~> Service['nginx']

三、变量

变量支持的类型:字符型、数值型、数组、布尔型、undef、hash、正则表达式
自定义变量:

$pkgname='haproxy'
package { $pkgname:
    ensure => present,
}

facter变量:查看 facter

file {'/etc/issue.test':
        ensure => file,
        content => $operatingsystem,
}

内置变量:

                agent: $environment, $clientcert, $clientversion
                masger: $serverip, $servername, $serverversion

变量作用域:
    puppet模块:
        模块A:
            $test=hello
        模块B:

四、条件表达式

单分支、双分支、多分支
If {
}elsif{

}else
}

五、函数

if $operatingsystem =~ /^(?i-mx:(centos|redhat))/ {
    notice("Welcome to $1 linux,")
}

六、case语句

    case 和 selector实现同一种功能的示例:

        $webserver = $operatingsystem ? {
                /^(?i-mx:centos|fedora|redhat)/ => 'httpd',
                /^(?i-mx:ubuntu|debian)/        => 'apache2',
        }
        $webprovider = $operatingsystem ? {
                /^(?i-mx:centos|fedora|redhat)/ => 'yum',
                /^(?i-mx:ubuntu|debian)/        => 'apt',
        }

        package {"$webserver":
                ensure  => present,
                provider => $webprovider,
        }


        case $operatingsystem {
            /^(?i-mx:redhat|centos|fedora)/: { package {'httpd': ensure => present, provider => yum, } }
            /^(?i-mx:ubuntu|debian)/: { package {'apache2': ensure => present, provider => apt, } }
            default: { notify {'notice': message => "unknown system.", }}
        }

results matching ""

    No results matching ""