xiaochuan 发表于 2015-9-16 10:11:46

Puppet初粗入门(1)

  本来想翻译官方文档……无奈我这破英文啊……还是简明扼要的根据《Pro Puppet》这本书的教学顺序来写吧。(最近的两篇难道都因为太短所以被移出首页了?T_T赶紧补字……)
  
  Puppet是一个集成管理配置LINUX机器群的工具,直白的就是说在多服务器的运维环境下,使用Puppet可以简化群体操作,就像是老师一次给所有的学生下了同样的命令,然后学生根据自己的情况来完成,而不是老师根据每个学生不同的情况来给学生不同的命令。Puppet的运作是典型的C/S模式,一个Server,多个Client。这个Server被称作master,而Client被叫作agent,也就是指属于master的node们。
  在每个instance上,无论它是master还是agent,Puppet都作为daemon程序常驻进程,agent们通过SSL标准与master建立加密认证连接,而master就作为接收上级(也就是用户)的命令并向agent们发送命令的指挥官(因为用户是BOSS,嘿嘿~)。
  打个不算很贴切的比方,master是教材科老师,专门负责给任课老师(agent)发书,他手上有语文、数学、英语的教材,每次学期刚开始时,任课老师会去他那里领自己要用的书,还有一种情况是某科的教材发生了变更,教材科老师也会通知相应的老师也会去向他拿,而不需要由任课老师自己去书店或是网上淘。Puppet中的master保存了对每个agent的相应配置,而且可以将相同类型的对象放在一起,比如语文是一类,数学是一类,而agent会定时向master发送请求来保持自己的配置是最新的,或者是由用户手动给master下指令让它来给agent们提供更新。Puppet的默认设置是agent们每三十分钟向master发一次更新请求。
  这个工作流程在Puppet的model中被叫为“Deployment”(部署)。《Pro Puppet》中还提到,除了这两种情况外,还有其它的,书上说在后面会讲到,嘿嘿,那就看到后面在写吧。
  在master和agent之间,到底是通过什么来配合的呢?Puppet使用一种陈述性的语言来定义配置项,这每一个配置项被叫做“resources”,Puppet关心的是哪些instance要完成哪些任何,而不是这些instance是如何完成任何的,像Perl或是Shell这类的脚本语言则是过程序的语言来完成配置任务。嘛……没准Puppet和脚本就像面向对象和面向过程一样。
  举例来说,我要在几台CentOS上安装tomcat,如果在使用了Puppet的情况下,只需要定义一个“tomcat安装任务”的resource,它的type(类型)是“安装”,它的title(标题)是“安装tomcat”,它的attribute(属性)值为“install tomcat”,也就是典型的一个resource的结构:
  type { title:
  attribute => value,
  }
  当然了,在Puppet中type是有规定的,并不是自己随便写的,在Puppet的官方文档里有所有可用的type:
  augeas
computer
cron
exec
file
filebucket
group
host
interface
k5login
macauthorization
mailalias
maillist
mcx
mount
nagios_command
nagios_contact
nagios_contactgroup
nagios_host
nagios_hostdependency
nagios_hostescalation
nagios_hostextinfo
nagios_hostgroup
nagios_service
nagios_servicedependency
nagios_serviceescalation
nagios_serviceextinfo
nagios_servicegroup
nagios_timeperiod
notify
package
resources
router
schedule
selboolean
selmodule
service
ssh_authorized_key
sshkey
stage
tidy
user
vlan
yumrepo
zfs
zone
zpool
页: [1]
查看完整版本: Puppet初粗入门(1)