热门标签 | 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,如需转载请自行联系原作者




推荐阅读
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 在将Web服务器和MySQL服务器分离的情况下,是否需要在Web服务器上安装MySQL?如果安装了MySQL,如何解决PHP连接MySQL服务器时出现的连接失败问题? ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 在数据库设计中,谨慎使用外键至关重要。本文探讨了九个关键原因,包括数据完整性的维护、性能优化、系统复杂性的管理、数据迁移的灵活性以及对外部系统的依赖性控制。通过深入分析这些因素,可以帮助开发人员和架构师做出更明智的设计决策,确保数据库系统的高效与稳定。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
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社区 版权所有