• 学习Puppet(三)


    一、相关概念:

    1、  puppet基于C/S架构,使用ruby编写,在类UNIX平台上集中配置管理系统,它可以管理配置文件、用户、cron任务、软件包、系统服务。

    2、  puppet把系统实体称为资源。

    3、  使用协议xmlrpc,xmlrpc是使用https作为传输协议的rpc机制,使用xml文本的方式传输命令和数据。

    4、  可有多个master多个client,所有的client都定期(默认30分钟)使用facter工具把client的基本配置信息通过https的xmlrpc协议发送给puppetmaster,puppetmaster-side通过分析client-side主机名,找到该主机的配置代码,继而编译,将编译好的配置代码发回client-side,client执行代码完成配置,并把代码执行情况反馈给puppetmaster。

    5、  puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.conf、server.sysconfig、client.sysconfig。

    6、  master-side启动脚本中涉及到文件/etc/sysconfig/puppetmaster,可将配置文件/etc/puppet/server.sysconfig复制为/etc/sysconfig/puppetmaster;也可更改启动脚本(:%s#/etc/sysconfig/puppetmaster#/etc/puppet/server.sysconfig#g)。

    7、  两种形式:分发(master-side向client-side发送相关配置文件)、提取(client-side向master-side请求信息),本篇使用的是提取方式。

    8、  #ll /var/lib/puppet/yaml/node/  (可通过查看此目录下各节点中的文件时间,如果时间相关太多证明某个节点出问题了,需要手动处理)

    9、  所需软件:facter-1.6.18-8.el6.src.rpm(收集信息工具)、puppet-2.7.26-2.el6.src.rpm

    10、             下载地址:http://fedoraproject.org/wiki/EPEL

    11、             环境:redhat6.4  X86_64,准备两台机器,一台服务端一台客户端

    二、安装及使用:

    1、安装

    master-side和agent-side都执行以下语句:

    #service iptables  stop

    #setforce 0

    #ntpdate 192.168.1.222  (时间同步,极其重要,集群内的所有机器时间误差控制在秒级以内,否则会出离奇错误)

    #yum -y  install  ruby

    #groupadd puppet

    #useradd -g  puppet  -s /bin/false  -M  puppet

    #vim /etc/sysconfig/network

    HOSTNAME=master.test.com  (服务端执行此句,服务端一定要是完整域名形式)

    #vim /etc/sysconfig/network

    HOSTNAME=agent.test.com  (客户端执行此句)

    #rpm -ivh  /usr/src/facter-1.6.18-8.el6.src.rpm

    #tar zxvf /root/rpmbuild/SOURCES/facter-1.6.18-8.tar.gz

    #cd  /root/rpmbuild/SOURCES/facter-1.6.18

    #ruby install.rb

    #rpm -ivh /usr/src/puppet-2.7.26-2.el6.src.rpm

    #tar zxvf /root/rpmbuild/SOUCES/puppet-2.7.26.tar.gz

    #cd  /root/rpmbuild/SOURCES/puppet-2.7.26

    #ruby install.rb

    #mkdir /etc/puppet/

    #mkdir /usr/src/puppet-2.7.26-2/redhat/* /etc/puppet

    #cp /usr/src/puppet-2.7.26-2/auth.conf /etc/puppet/

    #mkdir /etc/puppet/manifests/  (master-side创建此目录,agent-side不需创建,此目录在配置文件server.sysconfig中有定义,为简便直接创建就不改配置文件了)

    #cp /etc/puppet/server.int /etc/init.d/puppetmaster  (此句在master-side执行,在agent-side则将client.init复制为/etc/init.d/puppetagent)

    #chmod 755  /etc/init.d/puppetmaster 

    #chkconfig --add  puppetmaster

    #chkconfig --level  35  puppetmaster on

    #service puppetmaster  start  (agent-side启动puppetagent)

    #netstat lnt  | grep  8140

    2、使用(三步:请求-查询-授权):

    #man puppetd

    #man puppetca

    在agent-side执行:

    #puppetd --test  --server  master.test.com  (请求)

    在master-side执行:

    #puppetca -l  (查询谁在请求)

    #puppetca -s  agetn.test.com  (有查询结果再授权)

    #ll /var/lib/puppet/ssl/ca/signed/*  (此目录下多了agent.test.com)

    注:若出错,删除以下文件重新执行以上三步:

    #rm -rf  /var/lib/puppet/ssl/  (agent-side直接将ssl目录删掉)

    #rm -rf /var/lib/puppet/ssl/ca/signed/agent.test.com   (在signed目录下仅将出错的客户端的那条记录删掉)

    3、配置管理:

    以下例子逐个添加,在agent-side请求,查看每个例子对应目录文件是否更新。

    #vim /etc/puppet/manifests/site.pp  (仅在master-side编辑,此文件在配置文件server.sysconfig中有定义)

     node  default {   (default表示请求的所有agent-side都执行此段中的语句,也可写成单独的agent,例如:node  ’agent.test.com’,表示仅某一客户端执行如下语句)

         file  {“/tmp/test.txt”:  (例1:首行用冒号‘:’,之后的多行用逗号或分号分隔,最后一行可以没有,此文件是在agent-side创建的,master-side不需创建此文件)

              content=>”I’m a test puppet ”, (文件内容)

         }

         file  {“/tmp/clearlog.sh”:  (例2)

              owner=>”puppet”,  (属主)

              group=>”puppet”,  (属组)

              mode=>”0777”,  (权限)

                 content=>”/bin/find  /tmp/  -name 123*  |  xargs rm  -rf”,  (文件内容)

        }

         group  {“test”:  (例3,管理用户组)

              gid=>999,

              ensure=>present,  (present表示创建,absent表示删除)

        }

         user  {“test”:    (管理用户)

             name=>”test”,

             uid=>999,

             gid=>999,

             managehome=>true,  (创建家目录)

             groups=>[‘puppet’,’root’],  (附加组)

             shell=>”/bin/bash”,

            ensure=>present,

         }

          cron  {“ntptime”:  (例4,计划任务)

              command=>”/usr/sbin/ntpdate 192.168.1.222  >  /dev/null 2>&1”,

              minute=>’*/10’,

              hour=>[‘2-4’],

              monthday=>[‘2’,’4’],  (这三行分别为:分时日,月周用*表示)

              environment=>”PATH=/bin:/usr/bin:/usr/sbin”,  (执行命令必须要指定环境变量)

               ensure=>present,

         }

    }

    #service puppetmaster  restart  (首次编辑完此文件需要重启服务,之后修改则不需重启)

    #puppetd --test  -server  master.test.com  (在agent-side请求,此句可以写成脚本文件,注意/var/lib/puppet/state/lock)

    #ll /tmp/

    #crontab -l  (依次查看是否执行成功)

    例5:同步master-side某一目录下的文件到agent-side

    #vim /etc/puppet/fileserver.conf

    添加如下语句:

    [system_conf]

    path  /etc/puppet/system_conf/

    allow  *

    #service puppetmaster  restart  (首次编辑完此文件需要重启服务,之后则不需要)

    #mkdir /etc/puppet/system_conf

    #cp -p  /etc/resolv.conf  /etc/puppet/system_conf/

    #vim /etc/puppet/system_conf/resolv.conf

     添加语句#test  (与agent-side端文件做区别)

    #vim /etc/puppet/manifests/site.pp

    node ‘agent.test.com’  {    (仅将此段语句应用于agent客户端)

         ……

    file  {“/etc/resolv.conf”:  (还可以配置hosts,i18n,yum等系统配置文件)

        mode=>664,  (系统文件一定注意文件权限)

        source=>”puppet://master.test.com/system_conf/resolv.conf”,

    }

    }

    4、生产中使用案例:(下一篇详细介绍高级用法)

    wKiom1Xf-MCDZDYaAADe6TCQ2Io313.jpg

    本篇是学习《老男孩网络视频》做的笔记。

  • 相关阅读:
    PHP配置redis支持
    redis入门——redis常用命令
    CentOS7 linux下yum安装redis以及使用
    Linux安装配置git
    Java基础88 数据库设计的三大范式
    Java基础87 MySQL数据约束
    Java基础85 MVC开发模式
    错误/异常:java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind;的解决方法
    Java基础84 javaBean规范
    Java基础83 JSP标签及jsp自定义标签(网页知识)
  • 原文地址:https://www.cnblogs.com/wuhg/p/10002250.html
Copyright © 2020-2023  润新知