Puppet 资源公有属性的其余描述方式(三十)


Puppet 资源公有属性的其余描述方式web

puppet的资源公有属性中还能够经过"->"和"~>"两种特殊符号来描述资源与资源之间的关系.bash


->:用于表示资源与资源之间的前后关系,等同于before和require两个资源公有属性.app

~>:用于表示资源之间的通知,等同于notify和subscribe练个资源公有属性.dom


示例: "->"用法ide

安装httpd并运行httpd服务的puppet代码以下:ui

[root@sh-web1 ~]# cat httpd2.pp 
package {"httpd":
    ensure => present,
    provider => 'yum',
}
service {"httpd":
    ensure => running,
    enable => true,
}
Package["httpd"] -> Service["httpd"]

运行结果:spa

[root@sh-web1 ~]# puppet apply httpd2.pp 
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.06 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: created
Notice: /Stage[main]/Main/Service[httpd]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 3.02 seconds
[root@sh-web1 ~]# /etc/init.d/httpd status
httpd (pid  81254) is running...


示例: "~>"用法日志

[root@sh-web1 ~]# cat httpd.pp 
package {"httpd":
    ensure => present,
    provider => 'yum',
}
service {"httpd":
    ensure => running,
    enable => true,
}
file {'/etc/httpd/conf/httpd.conf':
    ensure => file,
}
Package["httpd"] -> File ['/etc/httpd/conf/httpd.conf'] ~> Service["httpd"]


运行结果:资源

[root@sh-web1 ~]# puppet apply httpd.pp 
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.07 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: created
Notice: /Stage[main]/Main/Service[httpd]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 3.25 seconds
[root@sh-web1 ~]# /etc/init.d/httpd status
httpd (pid  81493) is running...


生产上并不会像上面那样去写,一个资源可能很大,篇幅很长.it

以下两种写法:


第一种:

[root@sh-web1 ~]# cat httpd2.pp 
package {"httpd":
    ensure => present,
provider => 'yum',
}
->
service {"httpd":
    ensure => running,
enable => true,
}


第二种:

[root@sh-web1 ~]# cat httpd2.pp 
package {"httpd":
    ensure => present,
    provider => 'yum',
} ->
service {"httpd":
    ensure => running,
    enable => true,
}


[root@sh-web1 ~]# puppet apply httpd2.pp 
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.04 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: created
Notice: /Stage[main]/Main/Service[httpd]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 2.28 seconds


注意:大部分都是第二种写法,"->"或"~>"跟在花括号的后面,可是我的习惯用第一种反正更新puppet不报错也能获得想要结果就ok.


audit审计

audit资源公有属性主要用于资源属性的审计,当某资源状态变化时,它能够将变化的内容抓夹到系统日志中.


puppet代码以下:

[root@sh-web1 ~]# cat file.pp 
file {"/etc/password":
    audit => [ owner,mode ],
}

运行过程,会看到改变通知.

[root@sh-web1 ~]# puppet apply file.pp 
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.07 seconds
Notice: /Stage[main]/Main/File[/etc/password]/owner: audit change: newly-recorded value absent
Notice: /Stage[main]/Main/File[/etc/password]/mode: audit change: newly-recorded value absent
Notice: Finished catalog run in 0.05 seconds
相关文章
相关标签/搜索