独角兽企业重金招聘Python工程师标准>>>
puppet自动化运维之puppet的资源基础知识
此篇文章,主要是让读者提前了解puppet资源的一些知识。
变量和数组会经常用的,你懂得。
资源或变量,都分为:定义和引用。这一点一定要注意。
1.变量和数组
①、变量:
学过编程的同学,都应该知道变量的优点。一般的变量都区分全局变量和局部变量,以我个人习惯,一般只用全局变量,这样就不必在变量的区分上费时间了。例如,在shell里,我就是这样的。
puppet用$符号定义变量,变量的内容。
声明格式: $变量名="值"
引用格式: ${变量名}
例:
②、数组:
(1)、直接定义数组:
puppet利用方括号来定义数组,数组的内容由逗号分割,分别用双引号括起来.
[ "apache2" , " httpd " , " ssh " ]
例:
(2)、从字符串创建数组,像这样使用split 函数:
例:
注意:split需要两个参数,第1个是需要split的字符串,第二个是split的分隔符。
split(字符串,分隔符)
例:正则表达式
2.资源总述
puppet基本单元是资源。资源描述了系统的某些方面的属性,这些方面包括文件,服务,软件包甚至是你自定义的一个资源。
定义一个资源,需要指定资源的type(类型)和资源的title(标题)。
格式:
type { "title1",…,"title":
attribute => "value",
...
attribute => "value";
}
例:
上面的代码让/etc/passwd的权限保持644,并且属于root用户和root用户组;
第一行的file是指定资源的类型是"file"类型;
第二行的"/etc/passwd"是资源title,title的作用是让puppet能唯一标识这个资源;第三行的name指定了要对那个文件操作,默认情况下,name都等于title,所以很多时候name是可以省略的。这点要注意。
例:
资源的title是sshdconfig,但是name却可以通过判定操作系统自己选择合适的值。这样,当其他的资源要依赖sshdconfig的时候,只需要说明依赖sshdconfig就行,不需要关心文件到底在什么路径下面。例如下面的代码:
指定了一个sshd的服务,这个服务如果发现文件资源sshdconfig 有变动,就会自己reload配置文件。是不是很方便呢?注意上面的subscribe后面的File,第一个字母要大写,定义资源关系的时候,这里的字母要大写。
通常,在puppet代码里面可能会定义很多相同的资源,可以用[]把所有资源的title写在一起,即数组,例如:
你可能已经发现了,每次定义文件的时候如果都输入mode,owner,group会很繁琐,因此你可以在puppet的site.pp的开头定义资源的默认值。
定义资源的默认值需要把资源的第一个资源大写。例如下面的代码让所有的file资源的mode是644,owner是root。默认值可以被后面的设置覆盖。
在puppet里面可以定义资源之间的关系,例如前面提到的,如果sshdconfig文件如果有修改,sshd服务就重启。puppet里面还有另一个资源关系:依赖。例如资源A依赖资源B,如果资源B不存在,资源A就不被执行。定义资源依赖的属性是requre 。例如:
file资源设置port.conf的内容为80,但是在设置file资源之前,要求apache2这个软件包配置好了(即file资源依赖Package["apache2"])。
3.资源的类型
puppet的资源是由具体的系统管理任务抽象而来的,系统管理中遇到什么任务,就会有相应的资源类型,目前puppet支持的资源类型有:
file 文件/目录的管理
package 软件包的管理(yum install|remove)
service 服务的管理(start|restart|stop|status)
cron crontab定时任务的管理
user 添加用户
group 添加用户组
exec shell命令
notify 资源之间的通讯
至此,puppet的资源基础知识就结束了,变量和数组会经常用的,接下来的是puppet的file资源学习,请听下回分解!!!
如果觉得《puppet自动化运维之puppet的资源基础知识》对你有帮助,请点赞、收藏,并留下你的观点哦!