zoukankan      html  css  js  c++  java
  • puppet(五)——puppet使用基础

    本文转载自朱双印个人日志: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的用户了。

    好了,我们已经入门了。

  • 相关阅读:
    【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析
    Oracle11g 主机身份证明问题
    html标签的嵌套规则
    提高程序员职场价值的10大技巧
    IT人应当知道的10个行业小内幕
    趣文:如果编程语言是车
    去除inline-block元素间间距的N种方法
    《大型网站SEO优化实践》学习分享
    如何通过预加载器提升网页加载速度
    网页爬虫及其用到的算法和数据结构
  • 原文地址:https://www.cnblogs.com/even160941/p/14937960.html
Copyright © 2011-2022 走看看