puppet 语言是结果式的,使用者将自己想要达到的目的通过puppet语法描述给puppet,puppet去完成它,使用者不需要关心过程,整个过程完全被抽象化了。譬如安装一个软件包,只需要ensure => present ,不需要关心操作系统是debian还是redhat 。
个人总结看来,puppet语言形式上的特点就是“花括号分类,冒号声明,逗号结束”。
1、软件包管理
安装
package {"vim": ensure => present, }
多个软件包也可以一起写,用中括号和逗号
package {
["httpd","mysql-server","php","php-mysql"]:
ensure => present,
}
卸载
package {"vim": ensure => absent, }
2、权限管理
file { "/etc/sudoers":
owner => root,
group => root,
mode => 400
}
3、服务3、服务
service {"sshd":
hastatus => true,
harestart => true,
ensure => running,
enable => true,
}
4、文件管理4、文件管理4、文件管理
file {"/etc/my.cnf":
ensure => present,
source => "puppet:///modules/mysql/my.cnf"
owner => mysql,
group => mysql,
}
高级用法之class高级用法之class
单独的class
class ssh {
package {"openssh-server":
ensure => present,
}
file {"/etc/ssh/sshd_config":
ensure => present,
owner => root,
group => root,
source => "puppet:///files/sshd_config",
}
service {"sshd":
ensure => running,
hastatus => true,
harestart => true,
enable => true,
}
}
合并的class(class可以被引用,成为另一个class的子集,用逗号分隔,结尾没有逗号)
class basic {
include ssh, httpd
}
节点的语法和引用class一样节点的语法和引用class一样节点的语法和引用class一样
node "apache01.test.org" {
include httpd,mysql,php
}