puppet优势:容易理解、用户较多、门槛低、简单、安装配置文件较少

puppet使用Ruby语言开发,安装puppet需要安装Ruby

puppet运行环境:Redhat、Centos、Windows、Ubuntu、Fedora、Debian    对于系统版本是有要求的,这里不叙述

puppet硬件要求很低,最小配置  双核、1G内存即可

puppet工作流程:

(1)Agent访问Master建立访问关系----Master对Agent证书授权签名允许Agent访问自己

(2)Master调用Agent的Facter来获取Agent的机器变量,例如:内存、CPU、IP、主机名等--Agent将信息SSL加密传输给Master,Master以变量形式获取这些信息

(3)Master接收Agent的主机的主机请求,把他们发送到本地manifests或者ENC然后进行配置查询

(4)根据Agent的HOSTNAME匹配到相应的Node节点,最终编译成Catalog

(5)Agent接受到Catalog后在本机应用Puppet的配置信息

(6)根据接受到的Catalog中的信息判断Agent在执行时有没有文件要从Master推送到Agent,如果有则想Master发起请求获取文件

(7)将Agent的信息以报告的形式上报Master,puppet 2.6或者2.6以下的版本不会推送,需要自己在配置文件中设置才可以开启,2.7以后默认开启此功能。

以上数据参考资料摘下来的。。。下面开始动手搭建

-安装环境搭建:

1.关闭iptables

2.关闭selinux

3.服务端与客户端时间同步   ntp

4.服务端&&客户端  主机名配置,并相互写入hosts  (我的分别为:server.puppet.com 和 agent.puppet.com)

[root@server]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain VM_9_233_centos
192.168.10.2 server.puppet.com
192.168.10.3 agent.puppet.com
[root@server]#

  

-安装puppet服务端与客户端

server:

[root@server]#wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm  #(如果下载不了,那就说明你网络无法连接过去,自行解决吧)
[root@server]#yum install puppetlabs-release-6-1.noarch.rpm 
[root@server]#yum install puppet-server -y
[root@server]#/etc/init.d/puppetmaster restart 
[root@server ]# ll /etc/puppet/
total
-rw-r--r-- root root Apr auth.conf
drwxr-xr-x root root Dec : environments
-rw-r--r-- root root Apr fileserver.conf
drwxr-xr-x root root Dec : manifests
drwxr-xr-x root root Apr modules
-rw-r--r-- root root Apr puppet.conf
[root@server ]#

agent: 

[root@server]#wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm

[root@server]#yum install puppetlabs-release-6-1.noarch.rpm
[root@server]#yum install puppet -y  

-agent证书的申请

1.agent发起请求   (agent会寻找带puppet的服务器,此时环境准备的hosts就起到作用 了,会引导到server端去申请证书)

[root@agent ~]# puppet agent --server server.puppet.com --test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for 10-74-82-16.oss.letvcdn.com.puppet.com
Info: Certificate Request fingerprint (SHA256): 0C:3C:94:57:05:40:88:43:2C:B3:C9:C5:65:5D:3A:B2:74:90:A8:31:6A:77:8B:5F:9D:E4:6A:07:8C:09:47:6F
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled 

2.server端查看是否接收到请求,并颁发证书

[root@server manifests]# puppet cert --list   #查看是否有未颁发的证书请求
"192-168-10-3.agent.puppet.com" (SHA256) CA:52:54:66:2A:CC:A5:F1:2C:BA:6D:6F:78:F5:A6:D0:42:03:95:AE:0D:AA:B6:65:F6:00:64:EC:38:4A:D6:39
[root@server manifests]#puppet cert -s 192-168-10-3.agent.puppet.com #puppet cert -s 指定客户端名称颁发证书

可能出现错误的地方解析:

err: Could not request certificate: The certificate retrieved from the master does not match the agent's private key.

Exiting; failed to retrieve certificate and waitforcert is disabled

处理办法:

hosts有问题,请检查主机名与ip地址的映射关系,必须准确才可以。

随后在server删除刚才颁发的证书,

On the master:
puppet cert clean 主机名.oss.letvcdn.com
On the agent:
rm -f /var/lib/puppet/ssl/*
puppet agent -t

然后重启server和agent的服务,重新申请证书并颁发

3.agent查看是否已经通过证书验证,如下,已经通过server的认证,可以进行通信了。

[root@agent tmp]# puppet agent --server server.puppet.com --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for 10-74-82-16.oss.letvcdn.com.puppet.com
Info: Applying configuration version '1481180055'
Notice: Finished catalog run in 0.06 seconds

-先执行个例子让server来下发任务给agent 

1. server端创建个默认节点的默认配置,puppet客户端会首先来执行/etc/puppet/manifests/site.pp文件的代码,“pp结尾代表就是puppet的后缀”

下面是创建一个文件,并在文件内输入内容“hello”   //server操作

[root@server manifests]# cd /etc/puppet/manifests/
[root@server manifests]# touch site.pp
[root@server manifests]# cat site.pp #default 代表的是全部客户端,如果给单个客户端下指令可以用客户端的主机名替代default
node default{ file {
"/tmp/lq.txt":
content => "hello";
} }
[root@server manifests]#

2.客户端来获取一下看看server有没有指令   //agent操作

[root@agent tmp]# puppet agent --server server.puppet.com --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for 10-74-82-16.oss.letvcdn.com.puppet.com
Info: Applying configuration version '1481180578'
Notice: /Stage[main]/Main/Node[default]/File[/tmp/lq.txt]/ensure: defined content as '{md5}5d41402abc4b2a76b9719d911017c592'
Notice: Finished catalog run in 0.03 seconds
[root@agent tmp]#

3.查看一下是否成功,ok已经执行   //agent操作

[root@agent tmp]# ll /tmp/
total 12
-rw-r--r-- 1 root root 5 Dec 8 15:02 lq.txt
-rw-r--r-- 1 root root 33 Dec 8 14:30 rsyslog_md5sum.tmp
-rw-r--r-- 1 root root 12 Dec 8 14:30 test.txt
[root@agent tmp]# cat lq.txt
hello
[root@agent tmp]#

配置实例:

node default{

file {
"/tmp/llq.txt":
content => "hello";
}

##########创建一个文件,并写入内容"hello"###########################

package {
["httpd","mysql","mysql-server","php"]:
ensure=>"installed";

}
###############用yum 安装 mysql,mysql-server,php软件 ########################
service {
["mysqld","httpd"]:
ensure=>"running";

}

############启动mysqld,httpd服务########################

cron {
"ntpdate":
command=> "/usr/sbin/ntpdate pool.ntp.org >>/tmp/ntp.log 2>&1",
user => root,
hour =>"*",
minute => '*/5',
}

##############写入计划任务用户root 每5分钟执行一次######################################
file {
"/root/init.sh":
source =>"puppet://server.puppet.com/files/init.sh",
group => root,
owner => root,
mode => "755";

}
#################推送本地Init.sh文件到客户端/root目录, #############
exec {
"/root/init.sh":
cwd => "/root",
user =>root,
path => ["/usr/bin","/usr/sbin", "/bin/sh","/bin"],

}

}

puppet学习笔记的更多相关文章

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

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

  2. puppet学习笔记(二)

    在puppet安装完成之后我们就可以动手开始第一个puppet实验了,此实验就以批量推送文件为例吧. 1.获取module路径 这里的module就是指一个模块,可以把puppet想象成一个个项目的部 ...

  3. puppet学习笔记(一)

    之前搞了一个月zabbix,基本上是能熟练使用了,不过在后来部署的时候发现这玩意在部署的时候机子少还行,机子多了手动安装手会残的.第一反应是用puppet,后来师父直接用puppet搞定了.索性自己也 ...

  4. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  5. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. 自动曝光修复算法 附完整C代码

    众所周知, 图像方面的3A算法有: AF自动对焦(Automatic Focus)自动对焦即调节摄像头焦距自动得到清晰的图像的过程 AE自动曝光(Automatic Exposure)自动曝光的是为了 ...

  2. Resharp常用设置收集整理

    F12跳转的问题:

  3. Linux-帮助的用法

    Linux帮助使用方法 内部命令:help COMMAND 或 man bash外部命令: (1) COMMAND --help   COMMAND -h --help和-h选项显示用法总结和参数列表 ...

  4. JQuery制作网页——第九章 表单验证

    1.  表单验证:减轻服务器的压力.保证输入的数据符合要求: 2.  常用的表单验证:日期格式.表单元素是否为空.用户名和密码.E-mail地址.身份证号码等: 3.  表单验证的思路: 1.     ...

  5. 线上服务内存OOM问题定位三板斧

    相信大家都有感触,线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的原因: 本身资源不够 申请的太多 资源耗尽 58到家架构部,运维部,58速运技术部联合进行了一次线上服务内存OOM问 ...

  6. PTA基础编程题目集7-2然后是几点

    有时候人们用四位数字表示一个时间,比如1106表示11点零6分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计 ...

  7. Java设计模式(17)——行为模式之观察者模式(Observer)

    一.概述 概念 UML简图 我们根据一个示例得类图来分析角色 角色 抽象主题:保存观察者聚集(集合),管理(增删)观察者 抽象观察者:定义具体观察者的抽象接口,在得到主题通知后更新自己 具体主题:将有 ...

  8. Java设计模式(10)——结构型模式之代理模式(Proxy)

    一.概述 概念 UML简图 实际使用的场景示例 如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待 ...

  9. 记录:C#监视某个文件的打开记录

    首先,先说下为什么要搞这个: 1.首先,我的电脑里有5万左右的目录或文件,用于存放歌曲,数量众多.2.我不一定会用哪种软件听歌(不过也就是几种而已).3.我想在听歌的时候,检测哪首首歌被打开,能获取到 ...

  10. [Python3.x]多次登陆锁定用户

    要求:输入用户名,密码认证成功显示欢迎信息输入错误三次后锁定用户Readme: 1.account.txt是存放用户id及密码的文件 2.account_loc.txt是存放被锁定的用户id的文档,默 ...