puppet的入门

1.简介

puppet是一种采用C/S星状结构的linux、Unix平台的集中配置管理系统。

puppet拥有自己的语言,可管理配置文件、用户、cron任务、软件包、系统服务等。

puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源的依赖关系。

2.工作原理

puppet是一个或者多个maste,众多client,所有的客户端都定期(默认为30分钟)使用facter工具把客户端的基本配置信息,通过https的xmlrpc协议发送给服务器端,服务器端通过分析客户端主机名,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发回客户端,客户端执行代码完成配置。并且把代码执行情况反馈给puppet服务器端。

注释:xmlrpc是使用http协议作为传输协议rpc机制,使用xml文本的方式传输命令和数据。

3、puppet的工作流程

1)  客户端puppetd调用facter,facter探测出主机的一些变量,例如主机名、内存大小、IP地址等。puppetd把这些信息通过ssl连接发送到服务器端;

2)  服务器端的puppetmaster检测客户端的主机名,然后找到manifest里面对应的node配置,并对该部分内容进行解析,facter送来的信息可以作为变量处理,node牵涉到的代码才能解析,其他没有涉及的代码不解析。解析分为几个阶段,语法检查,如果语法错误就报错。如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”,然后把伪代码发给客户端;

3)  客户端接收到“伪代码”,并且执行,客户端把执行结果发送给服务器;

4)  服务器把客户端的执行结果写入日志。

puppet工作过程中有两点值得注意:

第一,   为了保证安全,client和master之间是基于ssl和证书的,只有经过master证书认证的client可以与master通信;

第二,   puppet会让系统保持在你所期望的某种状态并一直维持下去,如检测某个文件并保证其一直存在,保证ssh服务始终开启,如果文件被删除了或者ssh服务被关闭了,puppet下次执行时(默认30分钟),会重新创建该文件或者启动ssl服务。

4.安装部署

1)环境准备(master和agent)

# etc/init.d/iptables stop                      关闭iptables
# /usr/sbin/ntpdate pool.ntp.org 时间同步,这块很重要
# setforce 0 闭安全策略

2)修改主机名和host解析

echo "10.0.0.60  master.test.com">>/etc/hosts
echo "10.0.0.61 agent.test.com">>/etc/hosts

3)安装facter和puppet

1、安装ruby环境
# yum install ruby –y
2、建立puppet组和用户
# groupadd puppet
# useradd -g puppet -s /bin/false -M puppet
3、下载并安装软件包
# wget http://downloads.puppetlabs.com/facter/facter-1.6.5.tar.gz
# wget http://downloads.puppetlabs.com/puppet/puppet-2.6.13.tar.gz
# tar xf facter-1.6.5.tar.gz
# cd facter-1.6.5
# ruby install.rb
# facter 检查,通常会收集主机的信息参数
# tar xf puppet-2.6.13.tar.gz
# cd puppet-2.6.13
# ruby install.rb
# cp conf/redhat/*         /etc/puppet/
# cp conf/auth.conf        /etc/puppet/

master端执行:

# mkdir /etc/puppet/manifests                               创建配置文件目录
# cp /etc/puppet/server.init /etc/init.d/puppetmaster 拷贝启动文件到/etc/init.d下面
# chmod 755 /etc/init.d/puppetmaster 给权限
# /etc/init.d/puppetmaster start 启动服务
# lsof -i:8140 查看端口是否起来

授权(三步:请求-查询-授权):

1、agent端执行:目的向master请求证书
# puppetd --test --server master.test.com 向master请求证书
2、master端执行
# puppetca -l 查看谁在请求证书
# puppetca -s agetn.test.com 有查询结果再授权
# puppetca -a 给所有的请求都授权
#ll /var/lib/puppet/ssl/ca/signed/* 此目录下多了agent.test.com
3、agent端执行
# puppetd --test --server master.test.com
4、若出错,删除以下文件重新执行以上三步:
# rm -rf /var/lib/puppet/ssl/ 删除agent端的ssl
# rm -rf /var/lib/puppet/ssl/ca/signed/agent.test.com 删除master端的

4)资源

常用的资源主要有以下几个:

file:            文件管理

package:   软件包管理

service:     系统服务管理

cron:         配置定期任务

exec:        运行shell命令

5、举例说明其实际应用

5.1 文件配置

master端:服务器端保存着所有对客户端服务器的配置代码,在puppet里面叫做manifests,客户端下载manifest之后,可以根据manifest对服务器进行配置,例如软件包管理,用户管理和文件管理等等。

# cd /etc/puppet/manifests/
# cat site.pp 此文件在配置文件server.sysconfig中有定义
node default{
file {"/tmp/test.txt": 首行用冒号‘:’,之后的多行用逗号或分号分隔,最后一行可以没有
content=>"hello world\n";
}
}
意思:有一个默认节点(每一个agent叫做一个节点,在这个节点的/tmp下创建一个文件叫test.txt,里面的内容为hello world).
agent端去验证
# puppetd --test --server master.test.com 所有在master端配置以后,是在agent端来执行
# cat /tmp/test.txt

再写一个:往/tmp 目录发送一个脚本

# cat site.pp
node default{
file { "/tmp/clearlog.sh":
content=>"find /log/ -type f -size +10KB |xargs rm -f\n";
}
}
# puppetd --test --server master.test.com             此句可以写成脚本文件,注意/var/lib/puppet/state/lock
# cat /tmp/test.txt

5.2 创建文件并改变用户和授权

# cat site.pp
node default{
file {"/tmp/test.txt":
owner => "root", 属主
group => "puppet", 属组
mode => "0777", 权限
content => "test" 文件内容
}
}
agent端验证
# puppetd --test --server master.test.com
ll /tmp/test.txt 权限和属组已改变
# cat /tmp/test.txt 文本内容已改变
意思:当agent端执行的时,会到agent的/tmp下,创建文件test.txt并设置改文件所属用户为root,所属组为puppet,然后权限设置为 777

5.3 管理用户和组

group  {“test”:
gid=>999,
ensure=>present, present表示创建,absent表示删除
}
user {“test”: 管理用户
name=>”test”,
uid=>999,
gid=>999,
managehome=>true, 创建家目录
groups=>[‘puppet’,’root’], 附加组
shell=>”/bin/bash”,
ensure=>present,
}

5.4 管理crontab任务

# cat site.pp
cron { "ntp time":
command => "/usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1",
minute => '*/10',
hour => ['2-4'],
monthday => [2,4],
ensure => present,
environment => "PATH=/bin:/usr/bin:/usr/sbin"
}
agent端来验证
# puppetd --test --server master.test.com
#  crontab -l

 5.5 同步master端/etc/puppet/system_conf/script下的文件到agent

a、修改master配置文件
# vim /etc/puppet/fileserver.conf
[ system_conf ]
path /etc/puppet/system_conf/
alow *
b、重启master
# /etc/init.d/puppetmaster restart
c、把需要同步的文件放到master 的/etc/puppet/system_conf/下
# mkdir /etc/puppet/system_conf
# cp /etc/resolv.conf /etc/puppet/system_conf/
# echo "#test" >>/etc/puppet/system_conf/resolv.conf
d、修改master端 site.pp
# vim /etc/puppet/manifests/site.pp
file { “/etc/resolv.conf”:
mode=>644, 系统文件一定注意文件权限
source =>
“puppet://master.test.com/system_conf/resolv.conf”
}
可以配置:
系统文件 hosts , resolv.conf ,i18n ,yum配置文件
脚本文件 /script/service_all_clear.sh

5.6 根据业务配置不同的机器

#  vim /etc/puppet/manifests/site.pp
node default{ 默认客户端
file {"/tmp/test.txt":
owner => "root",
group => "puppet",
mode => "0777",
content => "test"
}
node ‘agent.test.com’ { 仅应用于agent客户端,可以用正则表达式
file {“/etc/resolv.conf”:
mode=>664,
source=>”puppet://master.test.com/system_conf/resolv.conf”,
}
}

6、重要配置文件

puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.conf(文件服务器)、server.sysconfig(服务端环境变量)、client.sysconfig(客户端环境变量)

master端启动脚本中涉及到文件/etc/sysconfig/puppetmaster,可将配置文件/etc/puppet/server.sysconfig复制为/etc/sysconfig/puppetmaster;

也可更改启动脚本(:%s#/etc/sysconfig/puppetmaster#/etc/puppet/server.sysconfig#g)。

学习Puppet(一)的更多相关文章

  1. 学习Puppet(三)

    一.相关概念: 1.  puppet基于C/S架构,使用ruby编写,在类UNIX平台上集中配置管理系统,它可以管理配置文件.用户.cron任务.软件包.系统服务. 2.  puppet把系统实体称为 ...

  2. 学习Puppet(二)

    puppet的工作流程 1.简介 puppet是一种采用C/S星状结构的linux.Unix平台的集中配置管理系统.puppet拥有自己的语言,可管理配置文件.用户.cron任务.软件包.系统服务等. ...

  3. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  4. 第一篇puppet

    1,什么是puppet puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统服务等.puppe ...

  5. Advanced Puppet 系列的前言

    什么是Advanced 在网络上,你能找到大量关于Puppet的安装,配置以及基础用法的文章和博客.你在通过一段时间的实战后,熟练掌握了Puppet基础用法,随着你管理的集群日益扩大,你的部署逻辑越来 ...

  6. 企业级自动化运维工具---puppet详解

    本文收录在Linux运维企业架构实战系列 1.认识puppet 1.1 引入 puppet是什么,咱们先不用专业的名词解释它,咱们先描述一些工作场景,看明白这些工作场景,自然会知道puppet是什么. ...

  7. puppet(4)-类、模版语言、模块

    puppet(4)-类.模版语言.模块 代码重用: class, module 类 类的简单说明 类是用于公共目的的一组资源,是命名的代码块,创建后可在puppet全局进行调用,类可以继承类是我们构建 ...

  8. 项目10.2-企业级自动化运维工具---puppet详解

    1.认识puppet 1.1 引入 puppet是什么,咱们先不用专业的名词解释它,咱们先描述一些工作场景,看明白这些工作场景,自然会知道puppet是什么. (1)场景一: 管理员想要在100台服务 ...

  9. 1、puppet基础

    Puppet:IT基础设施自动化管理工具 参考文章: https://yq.aliyun.com/articles/120228 http://www.51niux.com/?id=105 http: ...

随机推荐

  1. 轻松了解DNS劫持

    对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑.手机.电视这些设备到底是如何被"连接"起来的.本文通过"我",一个普通的网络请求的视角,给大家介绍下&q ...

  2. k8s全方位监控 -prometheus实现短信告警接口编写(python)

    1.prometheus短信告警接口实现(python)源码如下: import subprocess from flask import Flask from flask import reques ...

  3. 前端人员不要只知道KFC,你应该了解 BFC、IFC、GFC 和 FFC

    前言 说起KFC,大家都知道是肯德基,但面试官问你什么是BFC.IFC.GFC和FFC的时候,你是否能够像回答KFC是肯德基时的迅速,又或者说后面这些你根本就没听说过,作为一名前端开发工程师,以上这些 ...

  4. Chapter03 Java变量

    Chapter03 变量 目录 Chapter03 变量 3.1 为什么需要变量 3.1.1 一个程序就是一个世界 3.1.2 变量是程序的基本组成单位 3.1.3 简单原理图 3.2 变(变化)量( ...

  5. (八)使用 jmh 压测 Dubbo

    1.JMH简介 JMH即Java Microbenchmark Harness,是Java用来做基准测试的一个工具,该工具由OpenJDK提供并维护,测试结果可信度高. 相对于 Jmeter.ab , ...

  6. tp6微信公众号开发者模式获取access_token

    1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...

  7. 微服务7:通信之RPC

    ★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...

  8. AVCaptureSession部分用法

    原文链接 AVCaptureSession阻塞主线程问题 前阵子程序中出现了一个奇怪的 bug,在 iOS 系统上,页面弹出的时候会卡很久,相机始终黑屏,大概6-7秒钟,跟踪具体每个步骤花费时间的时候 ...

  9. 如何修改windows Server 2012 远程桌面连接默认端口

    如何修改windows Server 2012 远程桌面连接默认端口   修改windows 2012/win8.win7远程桌面连接默认端口一般需要修改注册表四个地方[HKEY_LOCAL_MACH ...

  10. DirectX11 With Windows SDK--37 延迟渲染:光源剔除

    前言 在上一章,我们主要介绍了如何使用延迟渲染,以及如何对G-Buffer进行一系列优化.而在这一章里,我们将从光源入手,讨论如何对大量的动态光源进行剔除,从而获得显著的性能提升. 在此之前假定读者已 ...