当咱们引用一个资源时,须要大写资源类型的首字母,例如File[sshdconfig]。当看到一个大写的资源类型,须要明白那实际上就是一个资源引用。小写字母是用来定义的。资源只能被定义一次,重复定义相同的资源会致使错误。ssh
大写 : 引用资源学习 小写 : 定义资源ui
|
基本格式: Type ["title",…, "title"]this
注:Type:表示资源的类型,且第一个字母必须大写spa
title:表示该资源的title,多个title,可用逗号分隔,必须存在。server
经常使用于require => Type ["title",…, "title"]ip
表示require以后的引用,必须先存在或正确执行ci
#定义 file { 'sshdconfig': path => $operatingsystem ? { solaris => '/usr/local/etc/ssh/sshd_config', default => '/etc/ssh/sshd_config', }, owner => 'root', group => 'root', mode => '0644', } service { 'sshd': #引用 subscribe => File['sshdconfig'], } |
为某类资源指定一个默认的参数。使用没有标题的大写资源首字母方式。资源
格式:
it
Type { 属性 => 值,…, 属性 => 值;}
注:Type:表示资源的类型,且第一个字母必须大写,不须要title.
例如,为全部的执行命令设置默认的path参数:
vi /etc/puppet/manifests/site.pp Exec { path => '/usr/bin:/bin:/usr/sbin:/sbin' } exec { 'echo this works'} |
第一行代码为exec资源提供一个默认的path参数。exec资源须要一个完整的限定路径或者可以经过path参数找到具体的可执行文件。资源定义时如有必要能够覆盖path的默认设置。这种状况下咱们能够为全部的配置指定一个默认path参数,特殊状况时覆盖它就能够了。
默认值不是全局的,它只在当前范围和当前范围下面有效。若是你想为全部的配置设置默认值,惟一选择是在任意类的外面定义它们,或在/etc/puppet/manifests/site.pp中定义。
puppet 资源之间简单依赖关系,主要是有下面的三个参数:
before:在某个资源以前执行,before => 要引用的资源(首字母大写)
after: 在某个资源以后执行,after => 要引用的资源(首字母大写)
require: 某个资源必须存在或者正确执行后,才执行。经常使用 require => 要引用的资源(首字母大写)
|
before、after、和require,都可用于各个资源中。
为了便于理解,下面就给你们看个代码示例:
代码示例:
file {"/etc/ssh/sshd_config": ..... require => Package["openssh-server"], #引用package {"openssh-server": …} } package { “openssh-server”: …… before => File["/etc/ssh/sshd_config"], } |
上面例子咱们能够知道:/etc/ssh/sshd_config必须在openssh-server这个软件包安装后,才会生成。
after和before相反,就不举例说明了。那你们会有个问题,那/etc/ssh/sshd_config有改动的时候,那要怎么办呢,接下来就为你们介绍,puppet资源之间触发更新动做。
class admin::ntp { package { "ntp": ensure => installed, require => File["/etc/ntp.conf"], } service { "ntp": ensure => running, require => Package["ntp"], } file { "/etc/ntp.conf": source => "puppet:///modules/admin/ntp.conf", notify => Service["ntp"], require => Package["ntp"], } } |
Package["ntp"] -> File["/etc/ntp.conf"] ~> Service["ntp"]
puppet资源之间触发更新主要是由下面二个参数。在执行Services,Exec资源中很是有用。
notify:用来通知某个资源进行更新。
subscribe:资源有更新时,通知另外一个资源执行相应的动做。
|
其实这两个效果参数效果是同样的。接下来看下代码示例,更好的理解上面的两个参数。
file {"/etc/ssh/sshd_config": ..... notify => Service[sshd], } service {"sshd": ...... subscribe => File["/etc/ssh/sshd_config"], } |
上面的例子,咱们能够看到,当/etc/ssh/sshd_config文件发生更新时,就会通知sshd服务,进行reload.
至此,puppet的资源关系就结束了,接下来的是tag标签的学习,请听下回分解!!!