热门标签 | 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,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍了如何在Django项目中使用django-crontab库来设置和管理定时任务,包括安装、配置、编写定时任务以及常见问题的解决方案。通过具体实例,帮助开发者快速掌握在Django中实现自动化任务的方法。 ... [详细]
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社区 版权所有