一、相关概念:

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

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

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

4、  可有多个master多个client,所有的client都定期(默认30分钟)使用facter工具把client的基本配置信息通过https的xmlrpc协议发送给puppetmaster,puppetmaster-side通过分析client-side主机名,找到该主机的配置代码,继而编译,将编译好的配置代码发回client-side,client执行代码完成配置,并把代码执行情况反馈给puppetmaster。

5、  puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.conf、server.sysconfig、client.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-side向client-side发送相关配置文件)、提取(client-side向master-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-side和agent-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、生产中使用案例:(下一篇详细介绍高级用法)

本篇是学习《老男孩网络视频》做的笔记。

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

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...

  3. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

  4. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  5. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  6. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

  7. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  8. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

随机推荐

  1. 记一次阿里云oss文件上传服务假死

    引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...

  2. C# mutex互斥锁构造

    概念 Mutext 出现的比monitor更早,而且传承自COM,当然,waitHandle也是它的父类,它继承了其父类的功能,有趣的是Mutex的脾气非常的古怪,它 允许同一个线程多次重复访问共享区 ...

  3. JabRef:将bibtex格式的参考文献导入EndNote的转换软件

    我在写小论文的时候,一直用的都是Overleaf在线latex编辑应用: https://www.overleaf.com/login 这个我感觉还是蛮好用的.只需要从期刊或者出版社的官网下载到lat ...

  4. Python:取整函数、四舍五入

    int(a) 绝对值向0方向取整,符号不变 math.ceil(a) 向正无穷取整 math.floor(a) 向负无穷取整 round(a,n=0) 四舍五入,第二个参数说明保留小数位数

  5. Java中常用的加密方式(附多个工具类)

    一.Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二.分类按加密算法是否需要key被分为两类 ...

  6. NTFS权限概述

    NTFS权限概述 NTFS是我常见的一种磁盘格式,在Windows系统中使用广泛,它打破了FAT的局限性.在我使用ntfs格式分区的时候经常会涉及到ntfs权限设置问题,来帮助我们对文件的处理.那么什 ...

  7. svn服务支持网页显示并增加在线预览功能,支持视频在线播放

    1.svn服务器支持网页显示 VisualSVN Server是一个非常不错的SVN Server程序,方便,直观,用户管理也异常方便.不过,它本身并没有提供在线修改密码的功能.由于在实际使用过程中, ...

  8. html 两个并列div样式

    1.html 代码 <html> <head> <link rel="stylesheet" href="cs2.css"> ...

  9. TCP | 你真的懂 HTTP 吗?

    前言 Hello 大家好,我是 Sam Zhang. HTTP 相信是每个 Web 开发者都耳熟能详的名词了.但是,新手开发者想要完全理解 HTTP 协议却需要时间.这期视频,我就来带大家入门 HTT ...

  10. mysqkl修改存放位置 列的数据

    1.表一旦创建后,列的数据是否可以修改?如果可以说明语法 update 表名称 set 列名='新内容' where 列名=某值  橙色代表条件列 2.修改存放数据的文件夹 先关闭mysql  把da ...