Linux运维 第五阶段 puppet基础

简介:

一、相关概念:

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

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

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

4、  可有多个master多个client,所有的client都定期(默认30分钟)使用facter工具把client的基本配置信息通过httpsxmlrpc协议发送给puppetmasterpuppetmaster-side通过分析client-side主机名,找到该主机的配置代码,继而编译,将编译好的配置代码发回client-sideclient执行代码完成配置,并把代码执行情况反馈给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,如需转载请自行联系原作者

相关文章
|
20天前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
23 0
|
22天前
|
存储 运维 监控
运维.Linux下执行定时任务(中:Cron的常用替代方案)
本文是关于Linux下执行定时任务系列的第二部分,主要探讨除了Cron之外的常用替代方案。介绍了Systemd Timers、Anacron及at命令三种工具,它们分别适用于不同场景下的定时任务需求。文章详细分析了每种工具的特点、工作原理、基本使用方法及其高级功能,并对比了它们各自的优缺点,帮助读者根据实际情况选择最适合的定时任务解决方案。此外,还提供了指向具体实例和进一步阅读材料的链接。
52 4
运维.Linux下执行定时任务(中:Cron的常用替代方案)
|
15天前
|
移动开发 运维 网络协议
运维必备 | Linux netstat命令详解
运维必备 | Linux netstat命令详解
|
15天前
|
运维 监控 Unix
运维必看,Linux 远程数据同步工具详解。
运维必看,Linux 远程数据同步工具详解。
|
22天前
|
运维 Linux Apache
【一键变身超人!】Puppet 自动化运维神器 —— 让你的服务器听话如婴儿,轻松管理资源不是梦!
【8月更文挑战第9天】随着云计算与容器化技术的发展,自动化运维已成为现代IT基础设施的核心部分。Puppet是一款强大的自动化工具,用于配置管理,确保系统保持预期状态。通过易于理解的配置文件定义资源及其依赖关系,Puppet实现了“基础设施即代码”的理念。本文简要介绍了Puppet的安装配置方法及示例,包括Puppet Agent与Master的安装、基本配置步骤和一个简单的Apache HTTP Server管理示例,展示了Puppet在实际应用中的强大功能与灵活性。
28 9
|
22天前
|
运维 监控 持续交付
"揭秘Puppet:自动化运维的超级英雄,一键驾驭复杂IT环境,让运维繁琐瞬间灰飞烟灭,引领未来运维新纪元!"
【8月更文挑战第9天】Puppet作为自动化运维的杰出代表,凭借其强大的配置管理和高度可定制性,助力IT运维实现自动化与智能化转型。通过定义资源模型与使用声明式语言描述系统状态,Puppet能自动调整系统至期望状态,实现标准化运维流程。其工作流程包括定义-应用-报告三步,支持从服务器配置到复杂网络、数据库管理等多种场景。示例代码展示了如何自动化部署Apache服务器,体现了Puppet在实际操作中的高效与便捷。随着技术演进与社区壮大,Puppet将持续推动运维领域的创新发展。
48 6
|
22天前
|
存储 Linux Shell
运维系列.Linux下的用户管理
运维系列.Linux下的用户管理
18 1
|
1天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行与脚本的奥秘
【8月更文挑战第30天】在Linux的世界里,命令行是运维人员的灵魂之窗。掌握命令行,就像握住了一把钥匙,能开启系统管理的宝藏箱。本文将带你走进Linux的命令行世界,通过实际代码示例,解锁那些高效管理和维护系统的秘籍。你将学到不仅仅是命令本身,更是如何将这些命令编织成强大的脚本,让日常的运维工作变得游刃有余。准备好跟随我的步伐,一起深入探索Linux命令行与脚本的奥秘吧!
|
26天前
|
运维 Linux Shell
从Linux小白到大神的逆袭之路:解锁高级自测秘籍,让你的Linux技能瞬间燃爆,成为运维界的超级英雄!
【8月更文挑战第5天】Linux作为开源世界的基石,凭借其强大功能与高度可定制性,吸引着众多技术爱好者与专业人士。对于希望精进Linux系统管理的学习者来说,“Linux高级自测学习”是一次技术深潜之旅,也是对个人极限的挑战。本学习路径首先回顾基础操作,并进阶至LVM磁盘管理、系统性能优化、复杂网络配置与安全、自动化运维及容器化技术等领域。通过实践与探索,你将逐步解锁Linux潜力,成为高手。技术之路永无止境,保持好奇与求知心至关重要。
38 4
|
8天前
|
运维 监控 搜索推荐
在Linux中,运维人员与运营人员工作职责分别是什么?
在Linux中,运维人员与运营人员工作职责分别是什么?
下一篇
云函数