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
下一篇 2016-04-12

相关推荐

  • magedu_20160808

    行编辑器sed与vim文本处理器     一.行编辑器sed的使用介绍     sed英文全称stream editor,行编辑器。其工作模式为将文件中内容按行转移至sed模拟空间中,根据地址判定此行是否匹配,如果匹配,根据命令输出并打印,如果不匹配,按照默认打印到屏幕上。它的作用是根据选项和地址界定‘scr…

    Linux干货 2016-08-10
  • Linux运维学习历程-第一天-基础知识

    什么是Linux   Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 为什么学Linux…

    Linux干货 2016-08-03
  • Linux常见发行版本以及Linux哲学思想

    什么是Linux?  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。  Linux操作系…

    Linux干货 2016-08-15
  • 用户组管理系列(二):权限设置

    1、权限简介    操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可…

    Linux干货 2016-08-05
  • LVS –负载均衡基础

    一 负载均衡的五种解决方案 1 http重定向 HTTP重定向就是应用层的请求转发。用户的请求其实已经到了http重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。 优点:简单 缺点:性能较差 2 DNS域名解析负载均衡 DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS根据服务器直…

    Linux干货 2017-06-22
  • 流式传输的两大主流种类及流式传输特点

     流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。(百度百科)     在网络上传输音/视频(英文…

    Linux干货 2015-04-10