puppet进阶管理之终极应用

     上一篇博客写了puppet操作file、cron、user、group、exec基础资源的使用,连接地址为 http://www.178linux.com/13990 

这次实验puppet的操作Package、Server和puppet的特殊资源属性Metaparameters。

回顾下Package、Server资源属性:  

    package的常用属性:
    ensure:present安装, installed安装, absent不能安装, latest,VERSION(2.3.1-2.el7)–目标状态
    name: 程序包名称:
    source:包文件的路径,可以是本地文件系统路径,也可以网络文件路径;
    puppet:///modules/MODULE_NAME/FILENAME

    provider:指明程序包提供者默认为yum;

 

   service的常用属性:
    ensure:
    true, running
    false, stopped
   enable: true|false 是否开机自动启动
   name:服务名称
   hasrestart:是否支持restart参数
   hastatus:是否支持status参数
   path: 服务脚本路径
   pattern:用于搜索此服务相关的进程的模式,当脚步不支持restart/status时,用于确定服务是否处于运行状态;

 

一、puppet使用package安装glances监控工具:

            

    1、编辑site.pp:

          site-glances.jpg

        本地测试site.pp

        glances-apply.jpg

      2、agent连接master:

            agent-glance.png

            agent运行glances监控命令:

            glance1.jpg

 

二、puppet特殊资源属性:Metaparameters

        
    puppet提供了before、require、notify、subscribe四个元参数来定义资源间的相关性,这四个元参数都有另外的其他资源或资源组作为其值,这也称     作资源引用,资源引用要通过“Type [title]”的方式进行,如User['test'],首字母必须大写。
    依赖关系:
        before => Type['title'] 被依赖的资源中使用
        require => Type['title']依赖其他资源的资源
        链式依赖:->
    通知关系
        notify =>  通知被依赖的资源中使用
        subscribe => 订阅监听其他资源的资源
        链式通知:~>

1、创建linux组,gid=3000。linux组的gid依赖用户centos的gid。

            user-group.jpg

           agent-user.jpg

            同理,如果使用require。在user段中加入require => Group['linux']即可。

三、puppet使用server属性安装nginx服务:

        nginx.png

        nginx-apply.jpg

        

四、puppet使用class、modules功能:

     类:命名的puppet代码块,需要时可通过名称进行调用,用于公共目的一组资源,是命名的代码块,创建后可用在puppet全局调用,类可以被继承

             备注:类的名字只能以小写字母开头,类在声明后方可执行。

     类的的声明:                 
         类声明方式1:声明一个类
               include class1, class2, …
                       class {'classname': }

         定义带参数的类:
                   class class_name ($arg1=value1, $arg2=value2) {
                    …puppet code…
                                           }

         类声明方式2,传递参数:
               class {'class_name':
                    para1 =>  new_value1,
                    para2  =>  new_value2,
                           }

1、使用class创建webserver类:

          class-nginx.jpg

            本地测试:

         class-nginx1.jpg

 

puppet模板:基于ERB模板语音,在静态文件中使用变量等编程元素生成适用于多种不用的环境的文本(配置文件):Embedded RUBY
                      用于实现在文本中嵌入ruby代码,原来的文本信息不会改变,但ruby代码会被执行,执行结果将直接替换原来代码:

         puppet模块:为了实现某种完备功能而组织成的一个独立的、自我包含的目录结构

              目录结构:/etc/puppet/modules
               module_name:  manifests: –资源清单
               init.pp: 至少应该包含一个与当前模块名称同名类;      
               MODULE_NAME::[SUBDIR_NAME]::MANIFESTS_FILE_NAME
               files:静态文件
               puppet url    puppet:///modules/MODULE_NAME/[SUBDIR_NAME]/FILE_NAM
               templates: 模板文件目录    模板文件:*.erb
               template('MODULE_NAME/TEMPLATE_FILE_NAME');

               lib: 插件目录  tests: 模块使用帮助文档    spec: 类似于tests目录,存储lib目录下定义的插件的使用帮组和示例文件:

 

1、手工创建nginx模块并新建nginx、nginx_webserver、nginx_proxy类:

    module-nginx1.jpg

    [root@master modules]# cp /etc/puppet/manifests/site.pp /etc/puppet/modules/nginx/manifests/init.pp

    [root@master modules]# cp /opt/moudules/nginx/nginx_proxy.conf /etc/puppet/modules/nginx/files/nginx.conf

        module-nginx2.jpg

     编辑/etc/puppet/manifests/site.pp调用模板中的类:(在生成环境中根据不同节点调用不同的模板和类)

        module-site.jpg

    在agent.puppet.com上应用模板中的类nginx_proxy:

        moudule-agent1.jpg

        注意:生成环境中先在本地测试跑在运行

                    puppet agent –server=master.puppet.com –no-daemonize –verbose –noop

2、puppet多环境配置:

        在实际工作中服务器配置可能会有开发环境、测试环境、生成环境。puppet可以定义不同的环境配置让其agent连接。

        master:  vim /etc/puppet/puppet.conf  在master端中添加支持

                     [master]
                     environmnet=production,testing,development — 声明master支持环境
                      [production]
                              manifest = /etc/puppet/envionments/production/manifests/
                              modulepath = /etc/puppet/envionments/production/modules/
                              fileserverconfig = /etc/puppet/filesserver.conf
  
                      [testing]
                              manifest = /etc/puppet/envionments/testing/manifests/
                              modulepath = /etc/puppet/envionments/testing/modules/
                              fileserverconfig = /etc/puppet/filesserver.conf

                      [development]
                              manifest = /etc/puppet/envionments/development/manifests/
                              modulepath = /etc/puppet/envionments/developmentmodules/
                              fileserverconfig = /etc/puppet/filesserver.conf

agent:
      [agent] –声明agent处于哪个环境 
          enviroment = testing

五、puppet拓展思路:

随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster响应很慢,压力大,解析缓慢,有什么优化的方案吗?可以使用Puppetmaster配置多端口,结合Nginx web代理,这样puppetmaster承受能力至少可以提升10倍以上。

要使用puppet多端口配置,需要指定mongrel类型,默认没有安装。如果配置多主集群的话,可以共享master1的证书,然后另外一台master通过NFS挂载证书即可。

                    

 

 

 

   感谢马哥,每天进步一点点!         

原创文章,作者:n18-jude,如若转载,请注明出处:http://www.178linux.com/14611

(0)
n18-juden18-jude
上一篇 2016-04-12 19:00
下一篇 2016-04-12 19:00

相关推荐

  • 重定向与管道

         本次内容    1.三种I/O设备    2.把I/O从定向入文件    3.命令tr    4.使用管道链接命令    5.tee   我们都知道程序是由:指令+数据    &n…

    2017-07-23
  • awk

    文本处理工具 文本处理三工具:grep,sed,awk grep,egrep,fgrep:文本过滤工具 sed:行编辑器 awk:报告生成器,格式化文本输出; awk gawk – pattern scanning and processing language lrwxrwxrwx. 1 root root 4 May 17 19:23 /bi…

    Linux干货 2017-05-21
  • etc的常见问答

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost tuser1]# cp -r /etc/skel/ /home/tuser1 [root@localhost tuser1]# chmod -R go= /home/tuser1/ [root…

    2017-12-26
  • pxe自动安装linux

    配置自动安装操作系统 1.网卡应支持pxe技术,由网卡作为dhcp的客户端向dhcp服务器请求一个IP地址,dhcp会将ip,网关等信息和的tftp服务器的地址应加载的文件名提供给客户端 2.根据dhcp服务器提供的信息网卡上内置的tftp客户端向tftp服务器发出请求,将文件下载至内存,包括bootloader(可能有选单),initrd,内核等(内核和i…

    Linux干货 2016-11-11
  • N25-第一周作业

    1、描述计算机的组成及其功能:   (1)按硬件来分,硬件系统主要有:运算器、控制器、存储器、输入设备和输出设备;    ① 控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等;    ② 运算器的功…

    Linux干货 2016-12-05
  • LAMP的编译安装

    一、编译安装amp: (1)系统环境:centos6,7 httpd依赖于apr和apr-util appache protable runtime (2)开发环境: Development Tools,Server Platform Development (3)各程序的版本: httpd:2.2,2.4 php:5.x mysql:5.1,5.5,5.6…

    Linux干货 2016-10-17