热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux运维第五阶段puppet基础

一、相关概念:1、puppet基于CS架构,使用ruby编写,在类UNIX平台上集中配置管理系统,它可以管理配置文件、用户、


一、相关概念:


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


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


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


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


5、  puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.confserver.sysconfigclient.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-sideclient-side发送相关配置文件)、提取(client-sidemaster-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-sideagent-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\n”, (文件内容)


     }


     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






本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1689264,如需转载请自行联系原作者




推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 探讨在同时运行 Rails 3 和 Rails 4 的环境中,如何有效地管理和同步 Sprockets 清单文件,以支持无中断的资产加载及回滚功能。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文详细介绍了Java Web应用程序中的过滤器(Filter)功能,包括其作用、实现方式及配置方法。过滤器可以在请求到达目标资源之前对其进行预处理,并在响应返回给客户端之前进行后处理。 ... [详细]
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • 本文介绍了如何在Django项目中使用django-crontab库来设置和管理定时任务,包括安装、配置、编写定时任务以及常见问题的解决方案。通过具体实例,帮助开发者快速掌握在Django中实现自动化任务的方法。 ... [详细]
  • 本文探讨了在Unix/Linux环境下,如何有效地管理和运行长期或无限期运行的Python进程。文章不仅提供了关于进程崩溃后的处理方法,还讨论了使用Cron和Inetd等工具来优化进程管理的策略。 ... [详细]
author-avatar
Smile--麦芽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有