Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45095
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 204
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-20 09:10
文章分类
文章存档

2014年(7)

2013年(4)

我的朋友

分类: 系统运维

2014-01-23 18:25:47

由于老板要求,需要开始学习puppet进行主机的自动化管理。首先,从puppet的目录结构开始……


默认安装之后puppet的配置文件在/etc/puppet下,这也是我们最开始仅需要理解的目录,其下有:
  • puppet.conf,很简单,就是整个puppet的主配置文件,主要由两部分组成:[master]和[agent];
  • 文件夹manifest/,里面包含:
                   -- site.pp #这是puppet启动必须的文件,它的作用是告诉puppet有哪些node级别的文件需要加载,使用import命令载入。例如:
    1. ----site.pp----
    2. import "nodes/*.pp" #加载nodes文件夹下所有以.pp为扩展名的文件

           --nodes/(可选) # 里面包含node级别的文件,这个文件夹不是必须存在的,也可以直接所有node级文件直接放到manifest下。但创建它并将node文件都放在里面,使得文件结构更清晰!
                         --defaultnode.pp(例),里面是对节点的定义,包含节点名的定义和该节点所包含的模块,例如 

  1. -----defaultnode.pp--------------
  2. node default{
  3.        include java7
  4.        include tomcat7
  5. }
使用include命令来包含模块名,这个文件定义了名为default的节点包含名为java7和tomcat7的两个模块,它们默认是存放在/etc/puppet/modules/下。

  • 文件夹modules/,存放模块
                    ---文件夹tomcat7/(模块名称即文件名)
                            --文件夹files/ 
里面包含所有该模块需要用到的文件资源
                                   -- apache-tomcat-7.0.47.tar.gz
                            --文件夹manifest/
里面包含init.pp文件,该文件时模块的核心,定义了各种动作和资源等
                                   
-- init.pp,下面是一个实例:

点击(此处)折叠或打开

  1. class tomcat7{
  2.   exec {'ensure tomcat dir':
  3.     user => work,        #文件夹的拥有者
  4.     group => work,        #所在组
  5.     command => 'mkdir -p /home/work/mobileapi',  #执行的指令
  6.     path => "/usr/bin:/usr/sbin:/bin",
  7.     unless => 'ls /home/work/mobileapi',
  8.   }
  9.   file {'/home/work/mobileapi/apache-tomcat-7.0.47.tar.gz':
  10.     source => 'puppet://daa-ypuppetmaster1.ab.elong.com/modules/tomcat7/apache-tomcat-7.0.47.tar.gz', #这就是需要使用的文件资源,存放在files/下
  11.     subscribe => Exec['ensure dir'],
  12.   }
  13.   exec {'unzip tomcat':
  14.     command => 'tar zxvf /home/work/mobileapi/apache-tomcat-7.0.47.tar.gz -C /home/work/mobileapi && rm -rf /home/work/mobileapi/apache-tomcat-7.0.47.tar.gz',
  15.     path => "/usr/bin:/usr/sbin:/bin",
  16.     unless => 'ls /home/work/mobileapi/tomcat/bin/version.sh',
  17.     subscribe => File['/home/work/mobileapi/apache-tomcat-7.0.47.tar.gz'],
  18.   }
  19. }
                --文件夹templates,包含模块可能用到的任何模板,此例未涉及。
      
            --文件夹java7
(结构与tomcat7一样,此略)
标准的modules文件夹下包含这三个文件夹,puppet会自动去识别。
  
                               
当然,还有别的文件夹。比如SSL,用于mater和agent直接的认证,这里都暂未涉及到,正在进一步学习中……O(∩_∩)O~



阅读(3638) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~