本文参考朱双印个人日志,链接:https://www.zsythink.net/archives/331
这篇文章将会介绍怎样在单机模式下简单的使用puppet。
在我们刚开始学习怎样使用puppet时,我们可以不使用master/agent的方式运行puppet,而是使用单机的方式利用puppet进行测试或学习,等到我们能够熟练使用puppet相关技能以后,我们再跨越到master/agent的工作模型中,这样有利于我们学习使用puppet。
好了,我们现在正式开始认识一下puppet。
首先使用puppet help命令查看puppet的使用帮助。
uploading-image-433559.png
从帮助信息中可以看出,puppet的使用语法如下:
puppet
那么我们解释一下上述语法:
-
subcommand:表示子命令
-
options:表示选项,也就是说,使用puppet子命令时可以跟随相应的选项。
-
action:表示动作,我们也可以把action理解为子命令的子命令。
-
options:action后面的options表示action对应的选项,我们也可以理解成子命令的子命令对应的选项。
从上图中,我们可以看到,puppet有很多子命令,其实我们使用的puppet help命令,就是puppet的子命令
如果我们想要查看子命令的用法,可以使用如下两条命令:
puppet help subcommand
puppet man subcommand
如果我们想要查看action的帮助信息,可以使用如下命令:
puppet help subcommand action
因为我们现在使用单机模式下的puppet进行测试,所以,我们会用到”apply”子命令,这个子命令的作用就是在本地运行puppet的”清单”,说白了就是指定本机上的一个配置文件,在单机模式下运行puppet,那么,根据我们刚才提到的help命令的使用方法,我们可以使用如下命令查看”apply”子命令的使用帮助:
puppet help apply
从返回的帮助信息中,可以得知apply子命令的作用就是以独立的方式,将清单中的配置应用于本机,也就是说,根据配置清单配置当前服务器。
apply这个子命令有很多选项,而我们常用的有debug、verbose、noop等,debug表示显示调试信息,verbose表示显示详细信息,noop表示测试模式模拟执行,当然,这些选项都是可选的,从帮助信息可以看到 file 是不可省的,file表示对应的配置文件,也就是”清单”,所以,我们使用puppet apply manifestname
即可执行对应的清单。
好了,现在我们已经知道怎样在本地执行一个清单了,但是我们还不会写清单,那么,我们先写一个最简单的清单练练手。
我们说过,puppet的清单其实就是由多个资源组成的配置文件而已,我们可以这样理解,我们要操作什么资源,就将资源写入清单中即可。
假设,现在我们想要使用puppet在当前服务器上创建一个名叫liuhaoran的用户,我们可以配置一个清单,清单的名称为test.pp ,注意,清单要以”.pp”为文件后缀名, test.pp内容如下。
user{‘liuhaoran‘:
name => liuhaoran,
ensure => present,
}
上图内容中,我们只定义了一个资源,这个资源的类型是user ,这个user类型的资源的标题是’liuhaoran’,我们通过name关键字指定资源的名称,这个资源的名称也是’liuhaoran’,我们通过ensure关键字,可以设定资源的”目标状态”,present直译过来的意思是”出席”,但是当我们在user类型的资源中设置ensure的值为present时,表示创建用户,也就是说,我们的目标是确保liuhaoran用户存在,如果此用户存在,将不再执行对应操作,如果对应的用户不存在,那么,我们将会创建这个用户,确保这个用户能够”出席”,其实不管是name关键字还是ensure关键字,这些关键字在puppet中都被称为资源的”属性”,这个资源只是用于示例,我们在后面的文章中会单独对资源的结构进行总结,不用怕,我们继续聊。
上面的资源是不是很容易理解,好了,清单已经准备好了,现在我们准备执行这个清单,但是需要注意,在执行清单之前,我们先确定一下,当前系统中是否存在liuhaoran用户。
可以看到,当前系统中并不存在liuhaoran用户,那么,我们准备执行一遍这个清单,看看效果
因为我们现在在单机模式下使用puppet,所以,我们使用puppet apply
命令执行对应清单,还记得我们之前提到过的noop选项吗,我们可以通过noop选项模拟执行,也就是说,并不是真正的按照清单中的配置操作,而是按照清单中的配置,模拟执行一遍,示例如下。
puppet apply --verbose --noop test.pp
可以看到,我们执行puppet命令时添加了–verbose
选项,表示输出详细信息,使用了–noop
选项,表示模拟执行、测试执行。
从测试执行的返回信息中,可以看到,当我们执行puppet apply
命令以后,第一步就是将对应的test.pp这个清单编译成catalog,
之前已经说过,清单不能直接运行,需要先编译成catalog,这里也验证了我们的理论。
测试信息中的绿色字体是一条应用配置的版本号,我们不用在意它。
同时返回信息中显示,我们想要操作的资源类型为user,user的名字是liuhaoran, liuhaoran这个用户的当前状态为”absent”,absent直译过来的意思是缺席,也就是说,当前服务器上并不存在liuhaoran这个用户, should be present表示这个资源的最终状态应该是present,表示这个用户应该存在,(noop)表示我们添加了–noop
选项,所以puppet并没有真正的创建用户,那么我们来验证一下,看看liuhaoran用户到底有没有被创建。
可以看到,liuhaoran用户的确没有被创建,那么,这次我们在执行puppet命令时不添加–noop选项,也就是说不进行测试执行,而是真正的执行,看看liuhaoran用户会不会被创建。
puppet apply --verbose test.pp
从上图中,可以发现,puppet已经按照test.pp清单中的配置,正确的创建了一个名为liuhaoran的用户了。
好了,我们已经入门了。