一、相关概念:

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. smbms项目核心功能实现

    SMBMS 数据库: 项目如何搭建? 考虑使用不使用Maven?依赖,Jar 1.项目搭建准备工作 搭建一个maven web项目 配置Tomcat 测试项目是否能够跑起来 导入项目中会遇到的jar包 ...

  2. 为什么用Python,高级的Python是一种高级编程语言

    Python特性 如果有人问我Python最大的特点是什么,我会毫不犹豫地告诉他:它简单易学,功能强大.作为一个纯自由软件,Python有许多优点: 很简单.基于"优雅".&quo ...

  3. Maven目录结构, war目录结构

    Maven目录结构 src/main/java 存放java servlet类文件 src/main/webapp 存放jsp文件 war目录结构 Maven web项目目录结构

  4. 快速构建 React 开发环境

    使用 create-react-app 快速构建 React 开发环境 create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. cre ...

  5. MySQL第一讲概论

    MySQL 后期内容 Python 今日内容概要 MySQL的概念 数据库软件的安装及使用 配置文件介绍 数据库常用命令(库操作.表操作.记录操作) 今日内容详细 什么是数据库 1.单机游戏 本地保存 ...

  6. 如何使用 PuTTY 远程连接矩池云主机

    PuTTY 是一款开源的连接软件,用来远程连接服务器,支持 SSH.Telnet.Serial 等协议. 矩池云的主机支持 SSH 登录,以下为使用 PuTTY 连接矩池云 GPU 的使用教程. 如您 ...

  7. 二级py--day4 数据结构与算法篇

    二级py--day4 数据结构与算法篇 1.算法的基本特征:可行性.确定性.有穷性.拥有足够的情报 2.算法的设计要求包括效率与低存储量,既要考虑算法的时间复杂度和空间复杂度 3.算法的优劣:与算法描 ...

  8. L2Dwidget二次元前端添加人物插件

    如果想要在博客园上添加这个插件,只需要在设置的"页首html代码"中添加下面的js就行 <!-- 右下角live2d效果 --> <script src=&quo ...

  9. LGP5071题解

    我给这道题提供了314次提交qwq 题目大意 给定一个长为 \(n\) 的序列,每次询问给定一个 \(L\) 和 \(R\),求 \([L,R]\) 中所有数乘起来的质因数个数,答案对 \(19260 ...

  10. PO模式在selenium自动化测试框架有什么好处

    PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便. PO模式的全称叫page object model( ...