本文转载自朱双印个人日志:https://www.zsythink.net/archives/331

这篇文章将会介绍怎样在单机模式下简单的使用puppet。

在我们刚开始学习怎样使用puppet时,我们可以不使用master/agent的方式运行puppet,而是使用单机的方式利用puppet进行测试或学习,等到我们能够熟练使用puppet相关技能以后,我们再跨越到master/agent的工作模型中,这样有利于我们学习使用puppet。

好了,我们现在正式开始认识一下puppet。

首先使用puppet help命令查看puppet的使用帮助。

从帮助信息中可以看出,puppet的使用语法如下:

puppet [options] [options]

那么我们解释一下上述语法:

  • 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的用户了。

好了,我们已经入门了。

posted on 2021-06-26 18:02  jiayou111  阅读(202)  评论(0编辑  收藏  举报